diff --git a/.gitattributes b/.gitattributes
index 7f1424434..865da2ca2 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -12,6 +12,11 @@
*.jpg binary
*.gif binary
*.ico binary
+*.jpeg binary
+*.mp3 binary
+*.zip binary
+*.bin binary
+
# Preserve original line endings for specific document files
*.doc text eol=crlf
diff --git a/.github/workflows/fulltest.yaml b/.github/workflows/fulltest.yaml
index f5c6049e1..70c800481 100644
--- a/.github/workflows/fulltest.yaml
+++ b/.github/workflows/fulltest.yaml
@@ -54,7 +54,6 @@ jobs:
export ALLOW_OPENAI_API_CALL=0
echo "${{ secrets.METAGPT_KEY_YAML }}" | base64 -d > config/key.yaml
mkdir -p ~/.metagpt && echo "${{ secrets.METAGPT_CONFIG2_YAML }}" | base64 -d > ~/.metagpt/config2.yaml
- echo "${{ secrets.SPARK_YAML }}" | base64 -d > ~/.metagpt/spark.yaml
pytest tests/ --doctest-modules --cov=./metagpt/ --cov-report=xml:cov.xml --cov-report=html:htmlcov --durations=20 | tee unittest.txt
- name: Show coverage report
run: |
diff --git a/.github/workflows/unittest.yaml b/.github/workflows/unittest.yaml
index 2e7e3ce2b..afa9faba7 100644
--- a/.github/workflows/unittest.yaml
+++ b/.github/workflows/unittest.yaml
@@ -31,7 +31,7 @@ jobs:
- name: Test with pytest
run: |
export ALLOW_OPENAI_API_CALL=0
- mkdir -p ~/.metagpt && cp tests/config2.yaml ~/.metagpt/config2.yaml && cp tests/spark.yaml ~/.metagpt/spark.yaml
+ mkdir -p ~/.metagpt && cp tests/config2.yaml ~/.metagpt/config2.yaml
pytest tests/ --doctest-modules --cov=./metagpt/ --cov-report=xml:cov.xml --cov-report=html:htmlcov --durations=20 | tee unittest.txt
- name: Show coverage report
run: |
diff --git a/.gitignore b/.gitignore
index 6bc67fa61..aa5edd74a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
### Python template
# Byte-compiled / optimized / DLL files
-__pycache__/
+__pycache__
*.py[cod]
*$py.class
@@ -27,6 +27,8 @@ share/python-wheels/
.installed.cfg
*.egg
MANIFEST
+metagpt/tools/schemas/
+examples/data/search_kb/*.json
# PyInstaller
# Usually these files are written by a python scripts from a template
@@ -151,9 +153,14 @@ allure-results
.vscode
key.yaml
-data
+/data/
data.ms
examples/nb/
+examples/default__vector_store.json
+examples/docstore.json
+examples/graph_store.json
+examples/image__vector_store.json
+examples/index_store.json
.chroma
*~$*
workspace/*
@@ -168,6 +175,7 @@ output
tmp.png
.dependencies.json
tests/metagpt/utils/file_repo_git
+tests/data/rsp_cache_new.json
*.tmp
*.png
htmlcov
@@ -178,4 +186,5 @@ cov.xml
*.faiss
*-structure.csv
*-structure.json
-metagpt/tools/schemas
\ No newline at end of file
+*.dot
+.python-version
diff --git a/README.md b/README.md
index b6f31901b..edb2066a3 100644
--- a/README.md
+++ b/README.md
@@ -26,6 +26,10 @@ # MetaGPT: The Multi-Agent Framework
## News
+🚀 Mar. 14, 2024: Our **Data Interpreter** paper is on [arxiv](https://arxiv.org/abs/2402.18679). Check the [example](https://docs.deepwisdom.ai/main/en/DataInterpreter/) and [code](https://github.com/geekan/MetaGPT/tree/main/examples/di)!
+
+🚀 Feb. 08, 2024: [v0.7.0](https://github.com/geekan/MetaGPT/releases/tag/v0.7.0) released, supporting assigning different LLMs to different Roles. We also introduced [Data Interpreter](https://github.com/geekan/MetaGPT/blob/main/examples/di/README.md), a powerful agent capable of solving a wide range of real-world problems.
+
🚀 Jan. 16, 2024: Our paper [MetaGPT: Meta Programming for A Multi-Agent Collaborative Framework
](https://arxiv.org/abs/2308.00352) accepted for oral presentation **(top 1.2%)** at ICLR 2024, **ranking #1** in the LLM-based Agent category.
@@ -51,20 +55,49 @@ ## Software Company as Multi-Agent System
Software Company Multi-Agent Schematic (Gradually Implementing)
-## Install
+## Get Started
-### Pip installation
+### Installation
> Ensure that Python 3.9+ is installed on your system. You can check this by using: `python --version`.
> You can use conda like this: `conda create -n metagpt python=3.9 && conda activate metagpt`
```bash
-pip install metagpt
-metagpt --init-config # create ~/.metagpt/config2.yaml, modify it to your own config
+pip install --upgrade metagpt
+# or `pip install --upgrade git+https://github.com/geekan/MetaGPT.git`
+# or `git clone https://github.com/geekan/MetaGPT && cd MetaGPT && pip install --upgrade -e .`
+```
+
+For detailed installation guidance, please refer to [cli_install](https://docs.deepwisdom.ai/main/en/guide/get_started/installation.html#install-stable-version)
+ or [docker_install](https://docs.deepwisdom.ai/main/en/guide/get_started/installation.html#install-with-docker)
+
+### Configuration
+
+You can init the config of MetaGPT by running the following command, or manually create `~/.metagpt/config2.yaml` file:
+```bash
+# Check https://docs.deepwisdom.ai/main/en/guide/get_started/configuration.html for more details
+metagpt --init-config # it will create ~/.metagpt/config2.yaml, just modify it to your needs
+```
+
+You can configure `~/.metagpt/config2.yaml` according to the [example](https://github.com/geekan/MetaGPT/blob/main/config/config2.example.yaml) and [doc](https://docs.deepwisdom.ai/main/en/guide/get_started/configuration.html):
+
+```yaml
+llm:
+ api_type: "openai" # or azure / ollama / open_llm etc. Check LLMType for more options
+ model: "gpt-4-turbo-preview" # or gpt-3.5-turbo-1106 / gpt-4-1106-preview
+ base_url: "https://api.openai.com/v1" # or forward url / other llm url
+ api_key: "YOUR_API_KEY"
+```
+
+### Usage
+
+After installation, you can use MetaGPT at CLI
+
+```bash
metagpt "Create a 2048 game" # this will create a repo in ./workspace
```
-or you can use it as library
+or use it as library
```python
from metagpt.software_company import generate_repo, ProjectRepo
@@ -72,28 +105,19 @@ ### Pip installation
print(repo) # it will print the repo structure with files
```
-detail installation please refer to [cli_install](https://docs.deepwisdom.ai/main/en/guide/get_started/installation.html#install-stable-version)
+You can also use its [Data Interpreter](https://github.com/geekan/MetaGPT/tree/main/examples/di)
-### Docker installation
-> Note: In the Windows, you need to replace "/opt/metagpt" with a directory that Docker has permission to create, such as "D:\Users\x\metagpt"
+```python
+import asyncio
+from metagpt.roles.di.data_interpreter import DataInterpreter
-```bash
-# Step 1: Download metagpt official image and prepare config2.yaml
-docker pull metagpt/metagpt:latest
-mkdir -p /opt/metagpt/{config,workspace}
-docker run --rm metagpt/metagpt:latest cat /app/metagpt/config/config2.yaml > /opt/metagpt/config/config2.yaml
-vim /opt/metagpt/config/config2.yaml # Change the config
+async def main():
+ di = DataInterpreter()
+ await di.run("Run data analysis on sklearn Iris dataset, include a plot")
-# Step 2: Run metagpt demo with container
-docker run --rm \
- --privileged \
- -v /opt/metagpt/config/config2.yaml:/app/metagpt/config/config2.yaml \
- -v /opt/metagpt/workspace:/app/metagpt/workspace \
- metagpt/metagpt:latest \
- metagpt "Create a 2048 game"
+asyncio.run(main()) # or await main() in a jupyter notebook setting
```
-detail installation please refer to [docker_install](https://docs.deepwisdom.ai/main/en/guide/get_started/installation.html#install-with-docker)
### QuickStart & Demo Video
- Try it on [MetaGPT Huggingface Space](https://huggingface.co/spaces/deepwisdom/MetaGPT)
@@ -113,6 +137,7 @@ ## Tutorial
- 🧑💻 Contribution
- [Develop Roadmap](docs/ROADMAP.md)
- 🔖 Use Cases
+ - [Data Interpreter](https://docs.deepwisdom.ai/main/en/guide/use_cases/agent/interpreter/intro.html)
- [Debate](https://docs.deepwisdom.ai/main/en/guide/use_cases/multi_agent/debate.html)
- [Researcher](https://docs.deepwisdom.ai/main/en/guide/use_cases/agent/researcher.html)
- [Recepit Assistant](https://docs.deepwisdom.ai/main/en/guide/use_cases/agent/receipt_assistant.html)
@@ -136,7 +161,9 @@ ### Contact Information
## Citation
-For now, cite the [arXiv paper](https://arxiv.org/abs/2308.00352):
+To stay updated with the latest research and development, follow [@MetaGPT_](https://twitter.com/MetaGPT_) on Twitter.
+
+To cite [MetaGPT](https://arxiv.org/abs/2308.00352) or [Data Interpreter](https://arxiv.org/abs/2402.18679) in publications, please use the following BibTeX entries.
```bibtex
@misc{hong2023metagpt,
@@ -147,4 +174,14 @@ ## Citation
archivePrefix={arXiv},
primaryClass={cs.AI}
}
+@misc{hong2024data,
+ title={Data Interpreter: An LLM Agent For Data Science},
+ author={Sirui Hong and Yizhang Lin and Bang Liu and Bangbang Liu and Binhao Wu and Danyang Li and Jiaqi Chen and Jiayi Zhang and Jinlin Wang and Li Zhang and Lingyao Zhang and Min Yang and Mingchen Zhuge and Taicheng Guo and Tuo Zhou and Wei Tao and Wenyi Wang and Xiangru Tang and Xiangtao Lu and Xiawu Zheng and Xinbing Liang and Yaying Fei and Yuheng Cheng and Zongze Xu and Chenglin Wu},
+ year={2024},
+ eprint={2402.18679},
+ archivePrefix={arXiv},
+ primaryClass={cs.AI}
+}
+
```
+
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 000000000..924ce5015
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,14 @@
+# Security Policy
+
+## Supported Versions
+
+| Version | Supported |
+|---------|--------------------|
+ | 0.7.x | :x: |
+ | 0.6.x | :x: |
+| < 0.6.x | :x: |
+
+
+## Reporting a Vulnerability
+
+If you have any vulnerability reports, please contact alexanderwu@deepwisdom.ai .
\ No newline at end of file
diff --git a/config/config2.yaml.example b/config/config2.example.yaml
similarity index 53%
rename from config/config2.yaml.example
rename to config/config2.example.yaml
index 8f4a33fc1..c5454ec32 100644
--- a/config/config2.yaml.example
+++ b/config/config2.example.yaml
@@ -1,10 +1,21 @@
llm:
- api_type: "openai"
+ api_type: "openai" # or azure / ollama / open_llm etc. Check LLMType for more options
base_url: "YOUR_BASE_URL"
api_key: "YOUR_API_KEY"
model: "gpt-4-turbo-preview" # or gpt-3.5-turbo-1106 / gpt-4-1106-preview
+ proxy: "YOUR_PROXY" # for LLM API requests
+ # timeout: 600 # Optional. If set to 0, default value is 300.
+ pricing_plan: "" # Optional. If invalid, it will be automatically filled in with the value of the `model`.
+ # Azure-exclusive pricing plan mappings:
+ # - gpt-3.5-turbo 4k: "gpt-3.5-turbo-1106"
+ # - gpt-4-turbo: "gpt-4-turbo-preview"
+ # - gpt-4-turbo-vision: "gpt-4-vision-preview"
+ # - gpt-4 8k: "gpt-4"
+ # See for more: https://azure.microsoft.com/en-us/pricing/details/cognitive-services/openai-service/
-proxy: "YOUR_PROXY"
+repair_llm_output: true # when the output is not a valid json, try to repair it
+
+proxy: "YOUR_PROXY" # for tools like requests, playwright, selenium, etc.
search:
api_type: "google"
@@ -41,5 +52,3 @@ iflytek_api_key: "YOUR_API_KEY"
iflytek_api_secret: "YOUR_API_SECRET"
metagpt_tti_url: "YOUR_MODEL_URL"
-
-repair_llm_output: true
diff --git a/config/config2.yaml b/config/config2.yaml
index 2c4ca636f..8e5825b57 100644
--- a/config/config2.yaml
+++ b/config/config2.yaml
@@ -1,3 +1,7 @@
+# Full Example: https://github.com/geekan/MetaGPT/blob/main/config/config2.example.yaml
+# Reflected Code: https://github.com/geekan/MetaGPT/blob/main/metagpt/config2.py
llm:
- api_key: "YOUR_API_KEY"
- model: "gpt-4-turbo-preview" # or gpt-3.5-turbo-1106 / gpt-4-1106-preview
\ No newline at end of file
+ api_type: "openai" # or azure / ollama / open_llm etc. Check LLMType for more options
+ model: "gpt-4-turbo-preview" # or gpt-3.5-turbo-1106 / gpt-4-1106-preview
+ base_url: "https://api.openai.com/v1" # or forward url / other llm url
+ api_key: "YOUR_API_KEY"
\ No newline at end of file
diff --git a/docs/README_CN.md b/docs/README_CN.md
index 7a0db4974..8aea5e4cb 100644
--- a/docs/README_CN.md
+++ b/docs/README_CN.md
@@ -116,7 +116,7 @@ ### 联系信息
## 引用
-引用 [arXiv paper](https://arxiv.org/abs/2308.00352):
+如果您在研究论文中使用 MetaGPT 或 Data Interpreter,请引用我们的工作:
```bibtex
@misc{hong2023metagpt,
@@ -127,4 +127,12 @@ ## 引用
archivePrefix={arXiv},
primaryClass={cs.AI}
}
+@misc{hong2024data,
+ title={Data Interpreter: An LLM Agent For Data Science},
+ author={Sirui Hong and Yizhang Lin and Bang Liu and Bangbang Liu and Binhao Wu and Danyang Li and Jiaqi Chen and Jiayi Zhang and Jinlin Wang and Li Zhang and Lingyao Zhang and Min Yang and Mingchen Zhuge and Taicheng Guo and Tuo Zhou and Wei Tao and Wenyi Wang and Xiangru Tang and Xiangtao Lu and Xiawu Zheng and Xinbing Liang and Yaying Fei and Yuheng Cheng and Zongze Xu and Chenglin Wu},
+ year={2024},
+ eprint={2402.18679},
+ archivePrefix={arXiv},
+ primaryClass={cs.AI}
+}
```
diff --git a/docs/README_JA.md b/docs/README_JA.md
index c6b99461c..91155532b 100644
--- a/docs/README_JA.md
+++ b/docs/README_JA.md
@@ -295,7 +295,7 @@ ## クイックスタート
## 引用
-現時点では、[arXiv 論文](https://arxiv.org/abs/2308.00352)を引用してください:
+研究論文でMetaGPTやData Interpreterを使用する場合は、以下のように当社の作業を引用してください:
```bibtex
@misc{hong2023metagpt,
@@ -306,6 +306,14 @@ ## 引用
archivePrefix={arXiv},
primaryClass={cs.AI}
}
+@misc{hong2024data,
+ title={Data Interpreter: An LLM Agent For Data Science},
+ author={Sirui Hong and Yizhang Lin and Bang Liu and Bangbang Liu and Binhao Wu and Danyang Li and Jiaqi Chen and Jiayi Zhang and Jinlin Wang and Li Zhang and Lingyao Zhang and Min Yang and Mingchen Zhuge and Taicheng Guo and Tuo Zhou and Wei Tao and Wenyi Wang and Xiangru Tang and Xiangtao Lu and Xiawu Zheng and Xinbing Liang and Yaying Fei and Yuheng Cheng and Zongze Xu and Chenglin Wu},
+ year={2024},
+ eprint={2402.18679},
+ archivePrefix={arXiv},
+ primaryClass={cs.AI}
+}
```
## お問い合わせ先
diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md
index 4bb530bf2..ec17cc0ce 100644
--- a/docs/ROADMAP.md
+++ b/docs/ROADMAP.md
@@ -35,14 +35,14 @@ ### Tasks
3. Strategies
1. Support ReAct strategy (experimentation done with game agents)
2. Support CoT strategy (experimentation done with game agents)
- 3. Support ToT strategy
+ 3. ~~Support ToT strategy~~ (v0.6.0)
4. Support Reflection strategy (experimentation done with game agents)
- 5. Support planning
+ 5. ~~Support planning~~ (v0.7.0)
4. Actions
1. ~~Implementation: Search~~ (v0.2.1)
2. Implementation: Knowledge search, supporting 10+ data formats
- 3. Implementation: Data EDA (expected v0.7.0)
- 4. Implementation: Review & Revise (expected v0.7.0)
+ 3. ~~Implementation: Data EDA~~ (v0.7.0)
+ 4. ~~Implementation: Review & Revise~~ (v0.7.0)
5. ~~Implementation: Add Document~~ (v0.5.0)
6. ~~Implementation: Delete Document~~ (v0.5.0)
7. Implementation: Self-training
@@ -50,7 +50,7 @@ ### Tasks
9. Implementation: Generate reliable unit tests based on YAPI
10. Implementation: Self-evaluation
11. Implementation: AI Invocation
- 12. Implementation: Learning and using third-party standard libraries
+ 12. ~~Implementation: Learning and using third-party standard libraries~~ (v0.7.0)
13. Implementation: Data collection
14. Implementation: AI training
15. ~~Implementation: Run code~~ (v0.2.1)
@@ -63,14 +63,14 @@ ### Tasks
7. Roles
1. Perfect the action pool/skill pool for each role
2. E-commerce seller
- 3. Data analyst (expected v0.7.0)
+ 3. ~~Data analyst~~ (v0.7.0)
4. News observer
5. ~~Institutional researcher~~ (v0.2.1)
8. Evaluation
1. Support an evaluation on a game dataset (experimentation done with game agents)
2. Reproduce papers, implement full skill acquisition for a single game role, achieving SOTA results (experimentation done with game agents)
- 3. Support an evaluation on a math dataset (expected v0.7.0)
- 4. Reproduce papers, achieving SOTA results for current mathematical problem solving process
+ 3. Support an evaluation on a math dataset (expected v0.8.0)
+ 4. Reproduce papers, achieving SOTA results for current mathematical problem solving process (expected v0.8.0)
9. LLM
1. Support Claude underlying API
2. ~~Support Azure asynchronous API~~
diff --git a/docs/scripts/coverage.sh b/docs/scripts/coverage.sh
index a56571399..22e479200 100755
--- a/docs/scripts/coverage.sh
+++ b/docs/scripts/coverage.sh
@@ -1 +1 @@
-coverage run --source ./metagpt -m pytest --durations=0 --timeout=100 && coverage report -m && coverage html && open htmlcov/index.html
+coverage run --source ./metagpt -m pytest -n 8 --durations=0 --timeout=100 && coverage report -m && coverage html && open htmlcov/index.html
diff --git a/examples/crawl_webpage.py b/examples/crawl_webpage.py
deleted file mode 100644
index 2db9e407b..000000000
--- a/examples/crawl_webpage.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- encoding: utf-8 -*-
-"""
-@Date : 2024/01/24 15:11:27
-@Author : orange-crow
-@File : crawl_webpage.py
-"""
-
-from metagpt.roles.ci.code_interpreter import CodeInterpreter
-
-
-async def main():
- prompt = """Get data from `paperlist` table in https://papercopilot.com/statistics/iclr-statistics/iclr-2024-statistics/,
- and save it to a csv file. paper title must include `multiagent` or `large language model`. *notice: print key variables*"""
- ci = CodeInterpreter(goal=prompt, use_tools=True)
-
- await ci.run(prompt)
-
-
-if __name__ == "__main__":
- import asyncio
-
- asyncio.run(main())
diff --git a/examples/data/rag/travel.txt b/examples/data/rag/travel.txt
new file mode 100644
index 000000000..f72ad5c59
--- /dev/null
+++ b/examples/data/rag/travel.txt
@@ -0,0 +1 @@
+Bob likes traveling.
\ No newline at end of file
diff --git a/examples/data/rag/writer.txt b/examples/data/rag/writer.txt
new file mode 100644
index 000000000..1dc055901
--- /dev/null
+++ b/examples/data/rag/writer.txt
@@ -0,0 +1,109 @@
+Productivity
+I think I am at least somewhat more productive than average, and people sometimes ask me for productivity tips. So I decided to just write them all down in one place.
+
+Compound growth gets discussed as a financial concept, but it works in careers as well, and it is magic. A small productivity gain, compounded over 50 years, is worth a lot. So it’s worth figuring out how to optimize productivity. If you get 10% more done and 1% better every day compared to someone else, the compounded difference is massive.
+
+What you work on
+
+Famous writers have some essential qualities, creativity and discipline
+
+It doesn’t matter how fast you move if it’s in a worthless direction. Picking the right thing to work on is the most important element of productivity and usually almost ignored. So think about it more! Independent thought is hard but it’s something you can get better at with practice.
+
+The most impressive people I know have strong beliefs about the world, which is rare in the general population. If you find yourself always agreeing with whomever you last spoke with, that’s bad. You will of course be wrong sometimes, but develop the confidence to stick with your convictions. It will let you be courageous when you’re right about something important that most people don’t see.
+
+I make sure to leave enough time in my schedule to think about what to work on. The best ways for me to do this are reading books, hanging out with interesting people, and spending time in nature.
+
+I’ve learned that I can’t be very productive working on things I don’t care about or don’t like. So I just try not to put myself in a position where I have to do them (by delegating, avoiding, or something else). Stuff that you don’t like is a painful drag on morale and momentum.
+
+By the way, here is an important lesson about delegation: remember that everyone else is also most productive when they’re doing what they like, and do what you’d want other people to do for you—try to figure out who likes (and is good at) doing what, and delegate that way.
+
+If you find yourself not liking what you’re doing for a long period of time, seriously consider a major job change. Short-term burnout happens, but if it isn’t resolved with some time off, maybe it’s time to do something you’re more interested in.
+
+I’ve been very fortunate to find work I like so much I’d do it for free, which makes it easy to be really productive.
+
+It’s important to learn that you can learn anything you want, and that you can get better quickly. This feels like an unlikely miracle the first few times it happens, but eventually you learn to trust that you can do it.
+
+Doing great work usually requires colleagues of some sort. Try to be around smart, productive, happy, and positive people that don’t belittle your ambitions. I love being around people who push me and inspire me to be better. To the degree you able to, avoid the opposite kind of people—the cost of letting them take up your mental cycles is horrific.
+
+You have to both pick the right problem and do the work. There aren’t many shortcuts. If you’re going to do something really important, you are very likely going to work both smart and hard. The biggest prizes are heavily competed for. This isn’t true in every field (there are great mathematicians who never spend that many hours a week working) but it is in most.
+
+Prioritization
+
+Writers have to work hard to be successful
+
+My system has three key pillars: “Make sure to get the important shit done”, “Don’t waste time on stupid shit”, and “make a lot of lists”.
+
+I highly recommend using lists. I make lists of what I want to accomplish each year, each month, and each day. Lists are very focusing, and they help me with multitasking because I don’t have to keep as much in my head. If I’m not in the mood for some particular task, I can always find something else I’m excited to do.
+
+I prefer lists written down on paper. It’s easy to add and remove tasks. I can access them during meetings without feeling rude. I re-transcribe lists frequently, which forces me to think about everything on the list and gives me an opportunity to add and remove items.
+
+I don’t bother with categorization or trying to size tasks or anything like that (the most I do is put a star next to really important items).
+
+I try to prioritize in a way that generates momentum. The more I get done, the better I feel, and then the more I get done. I like to start and end each day with something I can really make progress on.
+
+I am relentless about getting my most important projects done—I’ve found that if I really want something to happen and I push hard enough, it usually happens.
+
+I try to be ruthless about saying no to stuff, and doing non-critical things in the quickest way possible. I probably take this too far—for example, I am almost sure I am terse to the point of rudeness when replying to emails.
+
+Passion and adaptability are key qualities to writers
+
+I generally try to avoid meetings and conferences as I find the time cost to be huge—I get the most value out of time in my office. However, it is critical that you keep enough space in your schedule to allow for chance encounters and exposure to new people and ideas. Having an open network is valuable; though probably 90% of the random meetings I take are a waste of time, the other 10% really make up for it.
+
+I find most meetings are best scheduled for 15-20 minutes, or 2 hours. The default of 1 hour is usually wrong, and leads to a lot of wasted time.
+
+I have different times of day I try to use for different kinds of work. The first few hours of the morning are definitely my most productive time of the day, so I don’t let anyone schedule anything then. I try to do meetings in the afternoon. I take a break, or switch tasks, whenever I feel my attention starting to fade.
+
+I don’t think most people value their time enough—I am surprised by the number of people I know who make $100 an hour and yet will spend a couple of hours doing something they don’t want to do to save $20.
+
+Also, don’t fall into the trap of productivity porn—chasing productivity for its own sake isn’t helpful. Many people spend too much time thinking about how to perfectly optimize their system, and not nearly enough asking if they’re working on the right problems. It doesn’t matter what system you use or if you squeeze out every second if you’re working on the wrong thing.
+
+The right goal is to allocate your year optimally, not your day.
+
+Physical factors
+
+Very likely what is optimal for me won’t be optimal for you. You’ll have to experiment to find out what works best for your body. It’s definitely worth doing—it helps in all aspects of life, and you’ll feel a lot better and happier overall.
+
+It probably took a little bit of my time every week for a few years to arrive at what works best for me, but my sense is if I do a good job at all the below I’m at least 1.5x more productive than if not.
+
+Sleep seems to be the most important physical factor in productivity for me. Some sort of sleep tracker to figure out how to sleep best is helpful. I’ve found the only thing I’m consistent with are in the set-it-and-forget-it category, and I really like the Emfit QS+Active.
+
+I like a cold, dark, quiet room, and a great mattress (I resisted spending a bunch of money on a great mattress for years, which was stupid—it makes a huge difference to my sleep quality. I love this one). Not eating a lot in the few hours before sleep helps. Not drinking alcohol helps a lot, though I’m not willing to do that all the time.
+
+I use a Chili Pad to be cold while I sleep if I can’t get the room cold enough, which is great but loud (I set it up to have the cooler unit outside my room).
+
+When traveling, I use an eye mask and ear plugs.
+
+Writers usually have empathy to write good books.
+
+This is likely to be controversial, but I take a low dose of sleeping pills (like a third of a normal dose) or a very low dose of cannabis whenever I can’t sleep. I am a bad sleeper in general, and a particularly bad sleeper when I travel. It likely has tradeoffs, but so does not sleeping well. If you can already sleep well, I wouldn’t recommend this.
+
+I use a full spectrum LED light most mornings for about 10-15 minutes while I catch up on email. It’s great—if you try nothing else in here, this is the thing I’d try. It’s a ridiculous gain for me. I like this one, and it’s easy to travel with.
+
+Exercise is probably the second most important physical factor. I tried a number of different exercise programs for a few months each and the one that seemed best was lifting heavy weights 3x a week for an hour, and high intensity interval training occasionally. In addition to productivity gains, this is also the exercise program that makes me feel the best overall.
+
+The third area is nutrition. I very rarely eat breakfast, so I get about 15 hours of fasting most days (except an espresso when I wake up). I know this is contrary to most advice, and I suspect it’s not optimal for most people, but it definitely works well for me.
+
+Eating lots of sugar is the thing that makes me feel the worst and that I try hardest to avoid. I also try to avoid foods that aggravate my digestion or spike up inflammation (for example, very spicy foods). I don’t have much willpower when it comes to sweet things, so I mostly just try to keep junk food out of the house.
+
+I have one big shot of espresso immediately when I wake up and one after lunch. I assume this is about 200mg total of caffeine per day. I tried a few other configurations; this was the one that worked by far the best. I otherwise aggressively avoid stimulants, but I will have more coffee if I’m super tired and really need to get something done.
+
+If a writer want to be super, then should include innovative thinking.
+
+I’m vegetarian and have been since I was a kid, and I supplement methyl B-12, Omega-3, Iron, and Vitamin D-3. I got to this list with a year or so of quarterly blood tests; it’s worked for me ever since (I re-test maybe every year and a half or so). There are many doctors who will happily work with you on a super comprehensive blood test (and services like WellnessFX). I also go out of my way to drink a lot of protein shakes, which I hate and I wouldn’t do if I weren’t vegetarian.
+
+Other stuff
+
+Here’s what I like in a workspace: natural light, quiet, knowing that I won’t be interrupted if I don’t want to be, long blocks of time, and being comfortable and relaxed (I’ve got a beautiful desk with a couple of 4k monitors on it in my office, but I spend almost all my time on my couch with my laptop).
+
+I wrote custom software for the annoying things I have to do frequently, which is great. I also made an effort to learn to type really fast and the keyboard shortcuts that help with my workflow.
+
+Like most people, I sometimes go through periods of a week or two where I just have no motivation to do anything (I suspect it may have something to do with nutrition). This sucks and always seems to happen at inconvenient times. I have not figured out what to do about it besides wait for the fog to lift, and to trust that eventually it always does. And I generally try to avoid people and situations that put me in bad moods, which is good advice whether you care about productivity or not.
+
+In general, I think it’s good to overcommit a little bit. I find that I generally get done what I take on, and if I have a little bit too much to do it makes me more efficient at everything, which is a way to train to avoid distractions (a great habit to build!). However, overcommitting a lot is disastrous.
+
+Don’t neglect your family and friends for the sake of productivity—that’s a very stupid tradeoff (and very likely a net productivity loss, because you’ll be less happy). Don’t neglect doing things you love or that clear your head either.
+
+Finally, to repeat one more time: productivity in the wrong direction isn’t worth anything at all. Think more about what to work on.
+
+Open-Mindedness and curiosity are essential to writers
+
diff --git a/examples/example.json b/examples/data/search_kb/example.json
similarity index 100%
rename from examples/example.json
rename to examples/data/search_kb/example.json
diff --git a/examples/example.xlsx b/examples/data/search_kb/example.xlsx
similarity index 100%
rename from examples/example.xlsx
rename to examples/data/search_kb/example.xlsx
diff --git a/examples/debate.py b/examples/debate.py
index 72ab8796d..56df16b4f 100644
--- a/examples/debate.py
+++ b/examples/debate.py
@@ -5,6 +5,7 @@ Author: garylin2099
@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `send_to`
value of the `Message` object; modify the argument type of `get_by_actions`.
"""
+
import asyncio
import platform
from typing import Any
@@ -105,4 +106,4 @@ def main(idea: str, investment: float = 3.0, n_round: int = 10):
if __name__ == "__main__":
- fire.Fire(main)
+ fire.Fire(main) # run as python debate.py --idea="TOPIC" --investment=3.0 --n_round=5
diff --git a/examples/debate_simple.py b/examples/debate_simple.py
index 869e02a0e..953f664f3 100644
--- a/examples/debate_simple.py
+++ b/examples/debate_simple.py
@@ -8,14 +8,17 @@
import asyncio
from metagpt.actions import Action
+from metagpt.config2 import Config
from metagpt.environment import Environment
from metagpt.roles import Role
from metagpt.team import Team
-action1 = Action(name="AlexSay", instruction="Express your opinion with emotion and don't repeat it")
-action1.llm.model = "gpt-4-1106-preview"
-action2 = Action(name="BobSay", instruction="Express your opinion with emotion and don't repeat it")
-action2.llm.model = "gpt-3.5-turbo-1106"
+gpt35 = Config.default()
+gpt35.llm.model = "gpt-3.5-turbo-1106"
+gpt4 = Config.default()
+gpt4.llm.model = "gpt-4-1106-preview"
+action1 = Action(config=gpt4, name="AlexSay", instruction="Express your opinion with emotion and don't repeat it")
+action2 = Action(config=gpt35, name="BobSay", instruction="Express your opinion with emotion and don't repeat it")
alex = Role(name="Alex", profile="Democratic candidate", goal="Win the election", actions=[action1], watch=[action2])
bob = Role(name="Bob", profile="Republican candidate", goal="Win the election", actions=[action2], watch=[action1])
env = Environment(desc="US election live broadcast")
diff --git a/examples/di/README.md b/examples/di/README.md
new file mode 100644
index 000000000..f63795f13
--- /dev/null
+++ b/examples/di/README.md
@@ -0,0 +1,20 @@
+# Data Interpreter (DI)
+
+## What is Data Interpreter
+Data Interpreter is an agent who solves data-related problems through codes. It understands user requirements, makes plans, writes codes for execution, and uses tools if necessary. These capabilities enable it to tackle a wide range of scenarios, please check out the examples below. For overall design and technical details, please see our [paper](https://arxiv.org/abs/2402.18679).
+
+## Example List
+- Data visualization
+- Machine learning modeling
+- Image background removal
+- Solve math problems
+- Receipt OCR
+- Tool usage: web page imitation
+- Tool usage: web crawling
+- Tool usage: text2image
+- Tool usage: email summarization and response\
+- More on the way!
+
+Please see the [docs](https://docs.deepwisdom.ai/main/en/guide/use_cases/agent/interpreter/intro.html) for more explanation.
+
+We are continuously releasing codes, stay tuned!
diff --git a/examples/di/arxiv_reader.py b/examples/di/arxiv_reader.py
new file mode 100644
index 000000000..6e1939b81
--- /dev/null
+++ b/examples/di/arxiv_reader.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+
+async def main():
+ template = "https://arxiv.org/list/{tag}/pastweek?skip=0&show=300"
+ tags = ["cs.ai", "cs.cl", "cs.lg", "cs.se"]
+ urls = [template.format(tag=tag) for tag in tags]
+ prompt = f"""This is a collection of arxiv urls: '{urls}' .
+Record each article, remove duplicates by title (they may have multiple tags), filter out papers related to
+large language model / agent / llm, print top 100 and visualize the word count of the titles"""
+ di = DataInterpreter(react_mode="react", tools=["scrape_web_playwright"])
+
+ await di.run(prompt)
+
+
+if __name__ == "__main__":
+ import asyncio
+
+ asyncio.run(main())
diff --git a/examples/di/crawl_webpage.py b/examples/di/crawl_webpage.py
new file mode 100644
index 000000000..b8226f4f4
--- /dev/null
+++ b/examples/di/crawl_webpage.py
@@ -0,0 +1,40 @@
+# -*- encoding: utf-8 -*-
+"""
+@Date : 2024/01/24 15:11:27
+@Author : orange-crow
+@File : crawl_webpage.py
+"""
+
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+PAPER_LIST_REQ = """"
+Get data from `paperlist` table in https://papercopilot.com/statistics/iclr-statistics/iclr-2024-statistics/,
+and save it to a csv file. paper title must include `multiagent` or `large language model`. *notice: print key variables*
+"""
+
+ECOMMERCE_REQ = """
+Get products data from website https://scrapeme.live/shop/ and save it as a csv file.
+**Notice: Firstly parse the web page encoding and the text HTML structure;
+The first page product name, price, product URL, and image URL must be saved in the csv;**
+"""
+
+NEWS_36KR_REQ = """从36kr创投平台https://pitchhub.36kr.com/financing-flash 所有初创企业融资的信息, **注意: 这是一个中文网站**;
+下面是一个大致流程, 你会根据每一步的运行结果对当前计划中的任务做出适当调整:
+1. 爬取并本地保存html结构;
+2. 直接打印第7个*`快讯`*关键词后2000个字符的html内容, 作为*快讯的html内容示例*;
+3. 反思*快讯的html内容示例*中的规律, 设计正则匹配表达式来获取*`快讯`*的标题、链接、时间;
+4. 筛选最近3天的初创企业融资*`快讯`*, 以list[dict]形式打印前5个。
+5. 将全部结果存在本地csv中
+"""
+
+
+async def main():
+ di = DataInterpreter(tools=["scrape_web_playwright"])
+
+ await di.run(ECOMMERCE_REQ)
+
+
+if __name__ == "__main__":
+ import asyncio
+
+ asyncio.run(main())
diff --git a/examples/di/custom_tool.py b/examples/di/custom_tool.py
new file mode 100644
index 000000000..cbe7380c7
--- /dev/null
+++ b/examples/di/custom_tool.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@Time : 2024/3/22 10:54
+@Author : alexanderwu
+@File : custom_tool.py
+"""
+
+from metagpt.roles.di.data_interpreter import DataInterpreter
+from metagpt.tools.tool_registry import register_tool
+
+
+@register_tool()
+def magic_function(arg1: str, arg2: int) -> dict:
+ """
+ The magic function that does something.
+
+ Args:
+ arg1 (str): ...
+ arg2 (int): ...
+
+ Returns:
+ dict: ...
+ """
+ return {"arg1": arg1 * 3, "arg2": arg2 * 5}
+
+
+async def main():
+ di = DataInterpreter(tools=["magic_function"])
+ await di.run("Just call the magic function with arg1 'A' and arg2 2. Tell me the result.")
+
+
+if __name__ == "__main__":
+ import asyncio
+
+ asyncio.run(main())
diff --git a/examples/di/data_visualization.py b/examples/di/data_visualization.py
new file mode 100644
index 000000000..184e04f26
--- /dev/null
+++ b/examples/di/data_visualization.py
@@ -0,0 +1,17 @@
+import asyncio
+
+from metagpt.logs import logger
+from metagpt.roles.di.data_interpreter import DataInterpreter
+from metagpt.utils.recovery_util import save_history
+
+
+async def main(requirement: str = ""):
+ di = DataInterpreter()
+ rsp = await di.run(requirement)
+ logger.info(rsp)
+ save_history(role=di)
+
+
+if __name__ == "__main__":
+ requirement = "Run data analysis on sklearn Iris dataset, include a plot"
+ asyncio.run(main(requirement))
diff --git a/examples/di/email_summary.py b/examples/di/email_summary.py
new file mode 100644
index 000000000..7c112767c
--- /dev/null
+++ b/examples/di/email_summary.py
@@ -0,0 +1,33 @@
+# -*- encoding: utf-8 -*-
+"""
+@Date : 2024/02/07
+@Author : Tuo Zhou
+@File : email_summary.py
+"""
+import os
+
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+
+async def main():
+ email_account = "your_email_account"
+ # your password will stay only on your device and not go to LLM api
+ os.environ["email_password"] = "your_email_password"
+
+ ### Prompt for automatic email reply, uncomment to try this too ###
+ # prompt = f"""I will give you your Outlook email account ({email_account}) and password (email_password item in the environment variable). You need to find the latest email in my inbox with the sender's suffix @gmail.com and reply "Thank you! I have received your email~"""""
+
+ ### Prompt for automatic email summary ###
+ prompt = f"""I will give you your Outlook email account ({email_account}) and password (email_password item in the environment variable).
+ Firstly, Please help me fetch the latest 5 senders and full letter contents.
+ Then, summarize each of the 5 emails into one sentence (you can do this by yourself, no need to import other models to do this) and output them in a markdown format."""
+
+ di = DataInterpreter()
+
+ await di.run(prompt)
+
+
+if __name__ == "__main__":
+ import asyncio
+
+ asyncio.run(main())
diff --git a/examples/imitate_webpage.py b/examples/di/imitate_webpage.py
similarity index 73%
rename from examples/imitate_webpage.py
rename to examples/di/imitate_webpage.py
index 5075e1e39..60ebab389 100644
--- a/examples/imitate_webpage.py
+++ b/examples/di/imitate_webpage.py
@@ -5,19 +5,18 @@
@Author : mannaandpoem
@File : imitate_webpage.py
"""
-from metagpt.roles.ci.code_interpreter import CodeInterpreter
+from metagpt.roles.di.data_interpreter import DataInterpreter
async def main():
web_url = "https://pytorch.org/"
prompt = f"""This is a URL of webpage: '{web_url}' .
Firstly, utilize Selenium and WebDriver for rendering.
-Secondly, convert image to a webpage including HTML, CSS and JS in one go.
-Finally, save webpage in a text file.
+Secondly, convert image to a webpage including HTML, CSS and JS in one go.
Note: All required dependencies and environments have been fully installed and configured."""
- ci = CodeInterpreter(goal=prompt, use_tools=True)
+ di = DataInterpreter(tools=["GPTvGenerator"])
- await ci.run(prompt)
+ await di.run(prompt)
if __name__ == "__main__":
diff --git a/examples/di/machine_learning.py b/examples/di/machine_learning.py
new file mode 100644
index 000000000..c674e66e8
--- /dev/null
+++ b/examples/di/machine_learning.py
@@ -0,0 +1,23 @@
+import fire
+
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+WINE_REQ = "Run data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy."
+
+DATA_DIR = "path/to/your/data"
+# sales_forecast data from https://www.kaggle.com/datasets/aslanahmedov/walmart-sales-forecast/data
+SALES_FORECAST_REQ = f"""Train a model to predict sales for each department in every store (split the last 40 weeks records as validation dataset, the others is train dataset), include plot total sales trends, print metric and plot scatter plots of
+groud truth and predictions on validation data. Dataset is {DATA_DIR}/train.csv, the metric is weighted mean absolute error (WMAE) for test data. Notice: *print* key variables to get more information for next task step.
+"""
+
+REQUIREMENTS = {"wine": WINE_REQ, "sales_forecast": SALES_FORECAST_REQ}
+
+
+async def main(use_case: str = "wine"):
+ mi = DataInterpreter()
+ requirement = REQUIREMENTS[use_case]
+ await mi.run(requirement)
+
+
+if __name__ == "__main__":
+ fire.Fire(main)
diff --git a/examples/di/machine_learning_with_tools.py b/examples/di/machine_learning_with_tools.py
new file mode 100644
index 000000000..291e734c8
--- /dev/null
+++ b/examples/di/machine_learning_with_tools.py
@@ -0,0 +1,16 @@
+import asyncio
+
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+
+async def main(requirement: str):
+ role = DataInterpreter(use_reflection=True, tools=[""])
+ await role.run(requirement)
+
+
+if __name__ == "__main__":
+ data_path = "your/path/to/titanic"
+ train_path = f"{data_path}/split_train.csv"
+ eval_path = f"{data_path}/split_eval.csv"
+ requirement = f"This is a titanic passenger survival dataset, your goal is to predict passenger survival outcome. The target column is Survived. Perform data analysis, data preprocessing, feature engineering, and modeling to predict the target. Report accuracy on the eval data. Train data path: '{train_path}', eval data path: '{eval_path}'."
+ asyncio.run(main(requirement))
diff --git a/examples/di/ocr_receipt.py b/examples/di/ocr_receipt.py
new file mode 100644
index 000000000..af54d519b
--- /dev/null
+++ b/examples/di/ocr_receipt.py
@@ -0,0 +1,21 @@
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+
+async def main():
+ # Notice: pip install metagpt[ocr] before using this example
+ image_path = "image.jpg"
+ language = "English"
+ requirement = f"""This is a {language} receipt image.
+ Your goal is to perform OCR on images using PaddleOCR, output text content from the OCR results and discard
+ coordinates and confidence levels, then recognize the total amount from ocr text content, and finally save as table.
+ Image path: {image_path}.
+ NOTE: The environments for Paddle and PaddleOCR are all ready and has been fully installed."""
+ di = DataInterpreter()
+
+ await di.run(requirement)
+
+
+if __name__ == "__main__":
+ import asyncio
+
+ asyncio.run(main())
diff --git a/examples/di/rm_image_background.py b/examples/di/rm_image_background.py
new file mode 100644
index 000000000..cb7900a0a
--- /dev/null
+++ b/examples/di/rm_image_background.py
@@ -0,0 +1,15 @@
+import asyncio
+
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+
+async def main(requirement: str = ""):
+ di = DataInterpreter()
+ await di.run(requirement)
+
+
+if __name__ == "__main__":
+ image_path = "/your/path/to/the/image.jpeg"
+ save_path = "/your/intended/save/path/for/image_rm_bg.png"
+ requirement = f"This is a image, you need to use python toolkit rembg to remove the background of the image and save the result. image path:{image_path}; save path:{save_path}."
+ asyncio.run(main(requirement))
diff --git a/examples/sd_tool_usage.py b/examples/di/sd_tool_usage.py
similarity index 70%
rename from examples/sd_tool_usage.py
rename to examples/di/sd_tool_usage.py
index b4642af23..b373a6251 100644
--- a/examples/sd_tool_usage.py
+++ b/examples/di/sd_tool_usage.py
@@ -4,12 +4,12 @@
# @Desc :
import asyncio
-from metagpt.roles.ci.code_interpreter import CodeInterpreter
+from metagpt.roles.di.data_interpreter import DataInterpreter
async def main(requirement: str = ""):
- code_interpreter = CodeInterpreter(use_tools=True, goal=requirement)
- await code_interpreter.run(requirement)
+ di = DataInterpreter(tools=["SDEngine"])
+ await di.run(requirement)
if __name__ == "__main__":
diff --git a/examples/di/solve_math_problems.py b/examples/di/solve_math_problems.py
new file mode 100644
index 000000000..f7fd3d4e3
--- /dev/null
+++ b/examples/di/solve_math_problems.py
@@ -0,0 +1,14 @@
+import asyncio
+
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+
+async def main(requirement: str = ""):
+ di = DataInterpreter()
+ await di.run(requirement)
+
+
+if __name__ == "__main__":
+ requirement = "Solve this math problem: The greatest common divisor of positive integers m and n is 6. The least common multiple of m and n is 126. What is the least possible value of m + n?"
+ # answer: 60 (m = 18, n = 42)
+ asyncio.run(main(requirement))
diff --git a/examples/llm_hello_world.py b/examples/llm_hello_world.py
index 1d132eb8a..62fc2ed68 100644
--- a/examples/llm_hello_world.py
+++ b/examples/llm_hello_world.py
@@ -6,16 +6,25 @@
@File : llm_hello_world.py
"""
import asyncio
-from pathlib import Path
from metagpt.llm import LLM
from metagpt.logs import logger
-from metagpt.utils.common import encode_image
async def main():
llm = LLM()
- logger.info(await llm.aask("hello world"))
+ # llm type check
+ question = "what's your name"
+ logger.info(f"{question}: ")
+ logger.info(await llm.aask(question))
+ logger.info("\n\n")
+
+ logger.info(
+ await llm.aask(
+ "who are you", system_msgs=["act as a robot, just answer 'I'am robot' if the question is 'who are you'"]
+ )
+ )
+
logger.info(await llm.aask_batch(["hi", "write python hello world."]))
hello_msg = [{"role": "user", "content": "count from 1 to 10. split by newline."}]
@@ -29,12 +38,6 @@ async def main():
if hasattr(llm, "completion"):
logger.info(llm.completion(hello_msg))
- # check if the configured llm supports llm-vision capacity. If not, it will throw a error
- invoice_path = Path(__file__).parent.joinpath("..", "tests", "data", "invoices", "invoice-2.png")
- img_base64 = encode_image(invoice_path)
- res = await llm.aask(msg="if this is a invoice, just return True else return False", images=[img_base64])
- assert "true" in res.lower()
-
if __name__ == "__main__":
asyncio.run(main())
diff --git a/examples/llm_vision.py b/examples/llm_vision.py
new file mode 100644
index 000000000..276decd59
--- /dev/null
+++ b/examples/llm_vision.py
@@ -0,0 +1,23 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @Desc : example to run the ability of LLM vision
+
+import asyncio
+from pathlib import Path
+
+from metagpt.llm import LLM
+from metagpt.utils.common import encode_image
+
+
+async def main():
+ llm = LLM()
+
+ # check if the configured llm supports llm-vision capacity. If not, it will throw a error
+ invoice_path = Path(__file__).parent.joinpath("..", "tests", "data", "invoices", "invoice-2.png")
+ img_base64 = encode_image(invoice_path)
+ res = await llm.aask(msg="if this is a invoice, just return True else return False", images=[img_base64])
+ assert "true" in res.lower()
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/examples/rag_pipeline.py b/examples/rag_pipeline.py
new file mode 100644
index 000000000..5a313d7bb
--- /dev/null
+++ b/examples/rag_pipeline.py
@@ -0,0 +1,211 @@
+"""RAG pipeline"""
+
+import asyncio
+
+from pydantic import BaseModel
+
+from metagpt.const import DATA_PATH, EXAMPLE_DATA_PATH
+from metagpt.logs import logger
+from metagpt.rag.engines import SimpleEngine
+from metagpt.rag.schema import (
+ BM25RetrieverConfig,
+ ChromaIndexConfig,
+ ChromaRetrieverConfig,
+ FAISSRetrieverConfig,
+ LLMRankerConfig,
+)
+
+DOC_PATH = EXAMPLE_DATA_PATH / "rag/writer.txt"
+QUESTION = "What are key qualities to be a good writer?"
+
+TRAVEL_DOC_PATH = EXAMPLE_DATA_PATH / "rag/travel.txt"
+TRAVEL_QUESTION = "What does Bob like?"
+
+LLM_TIP = "If you not sure, just answer I don't know."
+
+
+class Player(BaseModel):
+ """To demonstrate rag add objs."""
+
+ name: str = ""
+ goal: str = "Win The 100-meter Sprint."
+ tool: str = "Red Bull Energy Drink."
+
+ def rag_key(self) -> str:
+ """For search"""
+ return self.goal
+
+
+class RAGExample:
+ """Show how to use RAG."""
+
+ def __init__(self):
+ self.engine = SimpleEngine.from_docs(
+ input_files=[DOC_PATH],
+ retriever_configs=[FAISSRetrieverConfig(), BM25RetrieverConfig()],
+ ranker_configs=[LLMRankerConfig()],
+ )
+
+ async def run_pipeline(self, question=QUESTION, print_title=True):
+ """This example run rag pipeline, use faiss&bm25 retriever and llm ranker, will print something like:
+
+ Retrieve Result:
+ 0. Productivi..., 10.0
+ 1. I wrote cu..., 7.0
+ 2. I highly r..., 5.0
+
+ Query Result:
+ Passion, adaptability, open-mindedness, creativity, discipline, and empathy are key qualities to be a good writer.
+ """
+ if print_title:
+ self._print_title("Run Pipeline")
+
+ nodes = await self.engine.aretrieve(question)
+ self._print_retrieve_result(nodes)
+
+ answer = await self.engine.aquery(question)
+ self._print_query_result(answer)
+
+ async def add_docs(self):
+ """This example show how to add docs.
+
+ Before add docs llm anwser I don't know.
+ After add docs llm give the correct answer, will print something like:
+
+ [Before add docs]
+ Retrieve Result:
+
+ Query Result:
+ Empty Response
+
+ [After add docs]
+ Retrieve Result:
+ 0. Bob like..., 10.0
+
+ Query Result:
+ Bob likes traveling.
+ """
+ self._print_title("Add Docs")
+
+ travel_question = f"{TRAVEL_QUESTION}{LLM_TIP}"
+ travel_filepath = TRAVEL_DOC_PATH
+
+ logger.info("[Before add docs]")
+ await self.run_pipeline(question=travel_question, print_title=False)
+
+ logger.info("[After add docs]")
+ self.engine.add_docs([travel_filepath])
+ await self.run_pipeline(question=travel_question, print_title=False)
+
+ async def add_objects(self, print_title=True):
+ """This example show how to add objects.
+
+ Before add docs, engine retrieve nothing.
+ After add objects, engine give the correct answer, will print something like:
+
+ [Before add objs]
+ Retrieve Result:
+
+ [After add objs]
+ Retrieve Result:
+ 0. 100m Sprin..., 10.0
+
+ [Object Detail]
+ {'name': 'Mike', 'goal': 'Win The 100-meter Sprint', 'tool': 'Red Bull Energy Drink'}
+ """
+ if print_title:
+ self._print_title("Add Objects")
+
+ player = Player(name="Mike")
+ question = f"{player.rag_key()}"
+
+ logger.info("[Before add objs]")
+ await self._retrieve_and_print(question)
+
+ logger.info("[After add objs]")
+ self.engine.add_objs([player])
+
+ try:
+ nodes = await self._retrieve_and_print(question)
+
+ logger.info("[Object Detail]")
+ player: Player = nodes[0].metadata["obj"]
+ logger.info(player.name)
+ except Exception as e:
+ logger.error(f"nodes is empty, llm don't answer correctly, exception: {e}")
+
+ async def init_objects(self):
+ """This example show how to from objs, will print something like:
+
+ Same as add_objects.
+ """
+ self._print_title("Init Objects")
+
+ pre_engine = self.engine
+ self.engine = SimpleEngine.from_objs(retriever_configs=[FAISSRetrieverConfig()])
+ await self.add_objects(print_title=False)
+ self.engine = pre_engine
+
+ async def init_and_query_chromadb(self):
+ """This example show how to use chromadb. how to save and load index. will print something like:
+
+ Query Result:
+ Bob likes traveling.
+ """
+ self._print_title("Init And Query ChromaDB")
+
+ # save index
+ output_dir = DATA_PATH / "rag"
+ SimpleEngine.from_docs(
+ input_files=[TRAVEL_DOC_PATH],
+ retriever_configs=[ChromaRetrieverConfig(persist_path=output_dir)],
+ )
+
+ # load index
+ engine = SimpleEngine.from_index(
+ index_config=ChromaIndexConfig(persist_path=output_dir),
+ )
+
+ # query
+ answer = engine.query(TRAVEL_QUESTION)
+ self._print_query_result(answer)
+
+ @staticmethod
+ def _print_title(title):
+ logger.info(f"{'#'*30} {title} {'#'*30}")
+
+ @staticmethod
+ def _print_retrieve_result(result):
+ """Print retrieve result."""
+ logger.info("Retrieve Result:")
+
+ for i, node in enumerate(result):
+ logger.info(f"{i}. {node.text[:10]}..., {node.score}")
+
+ logger.info("")
+
+ @staticmethod
+ def _print_query_result(result):
+ """Print query result."""
+ logger.info("Query Result:")
+
+ logger.info(f"{result}\n")
+
+ async def _retrieve_and_print(self, question):
+ nodes = await self.engine.aretrieve(question)
+ self._print_retrieve_result(nodes)
+ return nodes
+
+
+async def main():
+ """RAG pipeline"""
+ e = RAGExample()
+ await e.run_pipeline()
+ await e.add_docs()
+ await e.add_objects()
+ await e.init_objects()
+ await e.init_and_query_chromadb()
+
+
+if __name__ == "__main__":
+ asyncio.run(main())
diff --git a/examples/rag_search.py b/examples/rag_search.py
new file mode 100644
index 000000000..258c5ba60
--- /dev/null
+++ b/examples/rag_search.py
@@ -0,0 +1,21 @@
+"""Agent with RAG search."""
+
+import asyncio
+
+from examples.rag_pipeline import DOC_PATH, QUESTION
+from metagpt.logs import logger
+from metagpt.rag.engines import SimpleEngine
+from metagpt.roles import Sales
+
+
+async def search():
+ """Agent with RAG search."""
+
+ store = SimpleEngine.from_docs(input_files=[DOC_PATH])
+ role = Sales(profile="Sales", store=store)
+ result = await role.run(QUESTION)
+ logger.info(result)
+
+
+if __name__ == "__main__":
+ asyncio.run(search())
diff --git a/examples/reverse_engineering.py b/examples/reverse_engineering.py
new file mode 100644
index 000000000..f80fc09e6
--- /dev/null
+++ b/examples/reverse_engineering.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import asyncio
+import shutil
+from pathlib import Path
+
+import typer
+
+from metagpt.actions.rebuild_class_view import RebuildClassView
+from metagpt.actions.rebuild_sequence_view import RebuildSequenceView
+from metagpt.context import Context
+from metagpt.llm import LLM
+from metagpt.logs import logger
+from metagpt.utils.git_repository import GitRepository
+from metagpt.utils.project_repo import ProjectRepo
+
+app = typer.Typer(add_completion=False, pretty_exceptions_show_locals=False)
+
+
+@app.command("", help="Python project reverse engineering.")
+def startup(
+ project_root: str = typer.Argument(
+ default="",
+ help="Specify the root directory of the existing project for reverse engineering.",
+ ),
+ output_dir: str = typer.Option(default="", help="Specify the output directory path for reverse engineering."),
+):
+ package_root = Path(project_root)
+ if not package_root.exists():
+ raise FileNotFoundError(f"{project_root} not exists")
+ if not _is_python_package_root(package_root):
+ raise FileNotFoundError(f'There are no "*.py" files under "{project_root}".')
+ init_file = package_root / "__init__.py" # used by pyreverse
+ init_file_exists = init_file.exists()
+ if not init_file_exists:
+ init_file.touch()
+
+ if not output_dir:
+ output_dir = package_root / "../reverse_engineering_output"
+ logger.info(f"output dir:{output_dir}")
+ try:
+ asyncio.run(reverse_engineering(package_root, Path(output_dir)))
+ finally:
+ if not init_file_exists:
+ init_file.unlink(missing_ok=True)
+ tmp_dir = package_root / "__dot__"
+ if tmp_dir.exists():
+ shutil.rmtree(tmp_dir, ignore_errors=True)
+
+
+def _is_python_package_root(package_root: Path) -> bool:
+ for file_path in package_root.iterdir():
+ if file_path.is_file():
+ if file_path.suffix == ".py":
+ return True
+ return False
+
+
+async def reverse_engineering(package_root: Path, output_dir: Path):
+ ctx = Context()
+ ctx.git_repo = GitRepository(output_dir)
+ ctx.repo = ProjectRepo(ctx.git_repo)
+ action = RebuildClassView(name="ReverseEngineering", i_context=str(package_root), llm=LLM(), context=ctx)
+ await action.run()
+
+ action = RebuildSequenceView(name="ReverseEngineering", llm=LLM(), context=ctx)
+ await action.run()
+
+
+if __name__ == "__main__":
+ app()
diff --git a/examples/search_kb.py b/examples/search_kb.py
deleted file mode 100644
index 995720cc1..000000000
--- a/examples/search_kb.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""
-@File : search_kb.py
-@Modified By: mashenquan, 2023-12-22. Delete useless codes.
-"""
-import asyncio
-
-from langchain.embeddings import OpenAIEmbeddings
-
-from metagpt.config2 import config
-from metagpt.const import DATA_PATH, EXAMPLE_PATH
-from metagpt.document_store import FaissStore
-from metagpt.logs import logger
-from metagpt.roles import Sales
-
-
-def get_store():
- llm = config.get_openai_llm()
- embedding = OpenAIEmbeddings(openai_api_key=llm.api_key, openai_api_base=llm.base_url)
- return FaissStore(DATA_PATH / "example.json", embedding=embedding)
-
-
-async def search():
- store = FaissStore(EXAMPLE_PATH / "example.json")
- role = Sales(profile="Sales", store=store)
- query = "Which facial cleanser is good for oily skin?"
- result = await role.run(query)
- logger.info(result)
-
-
-if __name__ == "__main__":
- asyncio.run(search())
diff --git a/examples/search_with_specific_engine.py b/examples/search_with_specific_engine.py
index 97b1378ee..276431ed8 100644
--- a/examples/search_with_specific_engine.py
+++ b/examples/search_with_specific_engine.py
@@ -4,21 +4,17 @@
"""
import asyncio
+from metagpt.config2 import Config
from metagpt.roles import Searcher
-from metagpt.tools.search_engine import SearchEngine, SearchEngineType
+from metagpt.tools.search_engine import SearchEngine
async def main():
question = "What are the most interesting human facts?"
- kwargs = {"api_key": "", "cse_id": "", "proxy": None}
- # Serper API
- # await Searcher(search_engine=SearchEngine(engine=SearchEngineType.SERPER_GOOGLE, **kwargs)).run(question)
- # SerpAPI
- # await Searcher(search_engine=SearchEngine(engine=SearchEngineType.SERPAPI_GOOGLE, **kwargs)).run(question)
- # Google API
- # await Searcher(search_engine=SearchEngine(engine=SearchEngineType.DIRECT_GOOGLE, **kwargs)).run(question)
- # DDG API
- await Searcher(search_engine=SearchEngine(engine=SearchEngineType.DUCK_DUCK_GO, **kwargs)).run(question)
+
+ search = Config.default().search
+ kwargs = search.model_dump()
+ await Searcher(search_engine=SearchEngine(engine=search.api_type, **kwargs)).run(question)
if __name__ == "__main__":
diff --git a/examples/write_novel.py b/examples/write_novel.py
index b272a56e6..a6e9ce05d 100644
--- a/examples/write_novel.py
+++ b/examples/write_novel.py
@@ -14,6 +14,22 @@ from metagpt.actions.action_node import ActionNode
from metagpt.llm import LLM
+class Chapter(BaseModel):
+ name: str = Field(default="Chapter 1", description="The name of the chapter.")
+ content: str = Field(default="...", description="The content of the chapter. No more than 1000 words.")
+
+
+class Chapters(BaseModel):
+ chapters: List[Chapter] = Field(
+ default=[
+ {"name": "Chapter 1", "content": "..."},
+ {"name": "Chapter 2", "content": "..."},
+ {"name": "Chapter 3", "content": "..."},
+ ],
+ description="The chapters of the novel.",
+ )
+
+
class Novel(BaseModel):
name: str = Field(default="The Lord of the Rings", description="The name of the novel.")
user_group: str = Field(default="...", description="The user group of the novel.")
@@ -28,22 +44,17 @@ class Novel(BaseModel):
ending: str = Field(default="...", description="The ending of the novel.")
-class Chapter(BaseModel):
- name: str = Field(default="Chapter 1", description="The name of the chapter.")
- content: str = Field(default="...", description="The content of the chapter. No more than 1000 words.")
-
-
async def generate_novel():
instruction = (
- "Write a novel named 'Harry Potter in The Lord of the Rings'. "
+ "Write a novel named 'Reborn in Skyrim'. "
"Fill the empty nodes with your own ideas. Be creative! Use your own words!"
"I will tip you $100,000 if you write a good novel."
)
novel_node = await ActionNode.from_pydantic(Novel).fill(context=instruction, llm=LLM())
- chap_node = await ActionNode.from_pydantic(Chapter).fill(
+ chap_node = await ActionNode.from_pydantic(Chapters).fill(
context=f"### instruction\n{instruction}\n### novel\n{novel_node.content}", llm=LLM()
)
- print(chap_node.content)
+ print(chap_node.instruct_content)
asyncio.run(generate_novel())
diff --git a/metagpt/actions/__init__.py b/metagpt/actions/__init__.py
index 363b4fd33..495ed4031 100644
--- a/metagpt/actions/__init__.py
+++ b/metagpt/actions/__init__.py
@@ -22,9 +22,9 @@ from metagpt.actions.write_code_review import WriteCodeReview
from metagpt.actions.write_prd import WritePRD
from metagpt.actions.write_prd_review import WritePRDReview
from metagpt.actions.write_test import WriteTest
-from metagpt.actions.ci.execute_nb_code import ExecuteNbCode
-from metagpt.actions.ci.write_analysis_code import WriteCodeWithoutTools, WriteCodeWithTools
-from metagpt.actions.ci.write_plan import WritePlan
+from metagpt.actions.di.execute_nb_code import ExecuteNbCode
+from metagpt.actions.di.write_analysis_code import WriteAnalysisCode
+from metagpt.actions.di.write_plan import WritePlan
class ActionType(Enum):
@@ -46,8 +46,7 @@ class ActionType(Enum):
WEB_BROWSE_AND_SUMMARIZE = WebBrowseAndSummarize
CONDUCT_RESEARCH = ConductResearch
EXECUTE_NB_CODE = ExecuteNbCode
- WRITE_CODE_WITHOUT_TOOLS = WriteCodeWithoutTools
- WRITE_CODE_WITH_TOOLS = WriteCodeWithTools
+ WRITE_ANALYSIS_CODE = WriteAnalysisCode
WRITE_PLAN = WritePlan
diff --git a/metagpt/actions/action_node.py b/metagpt/actions/action_node.py
index 09da4a988..27dde5a8c 100644
--- a/metagpt/actions/action_node.py
+++ b/metagpt/actions/action_node.py
@@ -17,6 +17,7 @@ from pydantic import BaseModel, Field, create_model, model_validator
from tenacity import retry, stop_after_attempt, wait_random_exponential
from metagpt.actions.action_outcls_registry import register_action_outcls
+from metagpt.const import USE_CONFIG_TIMEOUT
from metagpt.llm import BaseLLM
from metagpt.logs import logger
from metagpt.provider.postprocess.llm_output_postprocess import llm_output_postprocess
@@ -330,7 +331,7 @@ class ActionNode:
def compile_to(self, i: Dict, schema, kv_sep) -> str:
if schema == "json":
- return json.dumps(i, indent=4)
+ return json.dumps(i, indent=4, ensure_ascii=False)
elif schema == "markdown":
return dict_to_markdown(i, kv_sep=kv_sep)
else:
@@ -416,7 +417,7 @@ class ActionNode:
images: Optional[Union[str, list[str]]] = None,
system_msgs: Optional[list[str]] = None,
schema="markdown", # compatible to original format
- timeout=3,
+ timeout=USE_CONFIG_TIMEOUT,
) -> (str, BaseModel):
"""Use ActionOutput to wrap the output of aask"""
content = await self.llm.aask(prompt, system_msgs, images=images, timeout=timeout)
@@ -448,7 +449,9 @@ class ActionNode:
def set_context(self, context):
self.set_recursive("context", context)
- async def simple_fill(self, schema, mode, images: Optional[Union[str, list[str]]] = None, timeout=3, exclude=None):
+ async def simple_fill(
+ self, schema, mode, images: Optional[Union[str, list[str]]] = None, timeout=USE_CONFIG_TIMEOUT, exclude=None
+ ):
prompt = self.compile(context=self.context, schema=schema, mode=mode, exclude=exclude)
if schema != "raw":
@@ -473,7 +476,7 @@ class ActionNode:
mode="auto",
strgy="simple",
images: Optional[Union[str, list[str]]] = None,
- timeout=3,
+ timeout=USE_CONFIG_TIMEOUT,
exclude=[],
):
"""Fill the node(s) with mode.
diff --git a/metagpt/actions/ci/debug_code.py b/metagpt/actions/ci/debug_code.py
deleted file mode 100644
index 4a6617dc6..000000000
--- a/metagpt/actions/ci/debug_code.py
+++ /dev/null
@@ -1,109 +0,0 @@
-from __future__ import annotations
-
-from metagpt.actions.ci.write_analysis_code import BaseWriteAnalysisCode
-from metagpt.logs import logger
-from metagpt.schema import Message
-from metagpt.utils.common import create_func_call_config
-
-DEBUG_REFLECTION_EXAMPLE = '''
-Example 1:
-[previous impl]:
-```python
-def add(a: int, b: int) -> int:
- """
- Given integers a and b, return the total value of a and b.
- """
- return a - b
-```
-
-[runtime Error]:
-Tested passed:
-
-Tests failed:
-assert add(1, 2) == 3 # output: -1
-assert add(1, 2) == 4 # output: -1
-
-[reflection on previous impl]:
-The implementation failed the test cases where the input integers are 1 and 2. The issue arises because the code does not add the two integers together, but instead subtracts the second integer from the first. To fix this issue, we should change the operator from `-` to `+` in the return statement. This will ensure that the function returns the correct output for the given input.
-
-[improved impl]:
-```python
-def add(a: int, b: int) -> int:
- """
- Given integers a and b, return the total value of a and b.
- """
- return a + b
-```
-'''
-
-REFLECTION_PROMPT = """
-Here is an example for you.
-{debug_example}
-[context]
-{context}
-
-[previous impl]
-{code}
-[runtime Error]
-{runtime_result}
-
-Analysis the error step by step, provide me improve method and code. Remember to follow [context] requirement. Don't forget write code for steps behind the error step.
-[reflection on previous impl]:
-xxx
-"""
-
-CODE_REFLECTION = {
- "name": "execute_reflection_code",
- "description": "Execute reflection code.",
- "parameters": {
- "type": "object",
- "properties": {
- "reflection": {
- "type": "string",
- "description": "Reflection on previous impl.",
- },
- "improved_impl": {
- "type": "string",
- "description": "Refined code after reflection.",
- },
- },
- "required": ["reflection", "improved_impl"],
- },
-}
-
-
-class DebugCode(BaseWriteAnalysisCode):
- async def run(
- self,
- context: list[Message] = None,
- code: str = "",
- runtime_result: str = "",
- ) -> str:
- """
- Execute the debugging process based on the provided context, code, and runtime_result.
-
- Args:
- context (list[Message]): A list of Message objects representing the context.
- code (str): The code to be debugged.
- runtime_result (str): The result of the code execution.
-
- Returns:
- str: The improved implementation based on the debugging process.
- """
-
- info = []
- reflection_prompt = REFLECTION_PROMPT.format(
- debug_example=DEBUG_REFLECTION_EXAMPLE,
- context=context,
- code=code,
- runtime_result=runtime_result,
- )
- system_prompt = "You are an AI Python assistant. You will be given your previous implementation code of a task, runtime error results, and a hint to change the implementation appropriately. Write your full implementation "
- info.append(Message(role="system", content=system_prompt))
- info.append(Message(role="user", content=reflection_prompt))
-
- tool_config = create_func_call_config(CODE_REFLECTION)
- reflection = await self.llm.aask_code(messages=info, **tool_config)
- logger.info(f"reflection is {reflection}")
-
- return {"code": reflection["improved_impl"]}
diff --git a/metagpt/actions/ci/ml_action.py b/metagpt/actions/ci/ml_action.py
deleted file mode 100644
index e18d0fd20..000000000
--- a/metagpt/actions/ci/ml_action.py
+++ /dev/null
@@ -1,70 +0,0 @@
-from __future__ import annotations
-
-from typing import Tuple
-
-from metagpt.actions import Action
-from metagpt.actions.ci.write_analysis_code import WriteCodeWithTools
-from metagpt.prompts.ci.ml_action import (
- ML_GENERATE_CODE_PROMPT,
- ML_TOOL_USAGE_PROMPT,
- PRINT_DATA_COLUMNS,
- UPDATE_DATA_COLUMNS,
-)
-from metagpt.prompts.ci.write_analysis_code import CODE_GENERATOR_WITH_TOOLS
-from metagpt.schema import Message, Plan
-from metagpt.utils.common import create_func_call_config, remove_comments
-
-
-class WriteCodeWithToolsML(WriteCodeWithTools):
- async def run(
- self,
- context: list[Message],
- plan: Plan = None,
- column_info: str = "",
- **kwargs,
- ) -> Tuple[list[Message], str]:
- # prepare tool schemas and tool-type-specific instruction
- tool_schemas, tool_type_usage_prompt = await self._prepare_tools(plan=plan)
-
- # ML-specific variables to be used in prompt
- finished_tasks = plan.get_finished_tasks()
- code_context = [remove_comments(task.code) for task in finished_tasks]
- code_context = "\n\n".join(code_context)
-
- # prepare prompt depending on tool availability & LLM call
- if tool_schemas:
- prompt = ML_TOOL_USAGE_PROMPT.format(
- user_requirement=plan.goal,
- history_code=code_context,
- current_task=plan.current_task.instruction,
- column_info=column_info,
- tool_type_usage_prompt=tool_type_usage_prompt,
- tool_schemas=tool_schemas,
- )
-
- else:
- prompt = ML_GENERATE_CODE_PROMPT.format(
- user_requirement=plan.goal,
- history_code=code_context,
- current_task=plan.current_task.instruction,
- column_info=column_info,
- tool_type_usage_prompt=tool_type_usage_prompt,
- )
- tool_config = create_func_call_config(CODE_GENERATOR_WITH_TOOLS)
- rsp = await self.llm.aask_code(prompt, **tool_config)
-
- # Extra output to be used for potential debugging
- context = [Message(content=prompt, role="user")]
-
- return context, rsp
-
-
-class UpdateDataColumns(Action):
- async def run(self, plan: Plan = None) -> dict:
- finished_tasks = plan.get_finished_tasks()
- code_context = [remove_comments(task.code) for task in finished_tasks]
- code_context = "\n\n".join(code_context)
- prompt = UPDATE_DATA_COLUMNS.format(history_code=code_context)
- tool_config = create_func_call_config(PRINT_DATA_COLUMNS)
- rsp = await self.llm.aask_code(prompt, **tool_config)
- return rsp
diff --git a/metagpt/actions/ci/write_analysis_code.py b/metagpt/actions/ci/write_analysis_code.py
deleted file mode 100644
index 421eb0804..000000000
--- a/metagpt/actions/ci/write_analysis_code.py
+++ /dev/null
@@ -1,155 +0,0 @@
-# -*- encoding: utf-8 -*-
-"""
-@Date : 2023/11/20 13:19:39
-@Author : orange-crow
-@File : write_analysis_code.py
-"""
-from __future__ import annotations
-
-from typing import Tuple
-
-from metagpt.actions import Action
-from metagpt.logs import logger
-from metagpt.prompts.ci.write_analysis_code import (
- CODE_GENERATOR_WITH_TOOLS,
- SELECT_FUNCTION_TOOLS,
- TOOL_RECOMMENDATION_PROMPT,
- TOOL_USAGE_PROMPT,
-)
-from metagpt.schema import Message, Plan, SystemMessage
-from metagpt.tools import TOOL_REGISTRY
-from metagpt.tools.tool_registry import validate_tool_names
-from metagpt.utils.common import create_func_call_config
-
-
-class BaseWriteAnalysisCode(Action):
- DEFAULT_SYSTEM_MSG: str = """You are Code Interpreter, a world-class programmer that can complete any goal by executing code. Strictly follow the plan and generate code step by step. Each step of the code will be executed on the user's machine, and the user will provide the code execution results to you.**Notice: The code for the next step depends on the code for the previous step. Must reuse variables in the lastest other code directly, dont creat it again, it is very import for you. Use !pip install in a standalone block to install missing packages.Usually the libraries you need are already installed.Dont check if packages already imported.**""" # prompt reference: https://github.com/KillianLucas/open-interpreter/blob/v0.1.4/interpreter/system_message.txt
- # REUSE_CODE_INSTRUCTION = """ATTENTION: DONT include codes from previous tasks in your current code block, include new codes only, DONT repeat codes!"""
-
- def insert_system_message(self, context: list[Message], system_msg: str = None):
- system_msg = system_msg or self.DEFAULT_SYSTEM_MSG
- context.insert(0, SystemMessage(content=system_msg)) if context[0].role != "system" else None
- return context
-
- async def run(self, context: list[Message], plan: Plan = None) -> dict:
- """Run of a code writing action, used in data analysis or modeling
-
- Args:
- context (list[Message]): Action output history, source action denoted by Message.cause_by
- plan (Plan, optional): Overall plan. Defaults to None.
-
- Returns:
- dict: code result in the format of {"code": "print('hello world')", "language": "python"}
- """
- raise NotImplementedError
-
-
-class WriteCodeWithoutTools(BaseWriteAnalysisCode):
- """Ask LLM to generate codes purely by itself without local user-defined tools"""
-
- async def run(self, context: list[Message], plan: Plan = None, system_msg: str = None, **kwargs) -> dict:
- messages = self.insert_system_message(context, system_msg)
- rsp = await self.llm.aask_code(messages, **kwargs)
- return rsp
-
-
-class WriteCodeWithTools(BaseWriteAnalysisCode):
- """Write code with help of local available tools. Choose tools first, then generate code to use the tools"""
-
- # selected tools to choose from, listed by their names. An empty list means selection from all tools.
- selected_tools: list[str] = []
-
- def _get_tools_by_type(self, tool_type: str) -> dict:
- """
- Retreive tools by tool type from registry, but filtered by pre-selected tool list
-
- Args:
- tool_type (str): Tool type to retrieve from the registry
-
- Returns:
- dict: A dict of tool name to Tool object, representing available tools under the type
- """
- candidate_tools = TOOL_REGISTRY.get_tools_by_type(tool_type)
- if self.selected_tools:
- candidate_tool_names = set(self.selected_tools) & candidate_tools.keys()
- candidate_tools = {tool_name: candidate_tools[tool_name] for tool_name in candidate_tool_names}
- return candidate_tools
-
- async def _recommend_tool(
- self,
- task: str,
- available_tools: dict,
- ) -> dict:
- """
- Recommend tools for the specified task.
-
- Args:
- task (str): the task to recommend tools for
- available_tools (dict): the available tools description
-
- Returns:
- dict: schemas of recommended tools for the specified task
- """
- prompt = TOOL_RECOMMENDATION_PROMPT.format(
- current_task=task,
- available_tools=available_tools,
- )
- tool_config = create_func_call_config(SELECT_FUNCTION_TOOLS)
- rsp = await self.llm.aask_code(prompt, **tool_config)
- recommend_tools = rsp["recommend_tools"]
- logger.info(f"Recommended tools: \n{recommend_tools}")
-
- # Parses and validates the recommended tools, for LLM might hallucinate and recommend non-existing tools
- valid_tools = validate_tool_names(recommend_tools, return_tool_object=True)
-
- tool_schemas = {tool.name: tool.schemas for tool in valid_tools}
-
- return tool_schemas
-
- async def _prepare_tools(self, plan: Plan) -> Tuple[dict, str]:
- """Prepare tool schemas and usage instructions according to current task
-
- Args:
- plan (Plan): The overall plan containing task information.
-
- Returns:
- Tuple[dict, str]: A tool schemas ({tool_name: tool_schema_dict}) and a usage prompt for the type of tools selected
- """
- # find tool type from task type through exact match, can extend to retrieval in the future
- tool_type = plan.current_task.task_type
-
- # prepare tool-type-specific instruction
- tool_type_usage_prompt = (
- TOOL_REGISTRY.get_tool_type(tool_type).usage_prompt if TOOL_REGISTRY.has_tool_type(tool_type) else ""
- )
-
- # prepare schemas of available tools
- tool_schemas = {}
- available_tools = self._get_tools_by_type(tool_type)
- if available_tools:
- available_tools = {tool_name: tool.schemas["description"] for tool_name, tool in available_tools.items()}
- tool_schemas = await self._recommend_tool(plan.current_task.instruction, available_tools)
-
- return tool_schemas, tool_type_usage_prompt
-
- async def run(
- self,
- context: list[Message],
- plan: Plan,
- **kwargs,
- ) -> str:
- # prepare tool schemas and tool-type-specific instruction
- tool_schemas, tool_type_usage_prompt = await self._prepare_tools(plan=plan)
-
- # form a complete tool usage instruction and include it as a message in context
- tools_instruction = TOOL_USAGE_PROMPT.format(
- tool_schemas=tool_schemas, tool_type_usage_prompt=tool_type_usage_prompt
- )
- context.append(Message(content=tools_instruction, role="user"))
-
- # prepare prompt & LLM call
- prompt = self.insert_system_message(context)
- tool_config = create_func_call_config(CODE_GENERATOR_WITH_TOOLS)
- rsp = await self.llm.aask_code(prompt, **tool_config)
-
- return rsp
diff --git a/metagpt/actions/design_api_an.py b/metagpt/actions/design_api_an.py
index 35b50ef8f..5977cbd95 100644
--- a/metagpt/actions/design_api_an.py
+++ b/metagpt/actions/design_api_an.py
@@ -8,7 +8,6 @@
from typing import List
from metagpt.actions.action_node import ActionNode
-from metagpt.logs import logger
from metagpt.utils.mermaid import MMC1, MMC2
IMPLEMENTATION_APPROACH = ActionNode(
@@ -109,14 +108,3 @@ REFINED_NODES = [
DESIGN_API_NODE = ActionNode.from_children("DesignAPI", NODES)
REFINED_DESIGN_NODE = ActionNode.from_children("RefinedDesignAPI", REFINED_NODES)
-
-
-def main():
- prompt = DESIGN_API_NODE.compile(context="")
- logger.info(prompt)
- prompt = REFINED_DESIGN_NODE.compile(context="")
- logger.info(prompt)
-
-
-if __name__ == "__main__":
- main()
diff --git a/metagpt/actions/di/__init__.py b/metagpt/actions/di/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/metagpt/actions/ci/ask_review.py b/metagpt/actions/di/ask_review.py
similarity index 100%
rename from metagpt/actions/ci/ask_review.py
rename to metagpt/actions/di/ask_review.py
diff --git a/metagpt/actions/ci/execute_nb_code.py b/metagpt/actions/di/execute_nb_code.py
similarity index 71%
rename from metagpt/actions/ci/execute_nb_code.py
rename to metagpt/actions/di/execute_nb_code.py
index 0ff00de8f..0cf16b70f 100644
--- a/metagpt/actions/ci/execute_nb_code.py
+++ b/metagpt/actions/di/execute_nb_code.py
@@ -9,7 +9,6 @@ from __future__ import annotations
import asyncio
import base64
import re
-import traceback
from typing import Literal, Tuple
import nbformat
@@ -58,7 +57,23 @@ class ExecuteNbCode(Action):
async def terminate(self):
"""kill NotebookClient"""
- await self.nb_client._async_cleanup_kernel()
+ if self.nb_client.km is not None and await self.nb_client.km.is_alive():
+ await self.nb_client.km.shutdown_kernel(now=True)
+ await self.nb_client.km.cleanup_resources()
+
+ channels = [
+ self.nb_client.kc.stdin_channel, # The channel for handling standard input to the kernel.
+ self.nb_client.kc.hb_channel, # The channel for heartbeat communication between the kernel and client.
+ self.nb_client.kc.control_channel, # The channel for controlling the kernel.
+ ]
+
+ # Stops all the running channels for this kernel
+ for channel in channels:
+ if channel.is_alive():
+ channel.stop()
+
+ self.nb_client.kc = None
+ self.nb_client.km = None
async def reset(self):
"""reset NotebookClient"""
@@ -91,17 +106,17 @@ class ExecuteNbCode(Action):
else:
cell["outputs"].append(new_output(output_type="stream", name="stdout", text=str(output)))
- def parse_outputs(self, outputs: list[str]) -> str:
+ def parse_outputs(self, outputs: list[str], keep_len: int = 2000) -> Tuple[bool, str]:
"""Parses the outputs received from notebook execution."""
assert isinstance(outputs, list)
- parsed_output = ""
-
+ parsed_output, is_success = [], True
for i, output in enumerate(outputs):
+ output_text = ""
if output["output_type"] == "stream" and not any(
tag in output["text"]
- for tag in ["| INFO | metagpt", "| ERROR | metagpt", "| WARNING | metagpt"]
+ for tag in ["| INFO | metagpt", "| ERROR | metagpt", "| WARNING | metagpt", "DEBUG"]
):
- parsed_output += output["text"]
+ output_text = output["text"]
elif output["output_type"] == "display_data":
if "image/png" in output["data"]:
self.show_bytes_figure(output["data"]["image/png"], self.interaction)
@@ -110,8 +125,22 @@ class ExecuteNbCode(Action):
f"{i}th output['data'] from nbclient outputs dont have image/png, continue next output ..."
)
elif output["output_type"] == "execute_result":
- parsed_output += output["data"]["text/plain"]
- return parsed_output
+ output_text = output["data"]["text/plain"]
+ elif output["output_type"] == "error":
+ output_text, is_success = "\n".join(output["traceback"]), False
+
+ # handle coroutines that are not executed asynchronously
+ if output_text.strip().startswith(" Tuple[str, bool]:
"""
@@ -173,16 +202,9 @@ class ExecuteNbCode(Action):
# run code
cell_index = len(self.nb.cells) - 1
- success, error_message = await self.run_cell(self.nb.cells[-1], cell_index)
+ success, outputs = await self.run_cell(self.nb.cells[-1], cell_index)
- if not success:
- return truncate(remove_escape_and_color_codes(error_message), is_success=success)
-
- # code success
- outputs = self.parse_outputs(self.nb.cells[-1].outputs)
- outputs, success = truncate(remove_escape_and_color_codes(outputs), is_success=success)
-
- if "!pip" in outputs:
+ if "!pip" in code:
success = False
return outputs, success
@@ -196,54 +218,39 @@ class ExecuteNbCode(Action):
raise ValueError(f"Only support for language: python, markdown, but got {language}, ")
-def truncate(result: str, keep_len: int = 2000, is_success: bool = True):
- """对于超出keep_len个字符的result: 执行失败的代码, 展示result后keep_len个字符; 执行成功的代码, 展示result前keep_len个字符。"""
- if is_success:
- desc = f"Executed code successfully. Truncated to show only first {keep_len} characters\n"
- else:
- desc = f"Executed code failed, please reflect the cause of bug and then debug. Truncated to show only last {keep_len} characters\n"
-
- if result.strip().startswith(" keep_len:
- result = result[-keep_len:] if not is_success else result[:keep_len]
- return desc + result, is_success
-
- return result, is_success
-
-
def remove_escape_and_color_codes(input_str: str):
- # 使用正则表达式去除转义字符和颜色代码
+ # 使用正则表达式去除jupyter notebook输出结果中的转义字符和颜色代码
+ # Use regular expressions to get rid of escape characters and color codes in jupyter notebook output.
pattern = re.compile(r"\x1b\[[0-9;]*[mK]")
result = pattern.sub("", input_str)
return result
def display_markdown(content: str):
- # 使用正则表达式逐个匹配代码块
+ # Use regular expressions to match blocks of code one by one.
matches = re.finditer(r"```(.+?)```", content, re.DOTALL)
start_index = 0
content_panels = []
- # 逐个打印匹配到的文本和代码
+ # Set the text background color and text color.
+ style = "black on white"
+ # Print the matching text and code one by one.
for match in matches:
text_content = content[start_index : match.start()].strip()
code_content = match.group(0).strip()[3:-3] # Remove triple backticks
if text_content:
- content_panels.append(Panel(Markdown(text_content), box=MINIMAL))
+ content_panels.append(Panel(Markdown(text_content), style=style, box=MINIMAL))
if code_content:
- content_panels.append(Panel(Markdown(f"```{code_content}"), box=MINIMAL))
+ content_panels.append(Panel(Markdown(f"```{code_content}"), style=style, box=MINIMAL))
start_index = match.end()
- # 打印剩余文本(如果有)
+ # Print remaining text (if any).
remaining_text = content[start_index:].strip()
if remaining_text:
- content_panels.append(Panel(Markdown(remaining_text), box=MINIMAL))
+ content_panels.append(Panel(Markdown(remaining_text), style=style, box=MINIMAL))
- # 在Live模式中显示所有Panel
+ # Display all panels in Live mode.
with Live(auto_refresh=False, console=Console(), vertical_overflow="visible") as live:
live.update(Group(*content_panels))
live.refresh()
diff --git a/metagpt/actions/di/write_analysis_code.py b/metagpt/actions/di/write_analysis_code.py
new file mode 100644
index 000000000..711e56d39
--- /dev/null
+++ b/metagpt/actions/di/write_analysis_code.py
@@ -0,0 +1,73 @@
+# -*- encoding: utf-8 -*-
+"""
+@Date : 2023/11/20 13:19:39
+@Author : orange-crow
+@File : write_analysis_code.py
+"""
+from __future__ import annotations
+
+import json
+
+from metagpt.actions import Action
+from metagpt.prompts.di.write_analysis_code import (
+ CHECK_DATA_PROMPT,
+ DEBUG_REFLECTION_EXAMPLE,
+ INTERPRETER_SYSTEM_MSG,
+ REFLECTION_PROMPT,
+ REFLECTION_SYSTEM_MSG,
+ STRUCTUAL_PROMPT,
+)
+from metagpt.schema import Message, Plan
+from metagpt.utils.common import CodeParser, remove_comments
+
+
+class WriteAnalysisCode(Action):
+ async def _debug_with_reflection(self, context: list[Message], working_memory: list[Message]):
+ reflection_prompt = REFLECTION_PROMPT.format(
+ debug_example=DEBUG_REFLECTION_EXAMPLE,
+ context=context,
+ previous_impl=working_memory,
+ )
+
+ rsp = await self._aask(reflection_prompt, system_msgs=[REFLECTION_SYSTEM_MSG])
+ reflection = json.loads(CodeParser.parse_code(block=None, text=rsp))
+
+ return reflection["improved_impl"]
+
+ async def run(
+ self,
+ user_requirement: str,
+ plan_status: str = "",
+ tool_info: str = "",
+ working_memory: list[Message] = None,
+ use_reflection: bool = False,
+ **kwargs,
+ ) -> str:
+ structual_prompt = STRUCTUAL_PROMPT.format(
+ user_requirement=user_requirement,
+ plan_status=plan_status,
+ tool_info=tool_info,
+ )
+
+ working_memory = working_memory or []
+ context = self.llm.format_msg([Message(content=structual_prompt, role="user")] + working_memory)
+
+ # LLM call
+ if use_reflection:
+ code = await self._debug_with_reflection(context=context, working_memory=working_memory)
+ else:
+ rsp = await self.llm.aask(context, system_msgs=[INTERPRETER_SYSTEM_MSG], **kwargs)
+ code = CodeParser.parse_code(block=None, text=rsp)
+
+ return code
+
+
+class CheckData(Action):
+ async def run(self, plan: Plan) -> dict:
+ finished_tasks = plan.get_finished_tasks()
+ code_written = [remove_comments(task.code) for task in finished_tasks]
+ code_written = "\n\n".join(code_written)
+ prompt = CHECK_DATA_PROMPT.format(code_written=code_written)
+ rsp = await self._aask(prompt)
+ code = CodeParser.parse_code(block=None, text=rsp)
+ return code
diff --git a/metagpt/actions/ci/write_plan.py b/metagpt/actions/di/write_plan.py
similarity index 57%
rename from metagpt/actions/ci/write_plan.py
rename to metagpt/actions/di/write_plan.py
index dd9363260..2dbe3f0e7 100644
--- a/metagpt/actions/ci/write_plan.py
+++ b/metagpt/actions/di/write_plan.py
@@ -12,81 +12,49 @@ from typing import Tuple
from metagpt.actions import Action
from metagpt.logs import logger
-from metagpt.prompts.ci.write_analysis_code import (
- ASSIGN_TASK_TYPE_CONFIG,
- ASSIGN_TASK_TYPE_PROMPT,
-)
from metagpt.schema import Message, Plan, Task
-from metagpt.tools import TOOL_REGISTRY
-from metagpt.utils.common import CodeParser, create_func_call_config
+from metagpt.strategy.task_type import TaskType
+from metagpt.utils.common import CodeParser
class WritePlan(Action):
PROMPT_TEMPLATE: str = """
# Context:
- __context__
+ {context}
+ # Available Task Types:
+ {task_type_desc}
# Task:
- Based on the context, write a plan or modify an existing plan of what you should do to achieve the goal. A plan consists of one to __max_tasks__ tasks.
+ Based on the context, write a plan or modify an existing plan of what you should do to achieve the goal. A plan consists of one to {max_tasks} tasks.
If you are modifying an existing plan, carefully follow the instruction, don't make unnecessary changes. Give the whole plan unless instructed to modify only one task of the plan.
If you encounter errors on the current task, revise and output the current single task only.
Output a list of jsons following the format:
```json
[
- {
+ {{
"task_id": str = "unique identifier for a task in plan, can be an ordinal",
"dependent_task_ids": list[str] = "ids of tasks prerequisite to this task",
"instruction": "what you should do in this task, one short phrase or sentence",
- },
+ "task_type": "type of this task, should be one of Available Task Types",
+ }},
...
]
```
"""
- async def assign_task_type(self, tasks: list[dict]) -> str:
- """Assign task type to each task in tasks
-
- Args:
- tasks (list[dict]): tasks to be assigned task type
-
- Returns:
- str: tasks with task type assigned in a json string
- """
- task_info = "\n".join([f"Task {task['task_id']}: {task['instruction']}" for task in tasks])
- task_type_desc = "\n".join(
- [f"- **{tool_type.name}**: {tool_type.desc}" for tool_type in TOOL_REGISTRY.get_tool_types().values()]
- ) # task type are binded with tool type now, should be improved in the future
- prompt = ASSIGN_TASK_TYPE_PROMPT.format(
- task_info=task_info, task_type_desc=task_type_desc
- ) # task types are set to be the same as tool types, for now
- tool_config = create_func_call_config(ASSIGN_TASK_TYPE_CONFIG)
- rsp = await self.llm.aask_code(prompt, **tool_config)
- task_type_list = rsp["task_type"]
- logger.info(f"assigned task types: {task_type_list}")
- for task, task_type in zip(tasks, task_type_list):
- task["task_type"] = task_type
- return json.dumps(tasks)
-
- async def run(self, context: list[Message], max_tasks: int = 5, use_tools: bool = False) -> str:
- prompt = (
- self.PROMPT_TEMPLATE.replace("__context__", "\n".join([str(ct) for ct in context]))
- # .replace("__current_plan__", current_plan)
- .replace("__max_tasks__", str(max_tasks))
+ async def run(self, context: list[Message], max_tasks: int = 5) -> str:
+ task_type_desc = "\n".join([f"- **{tt.type_name}**: {tt.value.desc}" for tt in TaskType])
+ prompt = self.PROMPT_TEMPLATE.format(
+ context="\n".join([str(ct) for ct in context]), max_tasks=max_tasks, task_type_desc=task_type_desc
)
rsp = await self._aask(prompt)
rsp = CodeParser.parse_code(block=None, text=rsp)
- if use_tools:
- rsp = await self.assign_task_type(json.loads(rsp))
return rsp
-def rsp_to_tasks(rsp: str) -> list[Task]:
+def update_plan_from_rsp(rsp: str, current_plan: Plan):
rsp = json.loads(rsp)
tasks = [Task(**task_config) for task_config in rsp]
- return tasks
-
-def update_plan_from_rsp(rsp: str, current_plan: Plan):
- tasks = rsp_to_tasks(rsp)
if len(tasks) == 1 or tasks[0].dependent_task_ids:
if tasks[0].dependent_task_ids and len(tasks) > 1:
# tasks[0].dependent_task_ids means the generated tasks are not a complete plan
diff --git a/metagpt/actions/project_management_an.py b/metagpt/actions/project_management_an.py
index 379a23384..0417c0ce4 100644
--- a/metagpt/actions/project_management_an.py
+++ b/metagpt/actions/project_management_an.py
@@ -8,7 +8,6 @@
from typing import List
from metagpt.actions.action_node import ActionNode
-from metagpt.logs import logger
REQUIRED_PYTHON_PACKAGES = ActionNode(
key="Required Python packages",
@@ -119,14 +118,3 @@ REFINED_NODES = [
PM_NODE = ActionNode.from_children("PM_NODE", NODES)
REFINED_PM_NODE = ActionNode.from_children("REFINED_PM_NODE", REFINED_NODES)
-
-
-def main():
- prompt = PM_NODE.compile(context="")
- logger.info(prompt)
- prompt = REFINED_PM_NODE.compile(context="")
- logger.info(prompt)
-
-
-if __name__ == "__main__":
- main()
diff --git a/metagpt/actions/rebuild_class_view.py b/metagpt/actions/rebuild_class_view.py
index 2140ad874..ff030ec87 100644
--- a/metagpt/actions/rebuild_class_view.py
+++ b/metagpt/actions/rebuild_class_view.py
@@ -4,10 +4,12 @@
@Time : 2023/12/19
@Author : mashenquan
@File : rebuild_class_view.py
-@Desc : Rebuild class view info
+@Desc : Reconstructs class diagram from a source code project.
+ Implement RFC197, https://deepwisdom.feishu.cn/wiki/VyK0wfq56ivuvjklMKJcmHQknGt
"""
-import re
+
from pathlib import Path
+from typing import Optional, Set, Tuple
import aiofiles
@@ -21,86 +23,144 @@ from metagpt.const import (
GRAPH_REPO_FILE_REPO,
)
from metagpt.logs import logger
-from metagpt.repo_parser import RepoParser
-from metagpt.schema import ClassAttribute, ClassMethod, ClassView
-from metagpt.utils.common import split_namespace
+from metagpt.repo_parser import DotClassInfo, RepoParser
+from metagpt.schema import UMLClassView
+from metagpt.utils.common import concat_namespace, split_namespace
from metagpt.utils.di_graph_repository import DiGraphRepository
from metagpt.utils.graph_repository import GraphKeyword, GraphRepository
class RebuildClassView(Action):
+ """
+ Reconstructs a graph repository about class diagram from a source code project.
+
+ Attributes:
+ graph_db (Optional[GraphRepository]): The optional graph repository.
+ """
+
+ graph_db: Optional[GraphRepository] = None
+
async def run(self, with_messages=None, format=config.prompt_schema):
+ """
+ Implementation of `Action`'s `run` method.
+
+ Args:
+ with_messages (Optional[Type]): An optional argument specifying messages to react to.
+ format (str): The format for the prompt schema.
+ """
graph_repo_pathname = self.context.git_repo.workdir / GRAPH_REPO_FILE_REPO / self.context.git_repo.workdir.name
- graph_db = await DiGraphRepository.load_from(str(graph_repo_pathname.with_suffix(".json")))
+ self.graph_db = await DiGraphRepository.load_from(str(graph_repo_pathname.with_suffix(".json")))
repo_parser = RepoParser(base_directory=Path(self.i_context))
# use pylint
class_views, relationship_views, package_root = await repo_parser.rebuild_class_views(path=Path(self.i_context))
- await GraphRepository.update_graph_db_with_class_views(graph_db, class_views)
- await GraphRepository.update_graph_db_with_class_relationship_views(graph_db, relationship_views)
+ await GraphRepository.update_graph_db_with_class_views(self.graph_db, class_views)
+ await GraphRepository.update_graph_db_with_class_relationship_views(self.graph_db, relationship_views)
+ await GraphRepository.rebuild_composition_relationship(self.graph_db)
# use ast
direction, diff_path = self._diff_path(path_root=Path(self.i_context).resolve(), package_root=package_root)
symbols = repo_parser.generate_symbols()
for file_info in symbols:
# Align to the same root directory in accordance with `class_views`.
file_info.file = self._align_root(file_info.file, direction, diff_path)
- await GraphRepository.update_graph_db_with_file_info(graph_db, file_info)
- await self._create_mermaid_class_views(graph_db=graph_db)
- await graph_db.save()
+ await GraphRepository.update_graph_db_with_file_info(self.graph_db, file_info)
+ await self._create_mermaid_class_views()
+ await self.graph_db.save()
- async def _create_mermaid_class_views(self, graph_db):
- path = Path(self.context.git_repo.workdir) / DATA_API_DESIGN_FILE_REPO
+ async def _create_mermaid_class_views(self) -> str:
+ """Creates a Mermaid class diagram using data from the `graph_db` graph repository.
+
+ This method utilizes information stored in the graph repository to generate a Mermaid class diagram.
+ Returns:
+ mermaid class diagram file name.
+ """
+ path = self.context.git_repo.workdir / DATA_API_DESIGN_FILE_REPO
path.mkdir(parents=True, exist_ok=True)
pathname = path / self.context.git_repo.workdir.name
- async with aiofiles.open(str(pathname.with_suffix(".mmd")), mode="w", encoding="utf-8") as writer:
+ filename = str(pathname.with_suffix(".class_diagram.mmd"))
+ async with aiofiles.open(filename, mode="w", encoding="utf-8") as writer:
content = "classDiagram\n"
logger.debug(content)
await writer.write(content)
# class names
- rows = await graph_db.select(predicate=GraphKeyword.IS, object_=GraphKeyword.CLASS)
+ rows = await self.graph_db.select(predicate=GraphKeyword.IS, object_=GraphKeyword.CLASS)
class_distinct = set()
relationship_distinct = set()
for r in rows:
- await RebuildClassView._create_mermaid_class(r.subject, graph_db, writer, class_distinct)
+ content = await self._create_mermaid_class(r.subject)
+ if content:
+ await writer.write(content)
+ class_distinct.add(r.subject)
for r in rows:
- await RebuildClassView._create_mermaid_relationship(r.subject, graph_db, writer, relationship_distinct)
+ content, distinct = await self._create_mermaid_relationship(r.subject)
+ if content:
+ logger.debug(content)
+ await writer.write(content)
+ relationship_distinct.update(distinct)
+ logger.info(f"classes: {len(class_distinct)}, relationship: {len(relationship_distinct)}")
- @staticmethod
- async def _create_mermaid_class(ns_class_name, graph_db, file_writer, distinct):
+ if self.i_context:
+ r_filename = Path(filename).relative_to(self.context.git_repo.workdir)
+ await self.graph_db.insert(
+ subject=self.i_context, predicate="hasMermaidClassDiagramFile", object_=str(r_filename)
+ )
+ logger.info(f"{self.i_context} hasMermaidClassDiagramFile {filename}")
+ return filename
+
+ async def _create_mermaid_class(self, ns_class_name) -> str:
+ """Generates a Mermaid class diagram for a specific class using data from the `graph_db` graph repository.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed name of the class for which the Mermaid class diagram is to be created.
+
+ Returns:
+ str: A Mermaid code block object in markdown representing the class diagram.
+ """
fields = split_namespace(ns_class_name)
if len(fields) > 2:
# Ignore sub-class
- return
+ return ""
- class_view = ClassView(name=fields[1])
- rows = await graph_db.select(subject=ns_class_name)
- for r in rows:
- name = split_namespace(r.object_)[-1]
- name, visibility, abstraction = RebuildClassView._parse_name(name=name, language="python")
- if r.predicate == GraphKeyword.HAS_CLASS_PROPERTY:
- var_type = await RebuildClassView._parse_variable_type(r.object_, graph_db)
- attribute = ClassAttribute(
- name=name, visibility=visibility, abstraction=bool(abstraction), value_type=var_type
- )
- class_view.attributes.append(attribute)
- elif r.predicate == GraphKeyword.HAS_CLASS_FUNCTION:
- method = ClassMethod(name=name, visibility=visibility, abstraction=bool(abstraction))
- await RebuildClassView._parse_function_args(method, r.object_, graph_db)
- class_view.methods.append(method)
+ rows = await self.graph_db.select(subject=ns_class_name, predicate=GraphKeyword.HAS_DETAIL)
+ if not rows:
+ return ""
+ dot_class_info = DotClassInfo.model_validate_json(rows[0].object_)
+ class_view = UMLClassView.load_dot_class_info(dot_class_info)
- # update graph db
- await graph_db.insert(ns_class_name, GraphKeyword.HAS_CLASS_VIEW, class_view.model_dump_json())
+ # update uml view
+ await self.graph_db.insert(ns_class_name, GraphKeyword.HAS_CLASS_VIEW, class_view.model_dump_json())
+ # update uml isCompositeOf
+ for c in dot_class_info.compositions:
+ await self.graph_db.insert(
+ subject=ns_class_name,
+ predicate=GraphKeyword.IS + COMPOSITION + GraphKeyword.OF,
+ object_=concat_namespace("?", c),
+ )
+
+ # update uml isAggregateOf
+ for a in dot_class_info.aggregations:
+ await self.graph_db.insert(
+ subject=ns_class_name,
+ predicate=GraphKeyword.IS + AGGREGATION + GraphKeyword.OF,
+ object_=concat_namespace("?", a),
+ )
content = class_view.get_mermaid(align=1)
logger.debug(content)
- await file_writer.write(content)
- distinct.add(ns_class_name)
+ return content
- @staticmethod
- async def _create_mermaid_relationship(ns_class_name, graph_db, file_writer, distinct):
+ async def _create_mermaid_relationship(self, ns_class_name: str) -> Tuple[Optional[str], Optional[Set]]:
+ """Generates a Mermaid class relationship diagram for a specific class using data from the `graph_db` graph repository.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed class name for which the Mermaid relationship diagram is to be created.
+
+ Returns:
+ Tuple[str, Set]: A tuple containing the relationship diagram as a string and a set of deduplication.
+ """
s_fields = split_namespace(ns_class_name)
if len(s_fields) > 2:
# Ignore sub-class
- return
+ return None, None
predicates = {GraphKeyword.IS + v + GraphKeyword.OF: v for v in [GENERALIZATION, COMPOSITION, AGGREGATION]}
mappings = {
@@ -109,8 +169,9 @@ class RebuildClassView(Action):
AGGREGATION: " o-- ",
}
content = ""
+ distinct = set()
for p, v in predicates.items():
- rows = await graph_db.select(subject=ns_class_name, predicate=p)
+ rows = await self.graph_db.select(subject=ns_class_name, predicate=p)
for r in rows:
o_fields = split_namespace(r.object_)
if len(o_fields) > 2:
@@ -121,86 +182,26 @@ class RebuildClassView(Action):
distinct.add(link)
content += f"\t{link}\n"
- if content:
- logger.debug(content)
- await file_writer.write(content)
-
- @staticmethod
- def _parse_name(name: str, language="python"):
- pattern = re.compile(r"(.*?)<\/I>")
- result = re.search(pattern, name)
-
- abstraction = ""
- if result:
- name = result.group(1)
- abstraction = "*"
- if name.startswith("__"):
- visibility = "-"
- elif name.startswith("_"):
- visibility = "#"
- else:
- visibility = "+"
- return name, visibility, abstraction
-
- @staticmethod
- async def _parse_variable_type(ns_name, graph_db) -> str:
- rows = await graph_db.select(subject=ns_name, predicate=GraphKeyword.HAS_TYPE_DESC)
- if not rows:
- return ""
- vals = rows[0].object_.replace("'", "").split(":")
- if len(vals) == 1:
- return ""
- val = vals[-1].strip()
- return "" if val == "NoneType" else val + " "
-
- @staticmethod
- async def _parse_function_args(method: ClassMethod, ns_name: str, graph_db: GraphRepository):
- rows = await graph_db.select(subject=ns_name, predicate=GraphKeyword.HAS_ARGS_DESC)
- if not rows:
- return
- info = rows[0].object_.replace("'", "")
-
- fs_tag = "("
- ix = info.find(fs_tag)
- fe_tag = "):"
- eix = info.rfind(fe_tag)
- if eix < 0:
- fe_tag = ")"
- eix = info.rfind(fe_tag)
- args_info = info[ix + len(fs_tag) : eix].strip()
- method.return_type = info[eix + len(fe_tag) :].strip()
- if method.return_type == "None":
- method.return_type = ""
- if "(" in method.return_type:
- method.return_type = method.return_type.replace("(", "Tuple[").replace(")", "]")
-
- # parse args
- if not args_info:
- return
- splitter_ixs = []
- cost = 0
- for i in range(len(args_info)):
- if args_info[i] == "[":
- cost += 1
- elif args_info[i] == "]":
- cost -= 1
- if args_info[i] == "," and cost == 0:
- splitter_ixs.append(i)
- splitter_ixs.append(len(args_info))
- args = []
- ix = 0
- for eix in splitter_ixs:
- args.append(args_info[ix:eix])
- ix = eix + 1
- for arg in args:
- parts = arg.strip().split(":")
- if len(parts) == 1:
- method.args.append(ClassAttribute(name=parts[0].strip()))
- continue
- method.args.append(ClassAttribute(name=parts[0].strip(), value_type=parts[-1].strip()))
+ return content, distinct
@staticmethod
def _diff_path(path_root: Path, package_root: Path) -> (str, str):
+ """Returns the difference between the root path and the path information represented in the package name.
+
+ Args:
+ path_root (Path): The root path.
+ package_root (Path): The package root path.
+
+ Returns:
+ Tuple[str, str]: A tuple containing the representation of the difference ("+", "-", "=") and the path detail of the differing part.
+
+ Example:
+ >>> _diff_path(path_root=Path("/Users/x/github/MetaGPT"), package_root=Path("/Users/x/github/MetaGPT/metagpt"))
+ "-", "metagpt"
+
+ >>> _diff_path(path_root=Path("/Users/x/github/MetaGPT/metagpt"), package_root=Path("/Users/x/github/MetaGPT/metagpt"))
+ "=", "."
+ """
if len(str(path_root)) > len(str(package_root)):
return "+", str(path_root.relative_to(package_root))
if len(str(path_root)) < len(str(package_root)):
@@ -208,7 +209,24 @@ class RebuildClassView(Action):
return "=", "."
@staticmethod
- def _align_root(path: str, direction: str, diff_path: str):
+ def _align_root(path: str, direction: str, diff_path: str) -> str:
+ """Aligns the path to the same root represented by `diff_path`.
+
+ Args:
+ path (str): The path to be aligned.
+ direction (str): The direction of alignment ('+', '-', '=').
+ diff_path (str): The path representing the difference.
+
+ Returns:
+ str: The aligned path.
+
+ Example:
+ >>> _align_root(path="metagpt/software_company.py", direction="+", diff_path="MetaGPT")
+ "MetaGPT/metagpt/software_company.py"
+
+ >>> _align_root(path="metagpt/software_company.py", direction="-", diff_path="metagpt")
+ "software_company.py"
+ """
if direction == "=":
return path
if direction == "+":
diff --git a/metagpt/actions/rebuild_sequence_view.py b/metagpt/actions/rebuild_sequence_view.py
index 777dde8ce..0e67de908 100644
--- a/metagpt/actions/rebuild_sequence_view.py
+++ b/metagpt/actions/rebuild_sequence_view.py
@@ -4,34 +4,214 @@
@Time : 2024/1/4
@Author : mashenquan
@File : rebuild_sequence_view.py
-@Desc : Rebuild sequence view info
+@Desc : Reconstruct sequence view information through reverse engineering.
+ Implement RFC197, https://deepwisdom.feishu.cn/wiki/VyK0wfq56ivuvjklMKJcmHQknGt
"""
from __future__ import annotations
+import re
+from datetime import datetime
from pathlib import Path
-from typing import List
+from typing import List, Optional, Set
+
+from pydantic import BaseModel
+from tenacity import retry, stop_after_attempt, wait_random_exponential
from metagpt.actions import Action
from metagpt.config2 import config
from metagpt.const import GRAPH_REPO_FILE_REPO
from metagpt.logs import logger
-from metagpt.utils.common import aread, list_files
+from metagpt.repo_parser import CodeBlockInfo, DotClassInfo
+from metagpt.schema import UMLClassView
+from metagpt.utils.common import (
+ add_affix,
+ aread,
+ auto_namespace,
+ concat_namespace,
+ general_after_log,
+ list_files,
+ parse_json_code_block,
+ read_file_block,
+ split_namespace,
+)
from metagpt.utils.di_graph_repository import DiGraphRepository
-from metagpt.utils.graph_repository import GraphKeyword
+from metagpt.utils.graph_repository import SPO, GraphKeyword, GraphRepository
+
+
+class ReverseUseCase(BaseModel):
+ """
+ Represents a reverse engineered use case.
+
+ Attributes:
+ description (str): A description of the reverse use case.
+ inputs (List[str]): List of inputs for the reverse use case.
+ outputs (List[str]): List of outputs for the reverse use case.
+ actors (List[str]): List of actors involved in the reverse use case.
+ steps (List[str]): List of steps for the reverse use case.
+ reason (str): The reason behind the reverse use case.
+ """
+
+ description: str
+ inputs: List[str]
+ outputs: List[str]
+ actors: List[str]
+ steps: List[str]
+ reason: str
+
+
+class ReverseUseCaseDetails(BaseModel):
+ """
+ Represents details of a reverse engineered use case.
+
+ Attributes:
+ description (str): A description of the reverse use case details.
+ use_cases (List[ReverseUseCase]): List of reverse use cases.
+ relationship (List[str]): List of relationships associated with the reverse use case details.
+ """
+
+ description: str
+ use_cases: List[ReverseUseCase]
+ relationship: List[str]
class RebuildSequenceView(Action):
- async def run(self, with_messages=None, format=config.prompt_schema):
- graph_repo_pathname = self.context.git_repo.workdir / GRAPH_REPO_FILE_REPO / self.context.git_repo.workdir.name
- graph_db = await DiGraphRepository.load_from(str(graph_repo_pathname.with_suffix(".json")))
- entries = await RebuildSequenceView._search_main_entry(graph_db)
- for entry in entries:
- await self._rebuild_sequence_view(entry, graph_db)
- await graph_db.save()
+ """
+ Represents an action to reconstruct sequence view through reverse engineering.
- @staticmethod
- async def _search_main_entry(graph_db) -> List:
- rows = await graph_db.select(predicate=GraphKeyword.HAS_PAGE_INFO)
+ Attributes:
+ graph_db (Optional[GraphRepository]): An optional instance of GraphRepository for graph database operations.
+ """
+
+ graph_db: Optional[GraphRepository] = None
+
+ async def run(self, with_messages=None, format=config.prompt_schema):
+ """
+ Implementation of `Action`'s `run` method.
+
+ Args:
+ with_messages (Optional[Type]): An optional argument specifying messages to react to.
+ format (str): The format for the prompt schema.
+ """
+ graph_repo_pathname = self.context.git_repo.workdir / GRAPH_REPO_FILE_REPO / self.context.git_repo.workdir.name
+ self.graph_db = await DiGraphRepository.load_from(str(graph_repo_pathname.with_suffix(".json")))
+ if not self.i_context:
+ entries = await self._search_main_entry()
+ else:
+ entries = [SPO(subject=self.i_context, predicate="", object_="")]
+ for entry in entries:
+ await self._rebuild_main_sequence_view(entry)
+ while await self._merge_sequence_view(entry):
+ pass
+ await self.graph_db.save()
+
+ @retry(
+ wait=wait_random_exponential(min=1, max=20),
+ stop=stop_after_attempt(6),
+ after=general_after_log(logger),
+ )
+ async def _rebuild_main_sequence_view(self, entry: SPO):
+ """
+ Reconstruct the sequence diagram for the __main__ entry of the source code through reverse engineering.
+
+ Args:
+ entry (SPO): The SPO (Subject, Predicate, Object) object in the graph database that is related to the
+ subject `__name__:__main__`.
+ """
+ filename = entry.subject.split(":", 1)[0]
+ rows = await self.graph_db.select(predicate=GraphKeyword.IS, object_=GraphKeyword.CLASS)
+ classes = []
+ prefix = filename + ":"
+ for r in rows:
+ if prefix in r.subject:
+ classes.append(r)
+ await self._rebuild_use_case(r.subject)
+ participants = await self._search_participants(split_namespace(entry.subject)[0])
+ class_details = []
+ class_views = []
+ for c in classes:
+ detail = await self._get_class_detail(c.subject)
+ if not detail:
+ continue
+ class_details.append(detail)
+ view = await self._get_uml_class_view(c.subject)
+ if view:
+ class_views.append(view)
+
+ actors = await self._get_participants(c.subject)
+ participants.update(set(actors))
+
+ use_case_blocks = []
+ for c in classes:
+ use_cases = await self._get_class_use_cases(c.subject)
+ use_case_blocks.append(use_cases)
+ prompt_blocks = ["## Use Cases\n" + "\n".join(use_case_blocks)]
+ block = "## Participants\n"
+ for p in participants:
+ block += f"- {p}\n"
+ prompt_blocks.append(block)
+ block = "## Mermaid Class Views\n```mermaid\n"
+ block += "\n\n".join([c.get_mermaid() for c in class_views])
+ block += "\n```\n"
+ prompt_blocks.append(block)
+ block = "## Source Code\n```python\n"
+ block += await self._get_source_code(filename)
+ block += "\n```\n"
+ prompt_blocks.append(block)
+ prompt = "\n---\n".join(prompt_blocks)
+
+ rsp = await self.llm.aask(
+ msg=prompt,
+ system_msgs=[
+ "You are a python code to Mermaid Sequence Diagram translator in function detail.",
+ "Translate the given markdown text to a Mermaid Sequence Diagram.",
+ "Return the merged Mermaid sequence diagram in a markdown code block format.",
+ ],
+ stream=False,
+ )
+ sequence_view = rsp.removeprefix("```mermaid").removesuffix("```")
+ rows = await self.graph_db.select(subject=entry.subject, predicate=GraphKeyword.HAS_SEQUENCE_VIEW)
+ for r in rows:
+ if r.predicate == GraphKeyword.HAS_SEQUENCE_VIEW:
+ await self.graph_db.delete(subject=r.subject, predicate=r.predicate, object_=r.object_)
+ await self.graph_db.insert(
+ subject=entry.subject, predicate=GraphKeyword.HAS_SEQUENCE_VIEW, object_=sequence_view
+ )
+ await self.graph_db.insert(
+ subject=entry.subject,
+ predicate=GraphKeyword.HAS_SEQUENCE_VIEW_VER,
+ object_=concat_namespace(datetime.now().strftime("%Y%m%d%H%M%S%f")[:-3], add_affix(sequence_view)),
+ )
+ for c in classes:
+ await self.graph_db.insert(
+ subject=entry.subject, predicate=GraphKeyword.HAS_PARTICIPANT, object_=auto_namespace(c.subject)
+ )
+ await self._save_sequence_view(subject=entry.subject, content=sequence_view)
+
+ async def _merge_sequence_view(self, entry: SPO) -> bool:
+ """
+ Augments additional information to the provided SPO (Subject, Predicate, Object) entry in the sequence diagram.
+
+ Args:
+ entry (SPO): The SPO object representing the relationship in the graph database.
+
+ Returns:
+ bool: True if additional information has been augmented, otherwise False.
+ """
+ new_participant = await self._search_new_participant(entry)
+ if not new_participant:
+ return False
+
+ await self._merge_participant(entry, new_participant)
+ return True
+
+ async def _search_main_entry(self) -> List:
+ """
+ Asynchronously searches for the SPO object that is related to `__name__:__main__`.
+
+ Returns:
+ List: A list containing information about the main entry in the sequence diagram.
+ """
+ rows = await self.graph_db.select(predicate=GraphKeyword.HAS_PAGE_INFO)
tag = "__name__:__main__"
entries = []
for r in rows:
@@ -39,24 +219,395 @@ class RebuildSequenceView(Action):
entries.append(r)
return entries
- async def _rebuild_sequence_view(self, entry, graph_db):
- filename = entry.subject.split(":", 1)[0]
- src_filename = RebuildSequenceView._get_full_filename(root=self.i_context, pathname=filename)
- if not src_filename:
+ @retry(
+ wait=wait_random_exponential(min=1, max=20),
+ stop=stop_after_attempt(6),
+ after=general_after_log(logger),
+ )
+ async def _rebuild_use_case(self, ns_class_name: str):
+ """
+ Asynchronously reconstructs the use case for the provided namespace-prefixed class name.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed class name for which the use case is to be reconstructed.
+ """
+ rows = await self.graph_db.select(subject=ns_class_name, predicate=GraphKeyword.HAS_CLASS_USE_CASE)
+ if rows:
return
- content = await aread(filename=src_filename, encoding="utf-8")
- content = f"```python\n{content}\n```\n\n---\nTranslate the code above into Mermaid Sequence Diagram."
- data = await self.llm.aask(
- msg=content, system_msgs=["You are a python code to Mermaid Sequence Diagram translator in function detail"]
+
+ detail = await self._get_class_detail(ns_class_name)
+ if not detail:
+ return
+ participants = set()
+ participants.update(set(detail.compositions))
+ participants.update(set(detail.aggregations))
+ class_view = await self._get_uml_class_view(ns_class_name)
+ source_code = await self._get_source_code(ns_class_name)
+
+ # prompt_blocks = [
+ # "## Instruction\n"
+ # "You are a python code to UML 2.0 Use Case translator.\n"
+ # 'The generated UML 2.0 Use Case must include the roles or entities listed in "Participants".\n'
+ # "The functional descriptions of Actors and Use Cases in the generated UML 2.0 Use Case must not "
+ # 'conflict with the information in "Mermaid Class Views".\n'
+ # 'The section under `if __name__ == "__main__":` of "Source Code" contains information about external '
+ # "system interactions with the internal system.\n"
+ # ]
+ prompt_blocks = []
+ block = "## Participants\n"
+ for p in participants:
+ block += f"- {p}\n"
+ prompt_blocks.append(block)
+ block = "## Mermaid Class Views\n```mermaid\n"
+ block += class_view.get_mermaid()
+ block += "\n```\n"
+ prompt_blocks.append(block)
+ block = "## Source Code\n```python\n"
+ block += source_code
+ block += "\n```\n"
+ prompt_blocks.append(block)
+ prompt = "\n---\n".join(prompt_blocks)
+
+ rsp = await self.llm.aask(
+ msg=prompt,
+ system_msgs=[
+ "You are a python code to UML 2.0 Use Case translator.",
+ 'The generated UML 2.0 Use Case must include the roles or entities listed in "Participants".',
+ "The functional descriptions of Actors and Use Cases in the generated UML 2.0 Use Case must not "
+ 'conflict with the information in "Mermaid Class Views".',
+ 'The section under `if __name__ == "__main__":` of "Source Code" contains information about external '
+ "system interactions with the internal system.",
+ "Return a markdown JSON object with:\n"
+ '- a "description" key to explain what the whole source code want to do;\n'
+ '- a "use_cases" key list all use cases, each use case in the list should including a `description` '
+ "key describes about what the use case to do, a `inputs` key lists the input names of the use case "
+ "from external sources, a `outputs` key lists the output names of the use case to external sources, "
+ "a `actors` key lists the participant actors of the use case, a `steps` key lists the steps about how "
+ "the use case works step by step, a `reason` key explaining under what circumstances would the "
+ "external system execute this use case.\n"
+ '- a "relationship" key lists all the descriptions of relationship among these use cases.\n',
+ ],
+ stream=False,
+ )
+
+ code_blocks = parse_json_code_block(rsp)
+ for block in code_blocks:
+ detail = ReverseUseCaseDetails.model_validate_json(block)
+ await self.graph_db.insert(
+ subject=ns_class_name, predicate=GraphKeyword.HAS_CLASS_USE_CASE, object_=detail.model_dump_json()
+ )
+
+ @retry(
+ wait=wait_random_exponential(min=1, max=20),
+ stop=stop_after_attempt(6),
+ after=general_after_log(logger),
+ )
+ async def _rebuild_sequence_view(self, ns_class_name: str):
+ """
+ Asynchronously reconstructs the sequence diagram for the provided namespace-prefixed class name.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed class name for which the sequence diagram is to be reconstructed.
+ """
+ await self._rebuild_use_case(ns_class_name)
+
+ prompts_blocks = []
+ use_case_markdown = await self._get_class_use_cases(ns_class_name)
+ if not use_case_markdown: # external class
+ await self.graph_db.insert(subject=ns_class_name, predicate=GraphKeyword.HAS_SEQUENCE_VIEW, object_="")
+ return
+ block = f"## Use Cases\n{use_case_markdown}"
+ prompts_blocks.append(block)
+
+ participants = await self._get_participants(ns_class_name)
+ block = "## Participants\n" + "\n".join([f"- {s}" for s in participants])
+ prompts_blocks.append(block)
+
+ view = await self._get_uml_class_view(ns_class_name)
+ block = "## Mermaid Class Views\n```mermaid\n"
+ block += view.get_mermaid()
+ block += "\n```\n"
+ prompts_blocks.append(block)
+
+ block = "## Source Code\n```python\n"
+ block += await self._get_source_code(ns_class_name)
+ block += "\n```\n"
+ prompts_blocks.append(block)
+ prompt = "\n---\n".join(prompts_blocks)
+
+ rsp = await self.llm.aask(
+ prompt,
+ system_msgs=[
+ "You are a Mermaid Sequence Diagram translator in function detail.",
+ "Translate the markdown text to a Mermaid Sequence Diagram.",
+ "Return a markdown mermaid code block.",
+ ],
+ stream=False,
+ )
+
+ sequence_view = rsp.removeprefix("```mermaid").removesuffix("```")
+ await self.graph_db.insert(
+ subject=ns_class_name, predicate=GraphKeyword.HAS_SEQUENCE_VIEW, object_=sequence_view
+ )
+
+ async def _get_participants(self, ns_class_name: str) -> List[str]:
+ """
+ Asynchronously returns the participants list of the sequence diagram for the provided namespace-prefixed SPO
+ object.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed class name for which to retrieve the participants list.
+
+ Returns:
+ List[str]: A list of participants in the sequence diagram.
+ """
+ participants = set()
+ detail = await self._get_class_detail(ns_class_name)
+ if not detail:
+ return []
+ participants.update(set(detail.compositions))
+ participants.update(set(detail.aggregations))
+ return list(participants)
+
+ async def _get_class_use_cases(self, ns_class_name: str) -> str:
+ """
+ Asynchronously assembles the context about the use case information of the namespace-prefixed SPO object.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed class name for which to retrieve use case information.
+
+ Returns:
+ str: A string containing the assembled context about the use case information.
+ """
+ block = ""
+ rows = await self.graph_db.select(subject=ns_class_name, predicate=GraphKeyword.HAS_CLASS_USE_CASE)
+ for i, r in enumerate(rows):
+ detail = ReverseUseCaseDetails.model_validate_json(r.object_)
+ block += f"\n### {i + 1}. {detail.description}"
+ for j, use_case in enumerate(detail.use_cases):
+ block += f"\n#### {i + 1}.{j + 1}. {use_case.description}\n"
+ block += "\n##### Inputs\n" + "\n".join([f"- {s}" for s in use_case.inputs])
+ block += "\n##### Outputs\n" + "\n".join([f"- {s}" for s in use_case.outputs])
+ block += "\n##### Actors\n" + "\n".join([f"- {s}" for s in use_case.actors])
+ block += "\n##### Steps\n" + "\n".join([f"- {s}" for s in use_case.steps])
+ block += "\n#### Use Case Relationship\n" + "\n".join([f"- {s}" for s in detail.relationship])
+ return block + "\n"
+
+ async def _get_class_detail(self, ns_class_name: str) -> DotClassInfo | None:
+ """
+ Asynchronously retrieves the dot format class details of the namespace-prefixed SPO object.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed class name for which to retrieve class details.
+
+ Returns:
+ Union[DotClassInfo, None]: A DotClassInfo object representing the dot format class details,
+ or None if the details are not available.
+ """
+ rows = await self.graph_db.select(subject=ns_class_name, predicate=GraphKeyword.HAS_DETAIL)
+ if not rows:
+ return None
+ dot_class_info = DotClassInfo.model_validate_json(rows[0].object_)
+ return dot_class_info
+
+ async def _get_uml_class_view(self, ns_class_name: str) -> UMLClassView | None:
+ """
+ Asynchronously retrieves the UML 2.0 format class details of the namespace-prefixed SPO object.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed class name for which to retrieve UML class details.
+
+ Returns:
+ Union[UMLClassView, None]: A UMLClassView object representing the UML 2.0 format class details,
+ or None if the details are not available.
+ """
+ rows = await self.graph_db.select(subject=ns_class_name, predicate=GraphKeyword.HAS_CLASS_VIEW)
+ if not rows:
+ return None
+ class_view = UMLClassView.model_validate_json(rows[0].object_)
+ return class_view
+
+ async def _get_source_code(self, ns_class_name: str) -> str:
+ """
+ Asynchronously retrieves the source code of the namespace-prefixed SPO object.
+
+ Args:
+ ns_class_name (str): The namespace-prefixed class name for which to retrieve the source code.
+
+ Returns:
+ str: A string containing the source code of the specified namespace-prefixed class.
+ """
+ rows = await self.graph_db.select(subject=ns_class_name, predicate=GraphKeyword.HAS_PAGE_INFO)
+ filename = split_namespace(ns_class_name=ns_class_name)[0]
+ if not rows:
+ src_filename = RebuildSequenceView._get_full_filename(root=self.i_context, pathname=filename)
+ if not src_filename:
+ return ""
+ return await aread(filename=src_filename, encoding="utf-8")
+ code_block_info = CodeBlockInfo.model_validate_json(rows[0].object_)
+ return await read_file_block(
+ filename=filename, lineno=code_block_info.lineno, end_lineno=code_block_info.end_lineno
)
- await graph_db.insert(subject=filename, predicate=GraphKeyword.HAS_SEQUENCE_VIEW, object_=data)
- logger.info(data)
@staticmethod
def _get_full_filename(root: str | Path, pathname: str | Path) -> Path | None:
+ """
+ Convert package name to the full path of the module.
+
+ Args:
+ root (Union[str, Path]): The root path or string representing the package.
+ pathname (Union[str, Path]): The pathname or string representing the module.
+
+ Returns:
+ Union[Path, None]: The full path of the module, or None if the path cannot be determined.
+
+ Examples:
+ If `root`(workdir) is "/User/xxx/github/MetaGPT/metagpt", and the `pathname` is
+ "metagpt/management/skill_manager.py", then the returned value will be
+ "/User/xxx/github/MetaGPT/metagpt/management/skill_manager.py"
+ """
+ if re.match(r"^/.+", pathname):
+ return pathname
files = list_files(root=root)
postfix = "/" + str(pathname)
for i in files:
if str(i).endswith(postfix):
return i
return None
+
+ @staticmethod
+ def parse_participant(mermaid_sequence_diagram: str) -> List[str]:
+ """
+ Parses the provided Mermaid sequence diagram and returns the list of participants.
+
+ Args:
+ mermaid_sequence_diagram (str): The Mermaid sequence diagram string to be parsed.
+
+ Returns:
+ List[str]: A list of participants extracted from the sequence diagram.
+ """
+ pattern = r"participant ([a-zA-Z\.0-9_]+)"
+ matches = re.findall(pattern, mermaid_sequence_diagram)
+ matches = [re.sub(r"[\\/'\"]+", "", i) for i in matches]
+ return matches
+
+ async def _search_new_participant(self, entry: SPO) -> str | None:
+ """
+ Asynchronously retrieves a participant whose sequence diagram has not been augmented.
+
+ Args:
+ entry (SPO): The SPO object representing the relationship in the graph database.
+
+ Returns:
+ Union[str, None]: A participant whose sequence diagram has not been augmented, or None if not found.
+ """
+ rows = await self.graph_db.select(subject=entry.subject, predicate=GraphKeyword.HAS_SEQUENCE_VIEW)
+ if not rows:
+ return None
+ sequence_view = rows[0].object_
+ rows = await self.graph_db.select(subject=entry.subject, predicate=GraphKeyword.HAS_PARTICIPANT)
+ merged_participants = []
+ for r in rows:
+ name = split_namespace(r.object_)[-1]
+ merged_participants.append(name)
+ participants = self.parse_participant(sequence_view)
+ for p in participants:
+ if p in merged_participants:
+ continue
+ return p
+ return None
+
+ @retry(
+ wait=wait_random_exponential(min=1, max=20),
+ stop=stop_after_attempt(6),
+ after=general_after_log(logger),
+ )
+ async def _merge_participant(self, entry: SPO, class_name: str):
+ """
+ Augments the sequence diagram of `class_name` to the sequence diagram of `entry`.
+
+ Args:
+ entry (SPO): The SPO object representing the base sequence diagram.
+ class_name (str): The class name whose sequence diagram is to be augmented.
+ """
+ rows = await self.graph_db.select(predicate=GraphKeyword.IS, object_=GraphKeyword.CLASS)
+ participants = []
+ for r in rows:
+ name = split_namespace(r.subject)[-1]
+ if name == class_name:
+ participants.append(r)
+ if len(participants) == 0: # external participants
+ await self.graph_db.insert(
+ subject=entry.subject, predicate=GraphKeyword.HAS_PARTICIPANT, object_=concat_namespace("?", class_name)
+ )
+ return
+ if len(participants) > 1:
+ for r in participants:
+ await self.graph_db.insert(
+ subject=entry.subject, predicate=GraphKeyword.HAS_PARTICIPANT, object_=auto_namespace(r.subject)
+ )
+ return
+
+ participant = participants[0]
+ await self._rebuild_sequence_view(participant.subject)
+ sequence_views = await self.graph_db.select(
+ subject=participant.subject, predicate=GraphKeyword.HAS_SEQUENCE_VIEW
+ )
+ if not sequence_views: # external class
+ return
+ rows = await self.graph_db.select(subject=entry.subject, predicate=GraphKeyword.HAS_SEQUENCE_VIEW)
+ prompt = f"```mermaid\n{sequence_views[0].object_}\n```\n---\n```mermaid\n{rows[0].object_}\n```"
+
+ rsp = await self.llm.aask(
+ prompt,
+ system_msgs=[
+ "You are a tool to merge sequence diagrams into one.",
+ "Participants with the same name are considered identical.",
+ "Return the merged Mermaid sequence diagram in a markdown code block format.",
+ ],
+ stream=False,
+ )
+
+ sequence_view = rsp.removeprefix("```mermaid").removesuffix("```")
+ rows = await self.graph_db.select(subject=entry.subject, predicate=GraphKeyword.HAS_SEQUENCE_VIEW)
+ for r in rows:
+ await self.graph_db.delete(subject=r.subject, predicate=r.predicate, object_=r.object_)
+ await self.graph_db.insert(
+ subject=entry.subject, predicate=GraphKeyword.HAS_SEQUENCE_VIEW, object_=sequence_view
+ )
+ await self.graph_db.insert(
+ subject=entry.subject,
+ predicate=GraphKeyword.HAS_SEQUENCE_VIEW_VER,
+ object_=concat_namespace(datetime.now().strftime("%Y%m%d%H%M%S%f")[:-3], add_affix(sequence_view)),
+ )
+ await self.graph_db.insert(
+ subject=entry.subject, predicate=GraphKeyword.HAS_PARTICIPANT, object_=auto_namespace(participant.subject)
+ )
+ await self._save_sequence_view(subject=entry.subject, content=sequence_view)
+
+ async def _save_sequence_view(self, subject: str, content: str):
+ pattern = re.compile(r"[^a-zA-Z0-9]")
+ name = re.sub(pattern, "_", subject)
+ filename = Path(name).with_suffix(".sequence_diagram.mmd")
+ await self.context.repo.resources.data_api_design.save(filename=str(filename), content=content)
+
+ async def _search_participants(self, filename: str) -> Set:
+ content = await self._get_source_code(filename)
+
+ rsp = await self.llm.aask(
+ msg=content,
+ system_msgs=[
+ "You are a tool for listing all class names used in a source file.",
+ "Return a markdown JSON object with: "
+ '- a "class_names" key containing the list of class names used in the file; '
+ '- a "reasons" key lists all reason objects, each object containing a "class_name" key for class name, a "reference" key explaining the line where the class has been used.',
+ ],
+ )
+
+ class _Data(BaseModel):
+ class_names: List[str]
+ reasons: List
+
+ json_blocks = parse_json_code_block(rsp)
+ data = _Data.model_validate_json(json_blocks[0])
+ return set(data.class_names)
diff --git a/metagpt/actions/rebuild_sequence_view_an.py b/metagpt/actions/rebuild_sequence_view_an.py
deleted file mode 100644
index f16431510..000000000
--- a/metagpt/actions/rebuild_sequence_view_an.py
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""
-@Time : 2024/1/4
-@Author : mashenquan
-@File : rebuild_sequence_view_an.py
-"""
-from metagpt.actions.action_node import ActionNode
-from metagpt.utils.mermaid import MMC2
-
-CODE_2_MERMAID_SEQUENCE_DIAGRAM = ActionNode(
- key="Program call flow",
- expected_type=str,
- instruction='Translate the "context" content into "format example" format.',
- example=MMC2,
-)
diff --git a/metagpt/actions/research.py b/metagpt/actions/research.py
index 2ebeadb66..2a99a8d99 100644
--- a/metagpt/actions/research.py
+++ b/metagpt/actions/research.py
@@ -133,8 +133,8 @@ class CollectLinks(Action):
if len(remove) == 0:
break
- model_name = config.get_openai_llm().model
- prompt = reduce_message_length(gen_msg(), model_name, system_text, 4096)
+ model_name = config.llm.model
+ prompt = reduce_message_length(gen_msg(), model_name, system_text, config.llm.max_token)
logger.debug(prompt)
queries = await self._aask(prompt, [system_text])
try:
diff --git a/metagpt/actions/skill_action.py b/metagpt/actions/skill_action.py
index b68596809..078ab008a 100644
--- a/metagpt/actions/skill_action.py
+++ b/metagpt/actions/skill_action.py
@@ -50,6 +50,7 @@ class ArgumentsParingAction(Action):
rsp = await self.llm.aask(
msg=prompt,
system_msgs=["You are a function parser.", "You can convert spoken words into function parameters."],
+ stream=False,
)
logger.debug(f"SKILL:{prompt}\n, RESULT:{rsp}")
self.args = ArgumentsParingAction.parse_arguments(skill_name=self.skill.name, txt=rsp)
diff --git a/metagpt/actions/talk_action.py b/metagpt/actions/talk_action.py
index 0aac1c5a0..81f66f9a1 100644
--- a/metagpt/actions/talk_action.py
+++ b/metagpt/actions/talk_action.py
@@ -92,7 +92,7 @@ class TalkAction(Action):
async def run(self, with_message=None, **kwargs) -> Message:
msg, format_msgs, system_msgs = self.aask_args
- rsp = await self.llm.aask(msg=msg, format_msgs=format_msgs, system_msgs=system_msgs)
+ rsp = await self.llm.aask(msg=msg, format_msgs=format_msgs, system_msgs=system_msgs, stream=False)
self.rsp = Message(content=rsp, role="assistant", cause_by=self)
return self.rsp
diff --git a/metagpt/actions/write_code_plan_and_change_an.py b/metagpt/actions/write_code_plan_and_change_an.py
index 708808050..f99bffd84 100644
--- a/metagpt/actions/write_code_plan_and_change_an.py
+++ b/metagpt/actions/write_code_plan_and_change_an.py
@@ -6,30 +6,44 @@
@File : write_code_plan_and_change_an.py
"""
import os
+from typing import List
from pydantic import Field
from metagpt.actions.action import Action
from metagpt.actions.action_node import ActionNode
+from metagpt.logs import logger
from metagpt.schema import CodePlanAndChangeContext
-CODE_PLAN_AND_CHANGE = ActionNode(
- key="Code Plan And Change",
- expected_type=str,
- instruction="Developing comprehensive and step-by-step incremental development plan, and write Incremental "
- "Change by making a code draft that how to implement incremental development including detailed steps based on the "
- "context. Note: Track incremental changes using mark of '+' or '-' for add/modify/delete code, and conforms to the "
- "output format of git diff",
- example="""
-1. Plan for calculator.py: Enhance the functionality of `calculator.py` by extending it to incorporate methods for subtraction, multiplication, and division. Additionally, implement robust error handling for the division operation to mitigate potential issues related to division by zero.
-```python
+DEVELOPMENT_PLAN = ActionNode(
+ key="Development Plan",
+ expected_type=List[str],
+ instruction="Develop a comprehensive and step-by-step incremental development plan, providing the detail "
+ "changes to be implemented at each step based on the order of 'Task List'",
+ example=[
+ "Enhance the functionality of `calculator.py` by extending it to incorporate methods for subtraction, ...",
+ "Update the existing codebase in main.py to incorporate new API endpoints for subtraction, ...",
+ ],
+)
+
+INCREMENTAL_CHANGE = ActionNode(
+ key="Incremental Change",
+ expected_type=List[str],
+ instruction="Write Incremental Change by making a code draft that how to implement incremental development "
+ "including detailed steps based on the context. Note: Track incremental changes using the marks `+` and `-` to "
+ "indicate additions and deletions, and ensure compliance with the output format of `git diff`",
+ example=[
+ '''```diff
+--- Old/calculator.py
++++ New/calculator.py
+
class Calculator:
self.result = number1 + number2
return self.result
- def sub(self, number1, number2) -> float:
+ def subtract(self, number1: float, number2: float) -> float:
-+ '''
++ """
+ Subtracts the second number from the first and returns the result.
+
+ Args:
@@ -38,13 +52,13 @@ class Calculator:
+
+ Returns:
+ float: The difference of number1 and number2.
-+ '''
++ """
+ self.result = number1 - number2
+ return self.result
+
def multiply(self, number1: float, number2: float) -> float:
- pass
-+ '''
++ """
+ Multiplies two numbers and returns the result.
+
+ Args:
@@ -53,15 +67,15 @@ class Calculator:
+
+ Returns:
+ float: The product of number1 and number2.
-+ '''
++ """
+ self.result = number1 * number2
+ return self.result
+
def divide(self, number1: float, number2: float) -> float:
- pass
-+ '''
++ """
+ ValueError: If the second number is zero.
-+ '''
++ """
+ if number2 == 0:
+ raise ValueError('Cannot divide by zero')
+ self.result = number1 / number2
@@ -75,10 +89,11 @@ class Calculator:
+ print("Result is already zero, no need to clear.")
+
self.result = 0.0
-```
+```''',
+ """```diff
+--- Old/main.py
++++ New/main.py
-2. Plan for main.py: Integrate new API endpoints for subtraction, multiplication, and division into the existing codebase of `main.py`. Then, ensure seamless integration with the overall application architecture and maintain consistency with coding standards.
-```python
def add_numbers():
result = calculator.add_numbers(num1, num2)
return jsonify({'result': result}), 200
@@ -106,6 +121,7 @@ def add_numbers():
if __name__ == '__main__':
app.run()
```""",
+ ],
)
CODE_PLAN_AND_CHANGE_CONTEXT = """
@@ -172,14 +188,16 @@ Role: You are a professional engineer; The main goal is to complete incremental
2. COMPLETE CODE: Your code will be part of the entire project, so please implement complete, reliable, reusable code snippets.
3. Set default value: If there is any setting, ALWAYS SET A DEFAULT VALUE, ALWAYS USE STRONG TYPE AND EXPLICIT VARIABLE. AVOID circular import.
4. Follow design: YOU MUST FOLLOW "Data structures and interfaces". DONT CHANGE ANY DESIGN. Do not use public member functions that do not exist in your design.
-5. Follow Code Plan And Change: If there is any Incremental Change that is marked by the git diff format using '+' and '-' for add/modify/delete code, or Legacy Code files contain "{filename} to be rewritten", you must merge it into the code file according to the plan.
+5. Follow Code Plan And Change: If there is any "Incremental Change" that is marked by the git diff format with '+' and '-' symbols, or Legacy Code files contain "{filename} to be rewritten", you must merge it into the code file according to the "Development Plan".
6. CAREFULLY CHECK THAT YOU DONT MISS ANY NECESSARY CLASS/FUNCTION IN THIS FILE.
7. Before using a external variable/module, make sure you import it first.
8. Write out EVERY CODE DETAIL, DON'T LEAVE TODO.
9. Attention: Retain details that are not related to incremental development but are important for maintaining the consistency and clarity of the old code.
"""
-WRITE_CODE_PLAN_AND_CHANGE_NODE = ActionNode.from_children("WriteCodePlanAndChange", [CODE_PLAN_AND_CHANGE])
+CODE_PLAN_AND_CHANGE = [DEVELOPMENT_PLAN, INCREMENTAL_CHANGE]
+
+WRITE_CODE_PLAN_AND_CHANGE_NODE = ActionNode.from_children("WriteCodePlanAndChange", CODE_PLAN_AND_CHANGE)
class WriteCodePlanAndChange(Action):
@@ -192,14 +210,14 @@ class WriteCodePlanAndChange(Action):
prd_doc = await self.repo.docs.prd.get(filename=self.i_context.prd_filename)
design_doc = await self.repo.docs.system_design.get(filename=self.i_context.design_filename)
task_doc = await self.repo.docs.task.get(filename=self.i_context.task_filename)
- code_text = await self.get_old_codes()
context = CODE_PLAN_AND_CHANGE_CONTEXT.format(
requirement=self.i_context.requirement,
prd=prd_doc.content,
design=design_doc.content,
task=task_doc.content,
- code=code_text,
+ code=await self.get_old_codes(),
)
+ logger.info("Writing code plan and change..")
return await WRITE_CODE_PLAN_AND_CHANGE_NODE.fill(context=context, llm=self.llm, schema="json")
async def get_old_codes(self) -> str:
diff --git a/metagpt/actions/write_prd_an.py b/metagpt/actions/write_prd_an.py
index 9898be55b..5733b29da 100644
--- a/metagpt/actions/write_prd_an.py
+++ b/metagpt/actions/write_prd_an.py
@@ -56,7 +56,7 @@ REFINED_PRODUCT_GOALS = ActionNode(
key="Refined Product Goals",
expected_type=List[str],
instruction="Update and expand the original product goals to reflect the evolving needs due to incremental "
- "development.Ensure that the refined goals align with the current project direction and contribute to its success.",
+ "development. Ensure that the refined goals align with the current project direction and contribute to its success.",
example=[
"Enhance user engagement through new features",
"Optimize performance for scalability",
diff --git a/metagpt/config2.py b/metagpt/config2.py
index bc6af18c6..f3273419f 100644
--- a/metagpt/config2.py
+++ b/metagpt/config2.py
@@ -92,7 +92,7 @@ class Config(CLIParams, YamlModel):
"""
default_config_paths: List[Path] = [
METAGPT_ROOT / "config/config2.yaml",
- Path.home() / ".metagpt/config2.yaml",
+ CONFIG_ROOT / "config2.yaml",
]
dicts = [dict(os.environ)]
@@ -100,6 +100,20 @@ class Config(CLIParams, YamlModel):
final = merge_dict(dicts)
return Config(**final)
+ @classmethod
+ def from_llm_config(cls, llm_config: dict):
+ """user config llm
+ example:
+ llm_config = {"api_type": "xxx", "api_key": "xxx", "model": "xxx"}
+ gpt4 = Config.from_llm_config(llm_config)
+ A = Role(name="A", profile="Democratic candidate", goal="Win the election", actions=[a1], watch=[a2], config=gpt4)
+ """
+ llm_config = LLMConfig.model_validate(llm_config)
+ dicts = [dict(os.environ)]
+ dicts += [{"llm": llm_config}]
+ final = merge_dict(dicts)
+ return Config(**final)
+
def update_via_cli(self, project_path, project_name, inc, reqa_file, max_auto_summarize_code):
"""update config via cli"""
diff --git a/metagpt/configs/llm_config.py b/metagpt/configs/llm_config.py
index fb923d3e4..af8f56372 100644
--- a/metagpt/configs/llm_config.py
+++ b/metagpt/configs/llm_config.py
@@ -10,12 +10,14 @@ from typing import Optional
from pydantic import field_validator
+from metagpt.const import LLM_API_TIMEOUT
from metagpt.utils.yaml_model import YamlModel
class LLMType(Enum):
OPENAI = "openai"
ANTHROPIC = "anthropic"
+ CLAUDE = "claude" # alias name of anthropic
SPARK = "spark"
ZHIPUAI = "zhipuai"
FIREWORKS = "fireworks"
@@ -24,6 +26,11 @@ class LLMType(Enum):
METAGPT = "metagpt"
AZURE = "azure"
OLLAMA = "ollama"
+ QIANFAN = "qianfan" # Baidu BCE
+ DASHSCOPE = "dashscope" # Aliyun LingJi DashScope
+ MOONSHOT = "moonshot"
+ MISTRAL = "mistral"
+ YI = "yi" # lingyiwanwu
def __missing__(self, key):
return self.OPENAI
@@ -36,12 +43,18 @@ class LLMConfig(YamlModel):
Optional Fields in pydantic: https://docs.pydantic.dev/latest/migration/#required-optional-and-nullable-fields
"""
- api_key: str
+ api_key: str = "sk-"
api_type: LLMType = LLMType.OPENAI
base_url: str = "https://api.openai.com/v1"
api_version: Optional[str] = None
model: Optional[str] = None # also stands for DEPLOYMENT_NAME
+ pricing_plan: Optional[str] = None # Cost Settlement Plan Parameters.
+
+ # For Cloud Service Provider like Baidu/ Alibaba
+ access_key: Optional[str] = None
+ secret_key: Optional[str] = None
+ endpoint: Optional[str] = None # for self-deployed model on the cloud
# For Spark(Xunfei), maybe remove later
app_id: Optional[str] = None
@@ -62,7 +75,7 @@ class LLMConfig(YamlModel):
stream: bool = False
logprobs: Optional[bool] = None # https://cookbook.openai.com/examples/using_logprobs
top_logprobs: Optional[int] = None
- timeout: int = 60
+ timeout: int = 600
# For Network
proxy: Optional[str] = None
@@ -76,3 +89,8 @@ class LLMConfig(YamlModel):
if v in ["", None, "YOUR_API_KEY"]:
raise ValueError("Please set your API key in config2.yaml")
return v
+
+ @field_validator("timeout")
+ @classmethod
+ def check_timeout(cls, v):
+ return v or LLM_API_TIMEOUT
diff --git a/metagpt/configs/search_config.py b/metagpt/configs/search_config.py
index af928b02a..e28b14c99 100644
--- a/metagpt/configs/search_config.py
+++ b/metagpt/configs/search_config.py
@@ -7,6 +7,8 @@
"""
from typing import Callable, Optional
+from pydantic import Field
+
from metagpt.tools import SearchEngineType
from metagpt.utils.yaml_model import YamlModel
@@ -18,3 +20,11 @@ class SearchConfig(YamlModel):
api_key: str = ""
cse_id: str = "" # for google
search_func: Optional[Callable] = None
+ params: dict = Field(
+ default_factory=lambda: {
+ "engine": "google",
+ "google_domain": "google.com",
+ "gl": "us",
+ "hl": "en",
+ }
+ )
diff --git a/metagpt/const.py b/metagpt/const.py
index 79c33a84d..e4cebfd96 100644
--- a/metagpt/const.py
+++ b/metagpt/const.py
@@ -49,6 +49,7 @@ METAGPT_ROOT = get_metagpt_root() # Dependent on METAGPT_PROJECT_ROOT
DEFAULT_WORKSPACE_ROOT = METAGPT_ROOT / "workspace"
EXAMPLE_PATH = METAGPT_ROOT / "examples"
+EXAMPLE_DATA_PATH = EXAMPLE_PATH / "data"
DATA_PATH = METAGPT_ROOT / "data"
TEST_DATA_PATH = METAGPT_ROOT / "tests/data"
RESEARCH_PATH = DATA_PATH / "research"
@@ -104,6 +105,7 @@ CODE_SUMMARIES_PDF_FILE_REPO = "resources/code_summary"
RESOURCES_FILE_REPO = "resources"
SD_OUTPUT_FILE_REPO = "resources/sd_output"
GRAPH_REPO_FILE_REPO = "docs/graph_repo"
+VISUAL_GRAPH_REPO_FILE_REPO = "resources/graph_db"
CLASS_VIEW_FILE_REPO = "docs/class_view"
YAPI_URL = "http://yapi.deepwisdomai.com/"
@@ -121,7 +123,6 @@ BASE64_FORMAT = "base64"
# REDIS
REDIS_KEY = "REDIS_KEY"
-LLM_API_TIMEOUT = 300
# Message id
IGNORED_MESSAGE_ID = "0"
@@ -130,3 +131,7 @@ IGNORED_MESSAGE_ID = "0"
GENERALIZATION = "Generalize"
COMPOSITION = "Composite"
AGGREGATION = "Aggregate"
+
+# Timeout
+USE_CONFIG_TIMEOUT = 0 # Using llm.timeout configuration.
+LLM_API_TIMEOUT = 300
diff --git a/metagpt/context.py b/metagpt/context.py
index 3dfd52d58..0add4c71a 100644
--- a/metagpt/context.py
+++ b/metagpt/context.py
@@ -12,10 +12,14 @@ from typing import Any, Optional
from pydantic import BaseModel, ConfigDict
from metagpt.config2 import Config
-from metagpt.configs.llm_config import LLMConfig
+from metagpt.configs.llm_config import LLMConfig, LLMType
from metagpt.provider.base_llm import BaseLLM
from metagpt.provider.llm_provider_registry import create_llm_instance
-from metagpt.utils.cost_manager import CostManager
+from metagpt.utils.cost_manager import (
+ CostManager,
+ FireworksCostManager,
+ TokenCostManager,
+)
from metagpt.utils.git_repository import GitRepository
from metagpt.utils.project_repo import ProjectRepo
@@ -80,12 +84,21 @@ class Context(BaseModel):
# self._llm = None
# return self._llm
+ def _select_costmanager(self, llm_config: LLMConfig) -> CostManager:
+ """Return a CostManager instance"""
+ if llm_config.api_type == LLMType.FIREWORKS:
+ return FireworksCostManager()
+ elif llm_config.api_type == LLMType.OPEN_LLM:
+ return TokenCostManager()
+ else:
+ return self.cost_manager
+
def llm(self) -> BaseLLM:
"""Return a LLM instance, fixme: support cache"""
# if self._llm is None:
self._llm = create_llm_instance(self.config.llm)
if self._llm.cost_manager is None:
- self._llm.cost_manager = self.cost_manager
+ self._llm.cost_manager = self._select_costmanager(self.config.llm)
return self._llm
def llm_with_cost_manager_from_llm_config(self, llm_config: LLMConfig) -> BaseLLM:
@@ -93,5 +106,5 @@ class Context(BaseModel):
# if self._llm is None:
llm = create_llm_instance(llm_config)
if llm.cost_manager is None:
- llm.cost_manager = self.cost_manager
+ llm.cost_manager = self._select_costmanager(llm_config)
return llm
diff --git a/metagpt/document.py b/metagpt/document.py
index f4fa0a489..4a8bb68d5 100644
--- a/metagpt/document.py
+++ b/metagpt/document.py
@@ -11,15 +11,13 @@ from pathlib import Path
from typing import Optional, Union
import pandas as pd
-from langchain.document_loaders import (
- TextLoader,
- UnstructuredPDFLoader,
- UnstructuredWordDocumentLoader,
-)
-from langchain.text_splitter import CharacterTextSplitter
+from llama_index.core import Document, SimpleDirectoryReader
+from llama_index.core.node_parser import SimpleNodeParser
+from llama_index.readers.file import PDFReader
from pydantic import BaseModel, ConfigDict, Field
from tqdm import tqdm
+from metagpt.logs import logger
from metagpt.repo_parser import RepoParser
@@ -28,7 +26,7 @@ def validate_cols(content_col: str, df: pd.DataFrame):
raise ValueError("Content column not found in DataFrame.")
-def read_data(data_path: Path):
+def read_data(data_path: Path) -> Union[pd.DataFrame, list[Document]]:
suffix = data_path.suffix
if ".xlsx" == suffix:
data = pd.read_excel(data_path)
@@ -37,14 +35,13 @@ def read_data(data_path: Path):
elif ".json" == suffix:
data = pd.read_json(data_path)
elif suffix in (".docx", ".doc"):
- data = UnstructuredWordDocumentLoader(str(data_path), mode="elements").load()
+ data = SimpleDirectoryReader(input_files=[str(data_path)]).load_data()
elif ".txt" == suffix:
- data = TextLoader(str(data_path)).load()
- text_splitter = CharacterTextSplitter(separator="\n", chunk_size=256, chunk_overlap=0)
- texts = text_splitter.split_documents(data)
- data = texts
+ data = SimpleDirectoryReader(input_files=[str(data_path)]).load_data()
+ node_parser = SimpleNodeParser.from_defaults(separator="\n", chunk_size=256, chunk_overlap=0)
+ data = node_parser.get_nodes_from_documents(data)
elif ".pdf" == suffix:
- data = UnstructuredPDFLoader(str(data_path), mode="elements").load()
+ data = PDFReader.load_data(str(data_path))
else:
raise NotImplementedError("File format not supported.")
return data
@@ -130,9 +127,12 @@ class IndexableDocument(Document):
if isinstance(data, pd.DataFrame):
validate_cols(content_col, data)
return cls(data=data, content=str(data), content_col=content_col, meta_col=meta_col)
- else:
+ try:
content = data_path.read_text()
- return cls(data=data, content=content, content_col=content_col, meta_col=meta_col)
+ except Exception as e:
+ logger.debug(f"Load {str(data_path)} error: {e}")
+ content = ""
+ return cls(data=data, content=content, content_col=content_col, meta_col=meta_col)
def _get_docs_and_metadatas_by_df(self) -> (list, list):
df = self.data
@@ -146,9 +146,9 @@ class IndexableDocument(Document):
metadatas.append({})
return docs, metadatas
- def _get_docs_and_metadatas_by_langchain(self) -> (list, list):
+ def _get_docs_and_metadatas_by_llamaindex(self) -> (list, list):
data = self.data
- docs = [i.page_content for i in data]
+ docs = [i.text for i in data]
metadatas = [i.metadata for i in data]
return docs, metadatas
@@ -156,7 +156,7 @@ class IndexableDocument(Document):
if isinstance(self.data, pd.DataFrame):
return self._get_docs_and_metadatas_by_df()
elif isinstance(self.data, list):
- return self._get_docs_and_metadatas_by_langchain()
+ return self._get_docs_and_metadatas_by_llamaindex()
else:
raise NotImplementedError("Data type not supported for metadata extraction.")
diff --git a/metagpt/document_store/base_store.py b/metagpt/document_store/base_store.py
index ddc1d626b..6aafc57bb 100644
--- a/metagpt/document_store/base_store.py
+++ b/metagpt/document_store/base_store.py
@@ -38,9 +38,9 @@ class LocalStore(BaseStore, ABC):
if not self.store:
self.store = self.write()
- def _get_index_and_store_fname(self, index_ext=".index", pkl_ext=".pkl"):
- index_file = self.cache_dir / f"{self.fname}{index_ext}"
- store_file = self.cache_dir / f"{self.fname}{pkl_ext}"
+ def _get_index_and_store_fname(self, index_ext=".json", docstore_ext=".json"):
+ index_file = self.cache_dir / "default__vector_store" / index_ext
+ store_file = self.cache_dir / "docstore" / docstore_ext
return index_file, store_file
@abstractmethod
diff --git a/metagpt/document_store/chromadb_store.py b/metagpt/document_store/chromadb_store.py
index d7344d41b..1d3a014ee 100644
--- a/metagpt/document_store/chromadb_store.py
+++ b/metagpt/document_store/chromadb_store.py
@@ -11,9 +11,9 @@ import chromadb
class ChromaStore:
"""If inherited from BaseStore, or importing other modules from metagpt, a Python exception occurs, which is strange."""
- def __init__(self, name):
+ def __init__(self, name: str, get_or_create: bool = False):
client = chromadb.Client()
- collection = client.create_collection(name)
+ collection = client.create_collection(name, get_or_create=get_or_create)
self.client = client
self.collection = collection
diff --git a/metagpt/document_store/faiss_store.py b/metagpt/document_store/faiss_store.py
index 2359917d5..b196bef27 100644
--- a/metagpt/document_store/faiss_store.py
+++ b/metagpt/document_store/faiss_store.py
@@ -7,10 +7,14 @@
"""
import asyncio
from pathlib import Path
-from typing import Optional
+from typing import Any, Optional
-from langchain.vectorstores import FAISS
-from langchain_core.embeddings import Embeddings
+import faiss
+from llama_index.core import VectorStoreIndex, load_index_from_storage
+from llama_index.core.embeddings import BaseEmbedding
+from llama_index.core.schema import Document, QueryBundle, TextNode
+from llama_index.core.storage import StorageContext
+from llama_index.vector_stores.faiss import FaissVectorStore
from metagpt.document import IndexableDocument
from metagpt.document_store.base_store import LocalStore
@@ -20,36 +24,50 @@ from metagpt.utils.embedding import get_embedding
class FaissStore(LocalStore):
def __init__(
- self, raw_data: Path, cache_dir=None, meta_col="source", content_col="output", embedding: Embeddings = None
+ self, raw_data: Path, cache_dir=None, meta_col="source", content_col="output", embedding: BaseEmbedding = None
):
self.meta_col = meta_col
self.content_col = content_col
self.embedding = embedding or get_embedding()
+ self.store: VectorStoreIndex
super().__init__(raw_data, cache_dir)
- def _load(self) -> Optional["FaissStore"]:
- index_file, store_file = self._get_index_and_store_fname(index_ext=".faiss") # langchain FAISS using .faiss
+ def _load(self) -> Optional["VectorStoreIndex"]:
+ index_file, store_file = self._get_index_and_store_fname()
if not (index_file.exists() and store_file.exists()):
logger.info("Missing at least one of index_file/store_file, load failed and return None")
return None
+ vector_store = FaissVectorStore.from_persist_dir(persist_dir=self.cache_dir)
+ storage_context = StorageContext.from_defaults(persist_dir=self.cache_dir, vector_store=vector_store)
+ index = load_index_from_storage(storage_context, embed_model=self.embedding)
- return FAISS.load_local(self.raw_data_path.parent, self.embedding, self.fname)
+ return index
- def _write(self, docs, metadatas):
- store = FAISS.from_texts(docs, self.embedding, metadatas=metadatas)
- return store
+ def _write(self, docs: list[str], metadatas: list[dict[str, Any]]) -> VectorStoreIndex:
+ assert len(docs) == len(metadatas)
+ documents = [Document(text=doc, metadata=metadatas[idx]) for idx, doc in enumerate(docs)]
+
+ vector_store = FaissVectorStore(faiss_index=faiss.IndexFlatL2(1536))
+ storage_context = StorageContext.from_defaults(vector_store=vector_store)
+ index = VectorStoreIndex.from_documents(
+ documents=documents, storage_context=storage_context, embed_model=self.embedding
+ )
+
+ return index
def persist(self):
- self.store.save_local(self.raw_data_path.parent, self.fname)
+ self.store.storage_context.persist(self.cache_dir)
+
+ def search(self, query: str, expand_cols=False, sep="\n", *args, k=5, **kwargs):
+ retriever = self.store.as_retriever(similarity_top_k=k)
+ rsp = retriever.retrieve(QueryBundle(query_str=query, embedding=self.embedding.get_text_embedding(query)))
- def search(self, query, expand_cols=False, sep="\n", *args, k=5, **kwargs):
- rsp = self.store.similarity_search(query, k=k, **kwargs)
logger.debug(rsp)
if expand_cols:
- return str(sep.join([f"{x.page_content}: {x.metadata}" for x in rsp]))
+ return str(sep.join([f"{x.node.text}: {x.node.metadata}" for x in rsp]))
else:
- return str(sep.join([f"{x.page_content}" for x in rsp]))
+ return str(sep.join([f"{x.node.text}" for x in rsp]))
async def asearch(self, *args, **kwargs):
return await asyncio.to_thread(self.search, *args, **kwargs)
@@ -67,8 +85,12 @@ class FaissStore(LocalStore):
def add(self, texts: list[str], *args, **kwargs) -> list[str]:
"""FIXME: Currently, the store is not updated after adding."""
- return self.store.add_texts(texts)
+ texts_embeds = self.embedding.get_text_embedding_batch(texts)
+ nodes = [TextNode(text=texts[idx], embedding=embed) for idx, embed in enumerate(texts_embeds)]
+ self.store.insert_nodes(nodes)
+
+ return []
def delete(self, *args, **kwargs):
- """Currently, langchain does not provide a delete interface."""
+ """Currently, faiss does not provide a delete interface."""
raise NotImplementedError
diff --git a/metagpt/environment/README.md b/metagpt/environment/README.md
index 49b427c44..bb7d50d50 100644
--- a/metagpt/environment/README.md
+++ b/metagpt/environment/README.md
@@ -34,5 +34,5 @@ # do a `tap` action on the screen
## TODO
- add android app operation assistant under `examples/android_assistant`
- migrate roles/actions of werewolf game from old version into current version
-- migrate roles/actions of mincraft game from old version into current version
+- migrate roles/actions of minecraft game from old version into current version
- migrate roles/actions of stanford_town game from old version into current version
diff --git a/metagpt/environment/__init__.py b/metagpt/environment/__init__.py
index 692672fa7..28981f2f8 100644
--- a/metagpt/environment/__init__.py
+++ b/metagpt/environment/__init__.py
@@ -4,10 +4,9 @@
from metagpt.environment.base_env import Environment
from metagpt.environment.android_env.android_env import AndroidEnv
-from metagpt.environment.mincraft_env.mincraft_env import MincraftExtEnv
from metagpt.environment.werewolf_env.werewolf_env import WerewolfEnv
from metagpt.environment.stanford_town_env.stanford_town_env import StanfordTownEnv
from metagpt.environment.software_env.software_env import SoftwareEnv
-__all__ = ["AndroidEnv", "MincraftExtEnv", "WerewolfEnv", "StanfordTownEnv", "SoftwareEnv", "Environment"]
+__all__ = ["AndroidEnv", "WerewolfEnv", "StanfordTownEnv", "SoftwareEnv", "Environment"]
diff --git a/metagpt/environment/base_env.py b/metagpt/environment/base_env.py
index 0e583ffb3..942bf2409 100644
--- a/metagpt/environment/base_env.py
+++ b/metagpt/environment/base_env.py
@@ -26,7 +26,7 @@ class EnvType(Enum):
ANDROID = "Android"
GYM = "Gym"
WEREWOLF = "Werewolf"
- MINCRAFT = "Mincraft"
+ MINECRAFT = "Minecraft"
STANFORDTOWN = "StanfordTown"
@@ -47,7 +47,7 @@ def mark_as_writeable(func):
class ExtEnv(BaseModel):
- """External Env to intergate actual game environment"""
+ """External Env to integrate actual game environment"""
def _check_api_exist(self, rw_api: Optional[str] = None):
if not rw_api:
@@ -129,8 +129,8 @@ class Environment(ExtEnv):
self.roles[role.profile] = role
for role in roles: # setup system message with roles
- role.set_env(self)
role.context = self.context
+ role.set_env(self)
def publish_message(self, message: Message, peekable: bool = True) -> bool:
"""
diff --git a/metagpt/environment/mincraft_env/__init__.py b/metagpt/environment/minecraft_env/__init__.py
similarity index 100%
rename from metagpt/environment/mincraft_env/__init__.py
rename to metagpt/environment/minecraft_env/__init__.py
diff --git a/metagpt/environment/mincraft_env/const.py b/metagpt/environment/minecraft_env/const.py
similarity index 92%
rename from metagpt/environment/mincraft_env/const.py
rename to metagpt/environment/minecraft_env/const.py
index a7222f9cd..8ac15decc 100644
--- a/metagpt/environment/mincraft_env/const.py
+++ b/metagpt/environment/minecraft_env/const.py
@@ -4,8 +4,8 @@
from metagpt.const import METAGPT_ROOT
-# For Mincraft Game Agent
-MC_CKPT_DIR = METAGPT_ROOT / "data/mincraft/ckpt"
+# For Minecraft Game Agent
+MC_CKPT_DIR = METAGPT_ROOT / "data/minecraft/ckpt"
MC_LOG_DIR = METAGPT_ROOT / "logs"
MC_DEFAULT_WARMUP = {
"context": 15,
diff --git a/metagpt/environment/mincraft_env/mincraft_env.py b/metagpt/environment/minecraft_env/minecraft_env.py
similarity index 94%
rename from metagpt/environment/mincraft_env/mincraft_env.py
rename to metagpt/environment/minecraft_env/minecraft_env.py
index 6327aa3f4..26d4d03a8 100644
--- a/metagpt/environment/mincraft_env/mincraft_env.py
+++ b/metagpt/environment/minecraft_env/minecraft_env.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# @Desc : MG Mincraft Env
+# @Desc : MG Minecraft Env
# refs to `voyager voyager.py`
import json
@@ -8,20 +8,19 @@ import re
import time
from typing import Any, Iterable
-from langchain.embeddings.openai import OpenAIEmbeddings
-from langchain.vectorstores import Chroma
from pydantic import ConfigDict, Field
from metagpt.config2 import config as CONFIG
from metagpt.environment.base_env import Environment
-from metagpt.environment.mincraft_env.const import MC_CKPT_DIR
-from metagpt.environment.mincraft_env.mincraft_ext_env import MincraftExtEnv
+from metagpt.environment.minecraft_env.const import MC_CKPT_DIR
+from metagpt.environment.minecraft_env.minecraft_ext_env import MinecraftExtEnv
from metagpt.logs import logger
+from metagpt.rag.vector_stores.chroma import ChromaVectorStore
from metagpt.utils.common import load_mc_skills_code, read_json_file, write_json_file
-class MincraftEnv(Environment, MincraftExtEnv):
- """MincraftEnv, including shared memory of cache and infomation between roles"""
+class MinecraftEnv(Environment, MinecraftExtEnv):
+ """MinecraftEnv, including shared memory of cache and information between roles"""
model_config = ConfigDict(arbitrary_types_allowed=True)
@@ -48,9 +47,9 @@ class MincraftEnv(Environment, MincraftExtEnv):
runtime_status: bool = False # equal to action execution status: success or failed
- vectordb: Chroma = Field(default_factory=Chroma)
+ vectordb: ChromaVectorStore = Field(default_factory=ChromaVectorStore)
- qa_cache_questions_vectordb: Chroma = Field(default_factory=Chroma)
+ qa_cache_questions_vectordb: ChromaVectorStore = Field(default_factory=ChromaVectorStore)
@property
def progress(self):
@@ -73,16 +72,14 @@ class MincraftEnv(Environment, MincraftExtEnv):
self.set_mc_resume()
def set_mc_resume(self):
- self.qa_cache_questions_vectordb = Chroma(
+ self.qa_cache_questions_vectordb = ChromaVectorStore(
collection_name="qa_cache_questions_vectordb",
- embedding_function=OpenAIEmbeddings(),
- persist_directory=f"{MC_CKPT_DIR}/curriculum/vectordb",
+ persist_dir=f"{MC_CKPT_DIR}/curriculum/vectordb",
)
- self.vectordb = Chroma(
+ self.vectordb = ChromaVectorStore(
collection_name="skill_vectordb",
- embedding_function=OpenAIEmbeddings(),
- persist_directory=f"{MC_CKPT_DIR}/skill/vectordb",
+ persist_dir=f"{MC_CKPT_DIR}/skill/vectordb",
)
if CONFIG.resume:
diff --git a/metagpt/environment/mincraft_env/mincraft_ext_env.py b/metagpt/environment/minecraft_env/minecraft_ext_env.py
similarity index 95%
rename from metagpt/environment/mincraft_env/mincraft_ext_env.py
rename to metagpt/environment/minecraft_env/minecraft_ext_env.py
index b86250d8c..3b793079f 100644
--- a/metagpt/environment/mincraft_env/mincraft_ext_env.py
+++ b/metagpt/environment/minecraft_env/minecraft_ext_env.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# @Desc : The Mincraft external environment to integrate with Mincraft game
+# @Desc : The Minecraft external environment to integrate with Minecraft game
# refs to `voyager bridge.py`
import json
@@ -11,18 +11,18 @@ import requests
from pydantic import ConfigDict, Field, model_validator
from metagpt.environment.base_env import ExtEnv, mark_as_writeable
-from metagpt.environment.mincraft_env.const import (
+from metagpt.environment.minecraft_env.const import (
MC_CKPT_DIR,
MC_CORE_INVENTORY_ITEMS,
MC_CURRICULUM_OB,
MC_DEFAULT_WARMUP,
METAGPT_ROOT,
)
-from metagpt.environment.mincraft_env.process_monitor import SubprocessMonitor
+from metagpt.environment.minecraft_env.process_monitor import SubprocessMonitor
from metagpt.logs import logger
-class MincraftExtEnv(ExtEnv):
+class MinecraftExtEnv(ExtEnv):
model_config = ConfigDict(arbitrary_types_allowed=True)
mc_port: Optional[int] = Field(default=None)
@@ -48,7 +48,7 @@ class MincraftExtEnv(ExtEnv):
self.mineflayer = SubprocessMonitor(
commands=[
"node",
- METAGPT_ROOT.joinpath("metagpt", "environment", "mincraft_env", "mineflayer", "index.js"),
+ METAGPT_ROOT.joinpath("metagpt", "environment", "minecraft_env", "mineflayer", "index.js"),
str(self.server_port),
],
name="mineflayer",
diff --git a/metagpt/environment/mincraft_env/mineflayer/.gitignore b/metagpt/environment/minecraft_env/mineflayer/.gitignore
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/.gitignore
rename to metagpt/environment/minecraft_env/mineflayer/.gitignore
diff --git a/metagpt/environment/mincraft_env/mineflayer/.prettierignore b/metagpt/environment/minecraft_env/mineflayer/.prettierignore
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/.prettierignore
rename to metagpt/environment/minecraft_env/mineflayer/.prettierignore
diff --git a/metagpt/environment/mincraft_env/mineflayer/.prettierrc.json b/metagpt/environment/minecraft_env/mineflayer/.prettierrc.json
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/.prettierrc.json
rename to metagpt/environment/minecraft_env/mineflayer/.prettierrc.json
diff --git a/metagpt/environment/mincraft_env/mineflayer/index.js b/metagpt/environment/minecraft_env/mineflayer/index.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/index.js
rename to metagpt/environment/minecraft_env/mineflayer/index.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/observation/base.js b/metagpt/environment/minecraft_env/mineflayer/lib/observation/base.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/observation/base.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/observation/base.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/observation/chests.js b/metagpt/environment/minecraft_env/mineflayer/lib/observation/chests.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/observation/chests.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/observation/chests.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/observation/inventory.js b/metagpt/environment/minecraft_env/mineflayer/lib/observation/inventory.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/observation/inventory.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/observation/inventory.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/observation/onChat.js b/metagpt/environment/minecraft_env/mineflayer/lib/observation/onChat.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/observation/onChat.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/observation/onChat.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/observation/onError.js b/metagpt/environment/minecraft_env/mineflayer/lib/observation/onError.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/observation/onError.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/observation/onError.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/observation/onSave.js b/metagpt/environment/minecraft_env/mineflayer/lib/observation/onSave.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/observation/onSave.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/observation/onSave.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/observation/status.js b/metagpt/environment/minecraft_env/mineflayer/lib/observation/status.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/observation/status.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/observation/status.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/observation/voxels.js b/metagpt/environment/minecraft_env/mineflayer/lib/observation/voxels.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/observation/voxels.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/observation/voxels.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/skillLoader.js b/metagpt/environment/minecraft_env/mineflayer/lib/skillLoader.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/skillLoader.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/skillLoader.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/lib/utils.js b/metagpt/environment/minecraft_env/mineflayer/lib/utils.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/lib/utils.js
rename to metagpt/environment/minecraft_env/mineflayer/lib/utils.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/.gitignore b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/.gitignore
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/.gitignore
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/.gitignore
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/LICENSE b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/LICENSE
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/LICENSE
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/LICENSE
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/README.md b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/README.md
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/README.md
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/README.md
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/_config.yml b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/_config.yml
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/_config.yml
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/_config.yml
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/docs/api.md b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/docs/api.md
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/docs/api.md
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/docs/api.md
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/examples/collector.js b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/examples/collector.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/examples/collector.js
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/examples/collector.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/examples/oreMiner.js b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/examples/oreMiner.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/examples/oreMiner.js
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/examples/oreMiner.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/examples/storageBot.js b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/examples/storageBot.js
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/examples/storageBot.js
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/examples/storageBot.js
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/package.json b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/package.json
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/package.json
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/package.json
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/BlockVeins.ts b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/BlockVeins.ts
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/BlockVeins.ts
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/BlockVeins.ts
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/CollectBlock.ts b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/CollectBlock.ts
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/CollectBlock.ts
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/CollectBlock.ts
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/Inventory.ts b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/Inventory.ts
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/Inventory.ts
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/Inventory.ts
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/Targets.ts b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/Targets.ts
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/Targets.ts
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/Targets.ts
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/TaskQueue.ts b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/TaskQueue.ts
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/TaskQueue.ts
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/TaskQueue.ts
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/TemporarySubscriber.ts b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/TemporarySubscriber.ts
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/TemporarySubscriber.ts
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/TemporarySubscriber.ts
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/Util.ts b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/Util.ts
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/Util.ts
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/Util.ts
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/index.ts b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/index.ts
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/src/index.ts
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/src/index.ts
diff --git a/metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/tsconfig.json b/metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/tsconfig.json
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/mineflayer-collectblock/tsconfig.json
rename to metagpt/environment/minecraft_env/mineflayer/mineflayer-collectblock/tsconfig.json
diff --git a/metagpt/environment/mincraft_env/mineflayer/package.json b/metagpt/environment/minecraft_env/mineflayer/package.json
similarity index 100%
rename from metagpt/environment/mincraft_env/mineflayer/package.json
rename to metagpt/environment/minecraft_env/mineflayer/package.json
diff --git a/metagpt/environment/mincraft_env/process_monitor.py b/metagpt/environment/minecraft_env/process_monitor.py
similarity index 100%
rename from metagpt/environment/mincraft_env/process_monitor.py
rename to metagpt/environment/minecraft_env/process_monitor.py
diff --git a/metagpt/learn/skill_loader.py b/metagpt/learn/skill_loader.py
index bcf28bb87..e98f73cf9 100644
--- a/metagpt/learn/skill_loader.py
+++ b/metagpt/learn/skill_loader.py
@@ -9,11 +9,11 @@
from pathlib import Path
from typing import Dict, List, Optional
-import aiofiles
import yaml
from pydantic import BaseModel, Field
from metagpt.context import Context
+from metagpt.utils.common import aread
class Example(BaseModel):
@@ -68,8 +68,7 @@ class SkillsDeclaration(BaseModel):
async def load(skill_yaml_file_name: Path = None) -> "SkillsDeclaration":
if not skill_yaml_file_name:
skill_yaml_file_name = Path(__file__).parent.parent.parent / "docs/.well-known/skills.yaml"
- async with aiofiles.open(str(skill_yaml_file_name), mode="r") as reader:
- data = await reader.read(-1)
+ data = await aread(filename=skill_yaml_file_name)
skill_data = yaml.safe_load(data)
return SkillsDeclaration(**skill_data)
diff --git a/metagpt/memory/brain_memory.py b/metagpt/memory/brain_memory.py
index 044b0b359..c58148ead 100644
--- a/metagpt/memory/brain_memory.py
+++ b/metagpt/memory/brain_memory.py
@@ -186,7 +186,7 @@ class BrainMemory(BaseModel):
summaries = [summary, command]
msg = "\n".join(summaries)
logger.debug(f"title ask:{msg}")
- response = await llm.aask(msg=msg, system_msgs=[])
+ response = await llm.aask(msg=msg, system_msgs=[], stream=False)
logger.debug(f"title rsp: {response}")
return response
@@ -201,11 +201,15 @@ class BrainMemory(BaseModel):
@staticmethod
async def _openai_is_related(text1, text2, llm, **kwargs):
- command = (
- f"{text2}\n\nIs there any sentence above related to the following sentence: {text1}.\nIf is there "
- "any relevance, return [TRUE] brief and clear. Otherwise, return [FALSE] brief and clear."
+ context = f"## Paragraph 1\n{text2}\n---\n## Paragraph 2\n{text1}\n"
+ rsp = await llm.aask(
+ msg=context,
+ system_msgs=[
+ "You are a tool capable of determining whether two paragraphs are semantically related."
+ 'Return "TRUE" if "Paragraph 1" is semantically relevant to "Paragraph 2", otherwise return "FALSE".'
+ ],
+ stream=False,
)
- rsp = await llm.aask(msg=command, system_msgs=[])
result = True if "TRUE" in rsp else False
p2 = text2.replace("\n", "")
p1 = text1.replace("\n", "")
@@ -223,12 +227,17 @@ class BrainMemory(BaseModel):
@staticmethod
async def _openai_rewrite(sentence: str, context: str, llm):
- command = (
- f"{context}\n\nExtract relevant information from every preceding sentence and use it to succinctly "
- f"supplement or rewrite the following text in brief and clear:\n{sentence}"
+ prompt = f"## Context\n{context}\n---\n## Sentence\n{sentence}\n"
+ rsp = await llm.aask(
+ msg=prompt,
+ system_msgs=[
+ 'You are a tool augmenting the "Sentence" with information from the "Context".',
+ "Do not supplement the context with information that is not present, especially regarding the subject and object.",
+ "Return the augmented sentence.",
+ ],
+ stream=False,
)
- rsp = await llm.aask(msg=command, system_msgs=[])
- logger.info(f"REWRITE:\nCommand: {command}\nRESULT: {rsp}\n")
+ logger.info(f"REWRITE:\nCommand: {prompt}\nRESULT: {rsp}\n")
return rsp
@staticmethod
@@ -293,14 +302,14 @@ class BrainMemory(BaseModel):
"""Generate text summary"""
if len(text) < max_words:
return text
+ system_msgs = [
+ "You are a tool for summarizing and abstracting text.",
+ f"Return the summarized text to less than {max_words} words.",
+ ]
if keep_language:
- command = f".Translate the above content into a summary of less than {max_words} words in language of the content strictly."
- else:
- command = f"Translate the above content into a summary of less than {max_words} words."
- msg = text + "\n\n" + command
- logger.debug(f"summary ask:{msg}")
- response = await self.llm.aask(msg=msg, system_msgs=[])
- logger.debug(f"summary rsp: {response}")
+ system_msgs.append("The generated summary should be in the same language as the original text.")
+ response = await self.llm.aask(msg=text, system_msgs=system_msgs, stream=False)
+ logger.debug(f"{text}\nsummary rsp: {response}")
return response
@staticmethod
diff --git a/metagpt/memory/longterm_memory.py b/metagpt/memory/longterm_memory.py
index 5a139a93b..e960ad6ec 100644
--- a/metagpt/memory/longterm_memory.py
+++ b/metagpt/memory/longterm_memory.py
@@ -29,16 +29,14 @@ class LongTermMemory(Memory):
msg_from_recover: bool = False
def recover_memory(self, role_id: str, rc: RoleContext):
- messages = self.memory_storage.recover_memory(role_id)
+ self.memory_storage.recover_memory(role_id)
self.rc = rc
if not self.memory_storage.is_initialized:
- logger.warning(f"It may the first time to run Agent {role_id}, the long-term memory is empty")
+ logger.warning(f"It may the first time to run Role {role_id}, the long-term memory is empty")
else:
- logger.warning(
- f"Agent {role_id} has existing memory storage with {len(messages)} messages " f"and has recovered them."
- )
+ logger.warning(f"Role {role_id} has existing memory storage and has recovered them.")
self.msg_from_recover = True
- self.add_batch(messages)
+ # self.add_batch(messages) # TODO no need
self.msg_from_recover = False
def add(self, message: Message):
@@ -49,7 +47,7 @@ class LongTermMemory(Memory):
# and ignore adding messages from recover repeatedly
self.memory_storage.add(message)
- def find_news(self, observed: list[Message], k=0) -> list[Message]:
+ async def find_news(self, observed: list[Message], k=0) -> list[Message]:
"""
find news (previously unseen messages) from the the most recent k memories, from all memories when k=0
1. find the short-term memory(stm) news
@@ -63,11 +61,14 @@ class LongTermMemory(Memory):
ltm_news: list[Message] = []
for mem in stm_news:
# filter out messages similar to those seen previously in ltm, only keep fresh news
- mem_searched = self.memory_storage.search_dissimilar(mem)
- if len(mem_searched) > 0:
+ mem_searched = await self.memory_storage.search_similar(mem)
+ if len(mem_searched) == 0:
ltm_news.append(mem)
return ltm_news[-k:]
+ def persist(self):
+ self.memory_storage.persist()
+
def delete(self, message: Message):
super().delete(message)
# TODO delete message in memory_storage
diff --git a/metagpt/memory/memory_storage.py b/metagpt/memory/memory_storage.py
index c029d027b..88ab49028 100644
--- a/metagpt/memory/memory_storage.py
+++ b/metagpt/memory/memory_storage.py
@@ -3,115 +3,75 @@
"""
@Desc : the implement of memory storage
"""
-
+import shutil
from pathlib import Path
-from typing import Optional
-from langchain.embeddings import OpenAIEmbeddings
-from langchain.vectorstores.faiss import FAISS
-from langchain_core.embeddings import Embeddings
+from llama_index.core.embeddings import BaseEmbedding
from metagpt.const import DATA_PATH, MEM_TTL
-from metagpt.document_store.faiss_store import FaissStore
from metagpt.logs import logger
+from metagpt.rag.engines.simple import SimpleEngine
+from metagpt.rag.schema import FAISSIndexConfig, FAISSRetrieverConfig
from metagpt.schema import Message
-from metagpt.utils.serialize import deserialize_message, serialize_message
+from metagpt.utils.embedding import get_embedding
-class MemoryStorage(FaissStore):
+class MemoryStorage(object):
"""
The memory storage with Faiss as ANN search engine
"""
- def __init__(self, mem_ttl: int = MEM_TTL, embedding: Embeddings = None):
+ def __init__(self, mem_ttl: int = MEM_TTL, embedding: BaseEmbedding = None):
self.role_id: str = None
self.role_mem_path: str = None
self.mem_ttl: int = mem_ttl # later use
self.threshold: float = 0.1 # experience value. TODO The threshold to filter similar memories
self._initialized: bool = False
+ self.embedding = embedding or get_embedding()
- self.embedding = embedding or OpenAIEmbeddings()
- self.store: FAISS = None # Faiss engine
+ self.faiss_engine = None
@property
def is_initialized(self) -> bool:
return self._initialized
- def _load(self) -> Optional["FaissStore"]:
- index_file, store_file = self._get_index_and_store_fname(index_ext=".faiss") # langchain FAISS using .faiss
-
- if not (index_file.exists() and store_file.exists()):
- logger.info("Missing at least one of index_file/store_file, load failed and return None")
- return None
-
- return FAISS.load_local(self.role_mem_path, self.embedding, self.role_id)
-
def recover_memory(self, role_id: str) -> list[Message]:
self.role_id = role_id
self.role_mem_path = Path(DATA_PATH / f"role_mem/{self.role_id}/")
self.role_mem_path.mkdir(parents=True, exist_ok=True)
+ self.cache_dir = self.role_mem_path
- self.store = self._load()
- messages = []
- if not self.store:
- # TODO init `self.store` under here with raw faiss api instead under `add`
- pass
+ if self.role_mem_path.joinpath("default__vector_store.json").exists():
+ self.faiss_engine = SimpleEngine.from_index(
+ index_config=FAISSIndexConfig(persist_path=self.cache_dir),
+ retriever_configs=[FAISSRetrieverConfig()],
+ embed_model=self.embedding,
+ )
else:
- for _id, document in self.store.docstore._dict.items():
- messages.append(deserialize_message(document.metadata.get("message_ser")))
- self._initialized = True
-
- return messages
-
- def _get_index_and_store_fname(self, index_ext=".index", pkl_ext=".pkl"):
- if not self.role_mem_path:
- logger.error(f"You should call {self.__class__.__name__}.recover_memory fist when using LongTermMemory")
- return None, None
- index_fpath = Path(self.role_mem_path / f"{self.role_id}{index_ext}")
- storage_fpath = Path(self.role_mem_path / f"{self.role_id}{pkl_ext}")
- return index_fpath, storage_fpath
-
- def persist(self):
- self.store.save_local(self.role_mem_path, self.role_id)
- logger.debug(f"Agent {self.role_id} persist memory into local")
+ self.faiss_engine = SimpleEngine.from_objs(
+ objs=[], retriever_configs=[FAISSRetrieverConfig()], embed_model=self.embedding
+ )
+ self._initialized = True
def add(self, message: Message) -> bool:
"""add message into memory storage"""
- docs = [message.content]
- metadatas = [{"message_ser": serialize_message(message)}]
- if not self.store:
- # init Faiss
- self.store = self._write(docs, metadatas)
- self._initialized = True
- else:
- self.store.add_texts(texts=docs, metadatas=metadatas)
- self.persist()
- logger.info(f"Agent {self.role_id}'s memory_storage add a message")
+ self.faiss_engine.add_objs([message])
+ logger.info(f"Role {self.role_id}'s memory_storage add a message")
- def search_dissimilar(self, message: Message, k=4) -> list[Message]:
- """search for dissimilar messages"""
- if not self.store:
- return []
-
- resp = self.store.similarity_search_with_score(query=message.content, k=k)
+ async def search_similar(self, message: Message, k=4) -> list[Message]:
+ """search for similar messages"""
# filter the result which score is smaller than the threshold
filtered_resp = []
- for item, score in resp:
- # the smaller score means more similar relation
- if score < self.threshold:
- continue
- # convert search result into Memory
- metadata = item.metadata
- new_mem = deserialize_message(metadata.get("message_ser"))
- filtered_resp.append(new_mem)
+ resp = await self.faiss_engine.aretrieve(message.content)
+ for item in resp:
+ if item.score < self.threshold:
+ filtered_resp.append(item.metadata.get("obj"))
return filtered_resp
def clean(self):
- index_fpath, storage_fpath = self._get_index_and_store_fname()
- if index_fpath and index_fpath.exists():
- index_fpath.unlink(missing_ok=True)
- if storage_fpath and storage_fpath.exists():
- storage_fpath.unlink(missing_ok=True)
-
- self.store = None
+ shutil.rmtree(self.cache_dir, ignore_errors=True)
self._initialized = False
+
+ def persist(self):
+ if self.faiss_engine:
+ self.faiss_engine.retriever._index.storage_context.persist(self.cache_dir)
diff --git a/metagpt/prompts/ci/ml_action.py b/metagpt/prompts/ci/ml_action.py
deleted file mode 100644
index 5d27c7ff0..000000000
--- a/metagpt/prompts/ci/ml_action.py
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# @Time : 2023/11/24 15:43
-# @Author : lidanyang
-# @File : ml_action
-# @Desc :
-UPDATE_DATA_COLUMNS = """
-# Background
-Keep dataset column information updated before model train.
-## Done Tasks
-```python
-{history_code}
-```end
-
-# Task
-Update and print the dataset's column information only if the train or test data has changed. Use the following code:
-```python
-from metagpt.tools.libs.data_preprocess import get_column_info
-
-column_info = get_column_info(df)
-print("column_info")
-print(column_info)
-```end
-
-# Constraints:
-- Use the DataFrame variable from 'Done Tasks' in place of df.
-- Import `get_column_info` only if it's not already imported.
-"""
-
-PRINT_DATA_COLUMNS = {
- "name": "print_column_info",
- "description": "Print the latest column information after 'Done Tasks' code if first read or data changed.",
- "parameters": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "The code to be added to a new cell in jupyter.",
- },
- },
- "required": ["code"],
- },
-}
-
-ML_COMMON_PROMPT = """
-# Background
-As a data scientist, you need to help user to achieve their goal [{user_requirement}] step-by-step in an continuous Jupyter notebook.
-
-## Done Tasks
-```python
-{history_code}
-```end
-
-## Current Task
-{current_task}
-
-# Latest Data Info
-Latest data info after previous tasks:
-{column_info}
-
-# Task
-Write complete code for 'Current Task'. And avoid duplicating code from 'Done Tasks', such as repeated import of packages, reading data, etc.
-Specifically, {tool_type_usage_prompt}
-"""
-
-USE_NO_TOOLS_EXAMPLE = """
-# Output Example:
-when current task is "train a lightgbm model on training data", the code can be like:
-```python
-# Step 1: check data type and convert to numeric
-obj_cols = train.select_dtypes(include='object').columns.tolist()
-
-for col in obj_cols:
- encoder = LabelEncoder()
- train[col] = encoder.fit_transform(train[col].unique().tolist() + ['unknown'])
- test[col] = test[col].apply(lambda x: x if x in encoder.classes_ else 'unknown')
- test[col] = encoder.transform(test[col])
-
-# Step 2: train lightgbm model
-model = LGBMClassifier()
-model.fit(train, y_train)
-```end
-
-# Constraints:
-- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.
-"""
-
-USE_TOOLS_EXAMPLE = """
-# Capabilities
-- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python Class.
-- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..
-
-# Available Tools:
-Each Class tool is described in JSON format. When you call a tool, import the tool from its path first.
-{tool_schemas}
-
-# Output Example:
-when current task is "do data preprocess, like fill missing value, handle outliers, etc.", the code can be like:
-```python
-# Step 1: fill missing value
-# Tools used: ['FillMissingValue']
-from metagpt.tools.libs.data_preprocess import FillMissingValue
-
-train_processed = train.copy()
-test_processed = test.copy()
-num_cols = train_processed.select_dtypes(include='number').columns.tolist()
-if 'label' in num_cols:
- num_cols.remove('label')
-fill_missing_value = FillMissingValue(features=num_cols, strategy='mean')
-fill_missing_value.fit(train_processed)
-train_processed = fill_missing_value.transform(train_processed)
-test_processed = fill_missing_value.transform(test_processed)
-
-# Step 2: handle outliers
-for col in num_cols:
- low, high = train_processed[col].quantile([0.01, 0.99])
- train_processed[col] = train_processed[col].clip(low, high)
- test_processed[col] = test_processed[col].clip(low, high)
-```end
-
-# Constraints:
-- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.
-- Always prioritize using pre-defined tools for the same functionality.
-- Always copy the DataFrame before processing it and use the copy to process.
-"""
-
-ML_GENERATE_CODE_PROMPT = ML_COMMON_PROMPT + USE_NO_TOOLS_EXAMPLE
-ML_TOOL_USAGE_PROMPT = ML_COMMON_PROMPT + USE_TOOLS_EXAMPLE
diff --git a/metagpt/prompts/ci/write_analysis_code.py b/metagpt/prompts/ci/write_analysis_code.py
deleted file mode 100644
index 4eccefcd1..000000000
--- a/metagpt/prompts/ci/write_analysis_code.py
+++ /dev/null
@@ -1,93 +0,0 @@
-ASSIGN_TASK_TYPE_PROMPT = """
-Please assign a task type to each task in the list below from the given categories:
-{task_info}
-
-## All Task Type:
-{task_type_desc}
-"""
-
-ASSIGN_TASK_TYPE_CONFIG = {
- "name": "assign_task_type",
- "description": "Assign task type to each task by order.",
- "parameters": {
- "type": "object",
- "properties": {
- "task_type": {
- "type": "array",
- "description": "List of task type. The length should as long as task list",
- "items": {
- "type": "string",
- },
- },
- },
- "required": ["task_type"],
- },
-}
-
-TOOL_RECOMMENDATION_PROMPT = """
-## User Requirement:
-{current_task}
-
-## Task
-Recommend up to five tools from 'Available Tools' that can help solve the 'User Requirement'.
-
-## Available Tools:
-{available_tools}
-
-## Tool Selection and Instructions:
-- Select tools most relevant to completing the 'User Requirement'.
-- If you believe that no tools are suitable, indicate with an empty list.
-- Only list the names of the tools, not the full schema of each tool.
-- Ensure selected tools are listed in 'Available Tools'.
-"""
-
-SELECT_FUNCTION_TOOLS = {
- "name": "select_function_tools",
- "description": "For current task, select suitable tools for it.",
- "parameters": {
- "type": "object",
- "properties": {
- "recommend_tools": {
- "type": "array",
- "description": "List of tool names. Empty list if no tool is suitable.",
- "items": {
- "type": "string",
- },
- },
- },
- "required": ["recommend_tools"],
- },
-}
-
-CODE_GENERATOR_WITH_TOOLS = {
- "name": "add_subtask_code",
- "description": "Add new code cell of current task to the end of an active Jupyter notebook.",
- "parameters": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "The code to be added to a new cell in jupyter.",
- },
- },
- "required": ["code"],
- },
-}
-
-TOOL_USAGE_PROMPT = """
-# Instruction
-Write complete code for 'Current Task'. And avoid duplicating code from finished tasks, such as repeated import of packages, reading data, etc.
-Specifically, {tool_type_usage_prompt}
-
-# Capabilities
-- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python Class.
-- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..
-
-# Available Tools (can be empty):
-Each Class tool is described in JSON format. When you call a tool, import the tool first.
-{tool_schemas}
-
-# Constraints:
-- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.
-- Always prioritize using pre-defined tools for the same functionality.
-"""
diff --git a/metagpt/prompts/di/__init__.py b/metagpt/prompts/di/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/metagpt/prompts/di/write_analysis_code.py b/metagpt/prompts/di/write_analysis_code.py
new file mode 100644
index 000000000..e5663d498
--- /dev/null
+++ b/metagpt/prompts/di/write_analysis_code.py
@@ -0,0 +1,112 @@
+INTERPRETER_SYSTEM_MSG = """As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function."""
+
+STRUCTUAL_PROMPT = """
+# User Requirement
+{user_requirement}
+
+# Plan Status
+{plan_status}
+
+# Tool Info
+{tool_info}
+
+# Constraints
+- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.
+- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.
+- Always prioritize using pre-defined tools for the same functionality.
+
+# Output
+While some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:
+```python
+your code
+```
+"""
+
+REFLECTION_SYSTEM_MSG = """You are an AI Python assistant. You will be given your previous implementation code of a task, runtime error results, and a hint to change the implementation appropriately. Write your full implementation."""
+
+DEBUG_REFLECTION_EXAMPLE = '''
+[previous impl]:
+assistant:
+```python
+def add(a: int, b: int) -> int:
+ """
+ Given integers a and b, return the total value of a and b.
+ """
+ return a - b
+```
+
+user:
+Tests failed:
+assert add(1, 2) == 3 # output: -1
+assert add(1, 2) == 4 # output: -1
+
+[reflection on previous impl]:
+The implementation failed the test cases where the input integers are 1 and 2. The issue arises because the code does not add the two integers together, but instead subtracts the second integer from the first. To fix this issue, we should change the operator from `-` to `+` in the return statement. This will ensure that the function returns the correct output for the given input.
+
+[improved impl]:
+def add(a: int, b: int) -> int:
+ """
+ Given integers a and b, return the total value of a and b.
+ """
+ return a + b
+'''
+
+REFLECTION_PROMPT = """
+[example]
+Here is an example of debugging with reflection.
+{debug_example}
+[/example]
+
+[context]
+{context}
+
+[previous impl]:
+{previous_impl}
+
+[instruction]
+Analyze your previous code and error in [context] step by step, provide me with improved method and code. Remember to follow [context] requirement. Don't forget to write code for steps behind the error step.
+Output a json following the format:
+```json
+{{
+ "reflection": str = "Reflection on previous implementation",
+ "improved_impl": str = "Refined code after reflection.",
+}}
+```
+"""
+
+CHECK_DATA_PROMPT = """
+# Background
+Check latest data info to guide subsequent tasks.
+
+## Finished Tasks
+```python
+{code_written}
+```end
+
+# Task
+Check code in finished tasks, print key variables to guide your following actions.
+Specifically, if it is a data analysis or machine learning task, print the the latest column information using the following code, with DataFrame variable from 'Finished Tasks' in place of df:
+```python
+from metagpt.tools.libs.data_preprocess import get_column_info
+
+column_info = get_column_info(df)
+print("column_info")
+print(column_info)
+```end
+Otherwise, print out any key variables you see fit. Return an empty string if you think there is no important data to check.
+
+# Constraints:
+- Your code is to be added to a new cell in jupyter.
+
+# Instruction
+Output code following the format:
+```python
+your code
+```
+"""
+
+DATA_INFO = """
+# Latest Data Info
+Latest data info after previous tasks:
+{info}
+"""
diff --git a/metagpt/prompts/tool_types.py b/metagpt/prompts/task_type.py
similarity index 79%
rename from metagpt/prompts/tool_types.py
rename to metagpt/prompts/task_type.py
index f27fbea99..5b1ffc744 100644
--- a/metagpt/prompts/tool_types.py
+++ b/metagpt/prompts/task_type.py
@@ -1,4 +1,11 @@
-# Prompt for using tools of "data_preprocess" type
+# Prompt for taking on "eda" tasks
+EDA_PROMPT = """
+The current task is about exploratory data analysis, please note the following:
+- Distinguish column types with `select_dtypes` for tailored analysis and visualization, such as correlation.
+- Remember to `import numpy as np` before using Numpy functions.
+"""
+
+# Prompt for taking on "data_preprocess" tasks
DATA_PREPROCESS_PROMPT = """
The current task is about data preprocessing, please note the following:
- Monitor data types per column, applying appropriate methods.
@@ -8,9 +15,10 @@ The current task is about data preprocessing, please note the following:
- Prefer alternatives to one-hot encoding for categorical data.
- Only encode or scale necessary columns to allow for potential feature-specific engineering tasks (like time_extract, binning, extraction, etc.) later.
- Each step do data preprocessing to train, must do same for test separately at the same time.
+- Always copy the DataFrame before processing it and use the copy to process.
"""
-# Prompt for using tools of "feature_engineering" type
+# Prompt for taking on "feature_engineering" tasks
FEATURE_ENGINEERING_PROMPT = """
The current task is about feature engineering. when performing it, please adhere to the following principles:
- Generate as diverse features as possible to improve the model's performance step-by-step.
@@ -20,9 +28,10 @@ The current task is about feature engineering. when performing it, please adhere
- Each feature engineering operation performed on the train set must also applies to the test separately at the same time.
- Avoid using the label column to create features, except for cat encoding.
- Use the data from previous task result if exist, do not mock or reload data yourself.
+- Always copy the DataFrame before processing it and use the copy to process.
"""
-# Prompt for using tools of "model_train" type
+# Prompt for taking on "model_train" tasks
MODEL_TRAIN_PROMPT = """
The current task is about training a model, please ensure high performance:
- Keep in mind that your user prioritizes results and is highly focused on model performance. So, when needed, feel free to use models of any complexity to improve effectiveness, such as XGBoost, CatBoost, etc.
@@ -31,14 +40,14 @@ The current task is about training a model, please ensure high performance:
- Set suitable hyperparameters for the model, make metrics as high as possible.
"""
-# Prompt for using tools of "model_evaluate" type
+# Prompt for taking on "model_evaluate" tasks
MODEL_EVALUATE_PROMPT = """
The current task is about evaluating a model, please note the following:
- Ensure that the evaluated data is same processed as the training data. If not, remember use object in 'Done Tasks' to transform the data.
- Use trained model from previous task result directly, do not mock or reload model yourself.
"""
-# Prompt for using tools of "vision" type
+# Prompt for taking on "image2webpage" tasks
IMAGE2WEBPAGE_PROMPT = """
The current task is about converting image into webpage code. please note the following:
- Single-Step Code Generation: Execute the entire code generation process in a single step, encompassing HTML, CSS, and JavaScript. Avoid fragmenting the code generation into multiple separate steps to maintain consistency and simplify the development workflow.
diff --git a/metagpt/provider/__init__.py b/metagpt/provider/__init__.py
index 675734811..14d5e7682 100644
--- a/metagpt/provider/__init__.py
+++ b/metagpt/provider/__init__.py
@@ -6,21 +6,20 @@
@File : __init__.py
"""
-from metagpt.provider.fireworks_api import FireworksLLM
from metagpt.provider.google_gemini_api import GeminiLLM
from metagpt.provider.ollama_api import OllamaLLM
-from metagpt.provider.open_llm_api import OpenLLM
from metagpt.provider.openai_api import OpenAILLM
from metagpt.provider.zhipuai_api import ZhiPuAILLM
from metagpt.provider.azure_openai_api import AzureOpenAILLM
from metagpt.provider.metagpt_api import MetaGPTLLM
from metagpt.provider.human_provider import HumanProvider
from metagpt.provider.spark_api import SparkLLM
+from metagpt.provider.qianfan_api import QianFanLLM
+from metagpt.provider.dashscope_api import DashScopeLLM
+from metagpt.provider.anthropic_api import AnthropicLLM
__all__ = [
- "FireworksLLM",
"GeminiLLM",
- "OpenLLM",
"OpenAILLM",
"ZhiPuAILLM",
"AzureOpenAILLM",
@@ -28,4 +27,7 @@ __all__ = [
"OllamaLLM",
"HumanProvider",
"SparkLLM",
+ "QianFanLLM",
+ "DashScopeLLM",
+ "AnthropicLLM",
]
diff --git a/metagpt/provider/anthropic_api.py b/metagpt/provider/anthropic_api.py
index f31c2d04d..1aeacbe83 100644
--- a/metagpt/provider/anthropic_api.py
+++ b/metagpt/provider/anthropic_api.py
@@ -1,37 +1,72 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-"""
-@Time : 2023/7/21 11:15
-@Author : Leo Xiao
-@File : anthropic_api.py
-"""
-import anthropic
-from anthropic import Anthropic, AsyncAnthropic
+from anthropic import AsyncAnthropic
+from anthropic.types import Message, Usage
-from metagpt.configs.llm_config import LLMConfig
+from metagpt.configs.llm_config import LLMConfig, LLMType
+from metagpt.const import USE_CONFIG_TIMEOUT
+from metagpt.logs import log_llm_stream
+from metagpt.provider.base_llm import BaseLLM
+from metagpt.provider.llm_provider_registry import register_provider
-class Claude2:
+@register_provider([LLMType.ANTHROPIC, LLMType.CLAUDE])
+class AnthropicLLM(BaseLLM):
def __init__(self, config: LLMConfig):
self.config = config
+ self.__init_anthropic()
- def ask(self, prompt: str) -> str:
- client = Anthropic(api_key=self.config.api_key)
+ def __init_anthropic(self):
+ self.model = self.config.model
+ self.aclient: AsyncAnthropic = AsyncAnthropic(api_key=self.config.api_key, base_url=self.config.base_url)
- res = client.completions.create(
- model="claude-2",
- prompt=f"{anthropic.HUMAN_PROMPT} {prompt} {anthropic.AI_PROMPT}",
- max_tokens_to_sample=1000,
- )
- return res.completion
+ def _const_kwargs(self, messages: list[dict], stream: bool = False) -> dict:
+ kwargs = {
+ "model": self.model,
+ "messages": messages,
+ "max_tokens": self.config.max_token,
+ "stream": stream,
+ }
+ if self.use_system_prompt:
+ # if the model support system prompt, extract and pass it
+ if messages[0]["role"] == "system":
+ kwargs["messages"] = messages[1:]
+ kwargs["system"] = messages[0]["content"] # set system prompt here
+ return kwargs
- async def aask(self, prompt: str) -> str:
- aclient = AsyncAnthropic(api_key=self.config.api_key)
+ def _update_costs(self, usage: Usage, model: str = None, local_calc_usage: bool = True):
+ usage = {"prompt_tokens": usage.input_tokens, "completion_tokens": usage.output_tokens}
+ super()._update_costs(usage, model)
- res = await aclient.completions.create(
- model="claude-2",
- prompt=f"{anthropic.HUMAN_PROMPT} {prompt} {anthropic.AI_PROMPT}",
- max_tokens_to_sample=1000,
- )
- return res.completion
+ def get_choice_text(self, resp: Message) -> str:
+ return resp.content[0].text
+
+ async def _achat_completion(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> Message:
+ resp: Message = await self.aclient.messages.create(**self._const_kwargs(messages))
+ self._update_costs(resp.usage, self.model)
+ return resp
+
+ async def acompletion(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> Message:
+ return await self._achat_completion(messages, timeout=self.get_timeout(timeout))
+
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> str:
+ stream = await self.aclient.messages.create(**self._const_kwargs(messages, stream=True))
+ collected_content = []
+ usage = Usage(input_tokens=0, output_tokens=0)
+ async for event in stream:
+ event_type = event.type
+ if event_type == "message_start":
+ usage.input_tokens = event.message.usage.input_tokens
+ usage.output_tokens = event.message.usage.output_tokens
+ elif event_type == "content_block_delta":
+ content = event.delta.text
+ log_llm_stream(content)
+ collected_content.append(content)
+ elif event_type == "message_delta":
+ usage.output_tokens = event.usage.output_tokens # update final output_tokens
+
+ log_llm_stream("\n")
+ self._update_costs(usage)
+ full_content = "".join(collected_content)
+ return full_content
diff --git a/metagpt/provider/azure_openai_api.py b/metagpt/provider/azure_openai_api.py
index 6dc32d380..9aeeda00c 100644
--- a/metagpt/provider/azure_openai_api.py
+++ b/metagpt/provider/azure_openai_api.py
@@ -6,8 +6,6 @@
@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.
@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.
"""
-
-
from openai import AsyncAzureOpenAI
from openai._base_client import AsyncHttpxClientWrapper
@@ -27,6 +25,7 @@ class AzureOpenAILLM(OpenAILLM):
# https://learn.microsoft.com/zh-cn/azure/ai-services/openai/how-to/migration?tabs=python-new%2Cdalle-fix
self.aclient = AsyncAzureOpenAI(**kwargs)
self.model = self.config.model # Used in _calc_usage & _cons_kwargs
+ self.pricing_plan = self.config.pricing_plan or self.model
def _make_client_kwargs(self) -> dict:
kwargs = dict(
diff --git a/metagpt/provider/base_llm.py b/metagpt/provider/base_llm.py
index b144471b5..db2757ec3 100644
--- a/metagpt/provider/base_llm.py
+++ b/metagpt/provider/base_llm.py
@@ -6,16 +6,28 @@
@File : base_llm.py
@Desc : mashenquan, 2023/8/22. + try catch
"""
+from __future__ import annotations
+
import json
from abc import ABC, abstractmethod
from typing import Optional, Union
from openai import AsyncOpenAI
+from pydantic import BaseModel
+from tenacity import (
+ after_log,
+ retry,
+ retry_if_exception_type,
+ stop_after_attempt,
+ wait_random_exponential,
+)
from metagpt.configs.llm_config import LLMConfig
+from metagpt.const import LLM_API_TIMEOUT, USE_CONFIG_TIMEOUT
from metagpt.logs import logger
from metagpt.schema import Message
-from metagpt.utils.cost_manager import CostManager
+from metagpt.utils.common import log_and_reraise
+from metagpt.utils.cost_manager import CostManager, Costs
class BaseLLM(ABC):
@@ -28,7 +40,8 @@ class BaseLLM(ABC):
# OpenAI / Azure / Others
aclient: Optional[Union[AsyncOpenAI]] = None
cost_manager: Optional[CostManager] = None
- model: Optional[str] = None
+ model: Optional[str] = None # deprecated
+ pricing_plan: Optional[str] = None
@abstractmethod
def __init__(self, config: LLMConfig):
@@ -61,19 +74,64 @@ class BaseLLM(ABC):
def _system_msg(self, msg: str) -> dict[str, str]:
return {"role": "system", "content": msg}
+ def format_msg(self, messages: Union[str, Message, list[dict], list[Message], list[str]]) -> list[dict]:
+ """convert messages to list[dict]."""
+ from metagpt.schema import Message
+
+ if not isinstance(messages, list):
+ messages = [messages]
+
+ processed_messages = []
+ for msg in messages:
+ if isinstance(msg, str):
+ processed_messages.append({"role": "user", "content": msg})
+ elif isinstance(msg, dict):
+ assert set(msg.keys()) == set(["role", "content"])
+ processed_messages.append(msg)
+ elif isinstance(msg, Message):
+ processed_messages.append(msg.to_dict())
+ else:
+ raise ValueError(
+ f"Only support message type are: str, Message, dict, but got {type(messages).__name__}!"
+ )
+ return processed_messages
+
def _system_msgs(self, msgs: list[str]) -> list[dict[str, str]]:
return [self._system_msg(msg) for msg in msgs]
def _default_system_msg(self):
return self._system_msg(self.system_prompt)
+ def _update_costs(self, usage: Union[dict, BaseModel], model: str = None, local_calc_usage: bool = True):
+ """update each request's token cost
+ Args:
+ model (str): model name or in some scenarios called endpoint
+ local_calc_usage (bool): some models don't calculate usage, it will overwrite LLMConfig.calc_usage
+ """
+ calc_usage = self.config.calc_usage and local_calc_usage
+ model = model or self.pricing_plan
+ model = model or self.model
+ usage = usage.model_dump() if isinstance(usage, BaseModel) else usage
+ if calc_usage and self.cost_manager:
+ try:
+ prompt_tokens = int(usage.get("prompt_tokens", 0))
+ completion_tokens = int(usage.get("completion_tokens", 0))
+ self.cost_manager.update_cost(prompt_tokens, completion_tokens, model)
+ except Exception as e:
+ logger.error(f"{self.__class__.__name__} updates costs failed! exp: {e}")
+
+ def get_costs(self) -> Costs:
+ if not self.cost_manager:
+ return Costs(0, 0, 0, 0)
+ return self.cost_manager.get_costs()
+
async def aask(
self,
- msg: str,
+ msg: Union[str, list[dict[str, str]]],
system_msgs: Optional[list[str]] = None,
format_msgs: Optional[list[dict[str, str]]] = None,
images: Optional[Union[str, list[str]]] = None,
- timeout=3,
+ timeout=USE_CONFIG_TIMEOUT,
stream=True,
) -> str:
if system_msgs:
@@ -84,30 +142,36 @@ class BaseLLM(ABC):
message = []
if format_msgs:
message.extend(format_msgs)
- message.append(self._user_msg(msg, images=images))
+ if isinstance(msg, str):
+ message.append(self._user_msg(msg, images=images))
+ else:
+ message.extend(msg)
logger.debug(message)
- rsp = await self.acompletion_text(message, stream=stream, timeout=timeout)
+ rsp = await self.acompletion_text(message, stream=stream, timeout=self.get_timeout(timeout))
return rsp
def _extract_assistant_rsp(self, context):
return "\n".join([i["content"] for i in context if i["role"] == "assistant"])
- async def aask_batch(self, msgs: list, timeout=3) -> str:
+ async def aask_batch(self, msgs: list, timeout=USE_CONFIG_TIMEOUT) -> str:
"""Sequential questioning"""
context = []
for msg in msgs:
umsg = self._user_msg(msg)
context.append(umsg)
- rsp_text = await self.acompletion_text(context, timeout=timeout)
+ rsp_text = await self.acompletion_text(context, timeout=self.get_timeout(timeout))
context.append(self._assistant_msg(rsp_text))
return self._extract_assistant_rsp(context)
- async def aask_code(self, messages: Union[str, Message, list[dict]], timeout=3) -> dict:
- """FIXME: No code segment filtering has been done here, and all results are actually displayed"""
+ async def aask_code(self, messages: Union[str, Message, list[dict]], timeout=USE_CONFIG_TIMEOUT, **kwargs) -> dict:
raise NotImplementedError
@abstractmethod
- async def acompletion(self, messages: list[dict], timeout=3):
+ async def _achat_completion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT):
+ """_achat_completion implemented by inherited class"""
+
+ @abstractmethod
+ async def acompletion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT):
"""Asynchronous version of completion
All GPTAPIs are required to provide the standard OpenAI completion interface
[
@@ -118,8 +182,24 @@ class BaseLLM(ABC):
"""
@abstractmethod
- async def acompletion_text(self, messages: list[dict], stream=False, timeout=3) -> str:
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> str:
+ """_achat_completion_stream implemented by inherited class"""
+
+ @retry(
+ stop=stop_after_attempt(3),
+ wait=wait_random_exponential(min=1, max=60),
+ after=after_log(logger, logger.level("WARNING").name),
+ retry=retry_if_exception_type(ConnectionError),
+ retry_error_callback=log_and_reraise,
+ )
+ async def acompletion_text(
+ self, messages: list[dict], stream: bool = False, timeout: int = USE_CONFIG_TIMEOUT
+ ) -> str:
"""Asynchronous version of completion. Return str. Support stream-print"""
+ if stream:
+ return await self._achat_completion_stream(messages, timeout=self.get_timeout(timeout))
+ resp = await self._achat_completion(messages, timeout=self.get_timeout(timeout))
+ return self.get_choice_text(resp)
def get_choice_text(self, rsp: dict) -> str:
"""Required to provide the first text of choice"""
@@ -176,3 +256,11 @@ class BaseLLM(ABC):
def messages_to_dict(self, messages):
"""objects to [{"role": "user", "content": msg}] etc."""
return [i.to_dict() for i in messages]
+
+ def with_model(self, model: str):
+ """Set model and return self. For example, `with_model("gpt-3.5-turbo")`."""
+ self.config.model = model
+ return self
+
+ def get_timeout(self, timeout: int) -> int:
+ return timeout or self.config.timeout or LLM_API_TIMEOUT
diff --git a/metagpt/provider/constant.py b/metagpt/provider/constant.py
index db67847a8..dee78dc3b 100644
--- a/metagpt/provider/constant.py
+++ b/metagpt/provider/constant.py
@@ -25,6 +25,7 @@ GENERAL_FUNCTION_SCHEMA = {
},
}
+
# tool_choice value for general_function_schema
# https://platform.openai.com/docs/api-reference/chat/create#chat-create-tool_choice
GENERAL_TOOL_CHOICE = {"type": "function", "function": {"name": "execute"}}
diff --git a/metagpt/provider/dashscope_api.py b/metagpt/provider/dashscope_api.py
new file mode 100644
index 000000000..82224e893
--- /dev/null
+++ b/metagpt/provider/dashscope_api.py
@@ -0,0 +1,228 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @Desc :
+
+import json
+from http import HTTPStatus
+from typing import Any, AsyncGenerator, Dict, List, Union
+
+import dashscope
+from dashscope.aigc.generation import Generation
+from dashscope.api_entities.aiohttp_request import AioHttpRequest
+from dashscope.api_entities.api_request_data import ApiRequestData
+from dashscope.api_entities.api_request_factory import _get_protocol_params
+from dashscope.api_entities.dashscope_response import (
+ GenerationOutput,
+ GenerationResponse,
+ Message,
+)
+from dashscope.client.base_api import BaseAioApi
+from dashscope.common.constants import SERVICE_API_PATH, ApiProtocol
+from dashscope.common.error import (
+ InputDataRequired,
+ InputRequired,
+ ModelRequired,
+ UnsupportedApiProtocol,
+)
+
+from metagpt.const import USE_CONFIG_TIMEOUT
+from metagpt.logs import log_llm_stream
+from metagpt.provider.base_llm import BaseLLM, LLMConfig
+from metagpt.provider.llm_provider_registry import LLMType, register_provider
+from metagpt.utils.cost_manager import CostManager
+from metagpt.utils.token_counter import DASHSCOPE_TOKEN_COSTS
+
+
+def build_api_arequest(
+ model: str, input: object, task_group: str, task: str, function: str, api_key: str, is_service=True, **kwargs
+):
+ (
+ api_protocol,
+ ws_stream_mode,
+ is_binary_input,
+ http_method,
+ stream,
+ async_request,
+ query,
+ headers,
+ request_timeout,
+ form,
+ resources,
+ ) = _get_protocol_params(kwargs)
+ task_id = kwargs.pop("task_id", None)
+ if api_protocol in [ApiProtocol.HTTP, ApiProtocol.HTTPS]:
+ if not dashscope.base_http_api_url.endswith("/"):
+ http_url = dashscope.base_http_api_url + "/"
+ else:
+ http_url = dashscope.base_http_api_url
+
+ if is_service:
+ http_url = http_url + SERVICE_API_PATH + "/"
+
+ if task_group:
+ http_url += "%s/" % task_group
+ if task:
+ http_url += "%s/" % task
+ if function:
+ http_url += function
+ request = AioHttpRequest(
+ url=http_url,
+ api_key=api_key,
+ http_method=http_method,
+ stream=stream,
+ async_request=async_request,
+ query=query,
+ timeout=request_timeout,
+ task_id=task_id,
+ )
+ else:
+ raise UnsupportedApiProtocol("Unsupported protocol: %s, support [http, https, websocket]" % api_protocol)
+
+ if headers is not None:
+ request.add_headers(headers=headers)
+
+ if input is None and form is None:
+ raise InputDataRequired("There is no input data and form data")
+
+ request_data = ApiRequestData(
+ model,
+ task_group=task_group,
+ task=task,
+ function=function,
+ input=input,
+ form=form,
+ is_binary_input=is_binary_input,
+ api_protocol=api_protocol,
+ )
+ request_data.add_resources(resources)
+ request_data.add_parameters(**kwargs)
+ request.data = request_data
+ return request
+
+
+class AGeneration(Generation, BaseAioApi):
+ @classmethod
+ async def acall(
+ cls,
+ model: str,
+ prompt: Any = None,
+ history: list = None,
+ api_key: str = None,
+ messages: List[Message] = None,
+ plugins: Union[str, Dict[str, Any]] = None,
+ **kwargs,
+ ) -> Union[GenerationResponse, AsyncGenerator[GenerationResponse, None]]:
+ if (prompt is None or not prompt) and (messages is None or not messages):
+ raise InputRequired("prompt or messages is required!")
+ if model is None or not model:
+ raise ModelRequired("Model is required!")
+ task_group, function = "aigc", "generation" # fixed value
+ if plugins is not None:
+ headers = kwargs.pop("headers", {})
+ if isinstance(plugins, str):
+ headers["X-DashScope-Plugin"] = plugins
+ else:
+ headers["X-DashScope-Plugin"] = json.dumps(plugins)
+ kwargs["headers"] = headers
+ input, parameters = cls._build_input_parameters(model, prompt, history, messages, **kwargs)
+
+ api_key, model = BaseAioApi._validate_params(api_key, model)
+ request = build_api_arequest(
+ model=model,
+ input=input,
+ task_group=task_group,
+ task=Generation.task,
+ function=function,
+ api_key=api_key,
+ **kwargs,
+ )
+ response = await request.aio_call()
+ is_stream = kwargs.get("stream", False)
+ if is_stream:
+
+ async def aresp_iterator(response):
+ async for resp in response:
+ yield GenerationResponse.from_api_response(resp)
+
+ return aresp_iterator(response)
+ else:
+ return GenerationResponse.from_api_response(response)
+
+
+@register_provider(LLMType.DASHSCOPE)
+class DashScopeLLM(BaseLLM):
+ def __init__(self, llm_config: LLMConfig):
+ self.config = llm_config
+ self.use_system_prompt = False # only some models support system_prompt
+ self.__init_dashscope()
+ self.cost_manager = CostManager(token_costs=self.token_costs)
+
+ def __init_dashscope(self):
+ self.model = self.config.model
+ self.api_key = self.config.api_key
+ self.token_costs = DASHSCOPE_TOKEN_COSTS
+ self.aclient: AGeneration = AGeneration
+
+ # check support system_message models
+ support_system_models = [
+ "qwen-", # all support
+ "llama2-", # all support
+ "baichuan2-7b-chat-v1",
+ "chatglm3-6b",
+ ]
+ for support_model in support_system_models:
+ if support_model in self.model:
+ self.use_system_prompt = True
+
+ def _const_kwargs(self, messages: list[dict], stream: bool = False) -> dict:
+ kwargs = {
+ "api_key": self.api_key,
+ "model": self.model,
+ "messages": messages,
+ "stream": stream,
+ "result_format": "message",
+ }
+ if self.config.temperature > 0:
+ # different model has default temperature. only set when it"s specified.
+ kwargs["temperature"] = self.config.temperature
+ if stream:
+ kwargs["incremental_output"] = True
+ return kwargs
+
+ def _check_response(self, resp: GenerationResponse):
+ if resp.status_code != HTTPStatus.OK:
+ raise RuntimeError(f"code: {resp.code}, request_id: {resp.request_id}, message: {resp.message}")
+
+ def get_choice_text(self, output: GenerationOutput) -> str:
+ return output.get("choices", [{}])[0].get("message", {}).get("content", "")
+
+ def completion(self, messages: list[dict]) -> GenerationOutput:
+ resp: GenerationResponse = self.aclient.call(**self._const_kwargs(messages, stream=False))
+ self._check_response(resp)
+
+ self._update_costs(dict(resp.usage))
+ return resp.output
+
+ async def _achat_completion(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> GenerationOutput:
+ resp: GenerationResponse = await self.aclient.acall(**self._const_kwargs(messages, stream=False))
+ self._check_response(resp)
+ self._update_costs(dict(resp.usage))
+ return resp.output
+
+ async def acompletion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> GenerationOutput:
+ return await self._achat_completion(messages, timeout=self.get_timeout(timeout))
+
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> str:
+ resp = await self.aclient.acall(**self._const_kwargs(messages, stream=True))
+ collected_content = []
+ usage = {}
+ async for chunk in resp:
+ self._check_response(chunk)
+ content = chunk.output.choices[0]["message"]["content"]
+ usage = dict(chunk.usage) # each chunk has usage
+ log_llm_stream(content)
+ collected_content.append(content)
+ log_llm_stream("\n")
+ self._update_costs(usage)
+ full_content = "".join(collected_content)
+ return full_content
diff --git a/metagpt/provider/fireworks_api.py b/metagpt/provider/fireworks_api.py
deleted file mode 100644
index d56453a85..000000000
--- a/metagpt/provider/fireworks_api.py
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# @Desc : fireworks.ai's api
-
-import re
-
-from openai import APIConnectionError, AsyncStream
-from openai.types import CompletionUsage
-from openai.types.chat import ChatCompletionChunk
-from tenacity import (
- after_log,
- retry,
- retry_if_exception_type,
- stop_after_attempt,
- wait_random_exponential,
-)
-
-from metagpt.configs.llm_config import LLMConfig, LLMType
-from metagpt.logs import logger
-from metagpt.provider.llm_provider_registry import register_provider
-from metagpt.provider.openai_api import OpenAILLM, log_and_reraise
-from metagpt.utils.cost_manager import CostManager, Costs
-
-MODEL_GRADE_TOKEN_COSTS = {
- "-1": {"prompt": 0.0, "completion": 0.0}, # abnormal condition
- "16": {"prompt": 0.2, "completion": 0.8}, # 16 means model size <= 16B; 0.2 means $0.2/1M tokens
- "80": {"prompt": 0.7, "completion": 2.8}, # 80 means 16B < model size <= 80B
- "mixtral-8x7b": {"prompt": 0.4, "completion": 1.6},
-}
-
-
-class FireworksCostManager(CostManager):
- def model_grade_token_costs(self, model: str) -> dict[str, float]:
- def _get_model_size(model: str) -> float:
- size = re.findall(".*-([0-9.]+)b", model)
- size = float(size[0]) if len(size) > 0 else -1
- return size
-
- if "mixtral-8x7b" in model:
- token_costs = MODEL_GRADE_TOKEN_COSTS["mixtral-8x7b"]
- else:
- model_size = _get_model_size(model)
- if 0 < model_size <= 16:
- token_costs = MODEL_GRADE_TOKEN_COSTS["16"]
- elif 16 < model_size <= 80:
- token_costs = MODEL_GRADE_TOKEN_COSTS["80"]
- else:
- token_costs = MODEL_GRADE_TOKEN_COSTS["-1"]
- return token_costs
-
- def update_cost(self, prompt_tokens: int, completion_tokens: int, model: str):
- """
- Refs to `https://app.fireworks.ai/pricing` **Developer pricing**
- Update the total cost, prompt tokens, and completion tokens.
-
- Args:
- prompt_tokens (int): The number of tokens used in the prompt.
- completion_tokens (int): The number of tokens used in the completion.
- model (str): The model used for the API call.
- """
- self.total_prompt_tokens += prompt_tokens
- self.total_completion_tokens += completion_tokens
-
- token_costs = self.model_grade_token_costs(model)
- cost = (prompt_tokens * token_costs["prompt"] + completion_tokens * token_costs["completion"]) / 1000000
- self.total_cost += cost
- logger.info(
- f"Total running cost: ${self.total_cost:.4f}"
- f"Current cost: ${cost:.4f}, prompt_tokens: {prompt_tokens}, completion_tokens: {completion_tokens}"
- )
-
-
-@register_provider(LLMType.FIREWORKS)
-class FireworksLLM(OpenAILLM):
- def __init__(self, config: LLMConfig):
- super().__init__(config=config)
- self.auto_max_tokens = False
- self.cost_manager = FireworksCostManager()
-
- def _make_client_kwargs(self) -> dict:
- kwargs = dict(api_key=self.config.api_key, base_url=self.config.base_url)
- return kwargs
-
- def _update_costs(self, usage: CompletionUsage):
- if self.config.calc_usage and usage:
- try:
- # use FireworksCostManager not context.cost_manager
- self.cost_manager.update_cost(usage.prompt_tokens, usage.completion_tokens, self.model)
- except Exception as e:
- logger.error(f"updating costs failed!, exp: {e}")
-
- def get_costs(self) -> Costs:
- return self.cost_manager.get_costs()
-
- async def _achat_completion_stream(self, messages: list[dict], timeout=3) -> str:
- response: AsyncStream[ChatCompletionChunk] = await self.aclient.chat.completions.create(
- **self._cons_kwargs(messages), stream=True
- )
-
- collected_content = []
- usage = CompletionUsage(prompt_tokens=0, completion_tokens=0, total_tokens=0)
- # iterate through the stream of events
- async for chunk in response:
- if chunk.choices:
- choice = chunk.choices[0]
- choice_delta = choice.delta
- finish_reason = choice.finish_reason if hasattr(choice, "finish_reason") else None
- if choice_delta.content:
- collected_content.append(choice_delta.content)
- print(choice_delta.content, end="")
- if finish_reason:
- # fireworks api return usage when finish_reason is not None
- usage = CompletionUsage(**chunk.usage)
-
- full_content = "".join(collected_content)
- self._update_costs(usage)
- return full_content
-
- @retry(
- wait=wait_random_exponential(min=1, max=60),
- stop=stop_after_attempt(6),
- after=after_log(logger, logger.level("WARNING").name),
- retry=retry_if_exception_type(APIConnectionError),
- retry_error_callback=log_and_reraise,
- )
- async def acompletion_text(self, messages: list[dict], stream=False, timeout: int = 3) -> str:
- """when streaming, print each token in place."""
- if stream:
- return await self._achat_completion_stream(messages)
- rsp = await self._achat_completion(messages)
- return self.get_choice_text(rsp)
diff --git a/metagpt/provider/general_api_base.py b/metagpt/provider/general_api_base.py
index 1b9149396..8e5da8f16 100644
--- a/metagpt/provider/general_api_base.py
+++ b/metagpt/provider/general_api_base.py
@@ -573,7 +573,7 @@ class APIRequestor:
total=request_timeout[1],
)
else:
- timeout = aiohttp.ClientTimeout(total=request_timeout if request_timeout else TIMEOUT_SECS)
+ timeout = aiohttp.ClientTimeout(total=request_timeout or TIMEOUT_SECS)
if files:
# TODO: Use `aiohttp.MultipartWriter` to create the multipart form data here.
diff --git a/metagpt/provider/general_api_requestor.py b/metagpt/provider/general_api_requestor.py
index 500cd1426..18f4dd909 100644
--- a/metagpt/provider/general_api_requestor.py
+++ b/metagpt/provider/general_api_requestor.py
@@ -60,7 +60,8 @@ class GeneralAPIRequestor(APIRequestor):
self, result: requests.Response, stream: bool
) -> Tuple[Union[bytes, Iterator[Generator]], bytes]:
"""Returns the response(s) and a bool indicating whether it is a stream."""
- if stream and "text/event-stream" in result.headers.get("Content-Type", ""):
+ content_type = result.headers.get("Content-Type", "")
+ if stream and ("text/event-stream" in content_type or "application/x-ndjson" in content_type):
return (
self._interpret_response_line(line, result.status_code, result.headers, stream=True)
for line in parse_stream(result.iter_lines())
diff --git a/metagpt/provider/google_gemini_api.py b/metagpt/provider/google_gemini_api.py
index 2647ab16b..4ff49befe 100644
--- a/metagpt/provider/google_gemini_api.py
+++ b/metagpt/provider/google_gemini_api.py
@@ -2,6 +2,7 @@
# -*- coding: utf-8 -*-
# @Desc : Google Gemini LLM from https://ai.google.dev/tutorials/python_quickstart
+import os
from typing import Optional, Union
import google.generativeai as genai
@@ -13,19 +14,13 @@ from google.generativeai.types.generation_types import (
GenerateContentResponse,
GenerationConfig,
)
-from tenacity import (
- after_log,
- retry,
- retry_if_exception_type,
- stop_after_attempt,
- wait_random_exponential,
-)
from metagpt.configs.llm_config import LLMConfig, LLMType
+from metagpt.const import USE_CONFIG_TIMEOUT
from metagpt.logs import log_llm_stream, logger
from metagpt.provider.base_llm import BaseLLM
from metagpt.provider.llm_provider_registry import register_provider
-from metagpt.provider.openai_api import log_and_reraise
+from metagpt.schema import Message
class GeminiGenerativeModel(GenerativeModel):
@@ -55,9 +50,14 @@ class GeminiLLM(BaseLLM):
self.__init_gemini(config)
self.config = config
self.model = "gemini-pro" # so far only one model
+ self.pricing_plan = self.config.pricing_plan or self.model
self.llm = GeminiGenerativeModel(model_name=self.model)
def __init_gemini(self, config: LLMConfig):
+ if config.proxy:
+ logger.info(f"Use proxy: {config.proxy}")
+ os.environ["http_proxy"] = config.proxy
+ os.environ["https_proxy"] = config.proxy
genai.configure(api_key=config.api_key)
def _user_msg(self, msg: str, images: Optional[Union[str, list[str]]] = None) -> dict[str, str]:
@@ -68,20 +68,39 @@ class GeminiLLM(BaseLLM):
def _assistant_msg(self, msg: str) -> dict[str, str]:
return {"role": "model", "parts": [msg]}
+ def _system_msg(self, msg: str) -> dict[str, str]:
+ return {"role": "user", "parts": [msg]}
+
+ def format_msg(self, messages: Union[str, Message, list[dict], list[Message], list[str]]) -> list[dict]:
+ """convert messages to list[dict]."""
+ from metagpt.schema import Message
+
+ if not isinstance(messages, list):
+ messages = [messages]
+
+ # REF: https://ai.google.dev/tutorials/python_quickstart
+ # As a dictionary, the message requires `role` and `parts` keys.
+ # The role in a conversation can either be the `user`, which provides the prompts,
+ # or `model`, which provides the responses.
+ processed_messages = []
+ for msg in messages:
+ if isinstance(msg, str):
+ processed_messages.append({"role": "user", "parts": [msg]})
+ elif isinstance(msg, dict):
+ assert set(msg.keys()) == set(["role", "parts"])
+ processed_messages.append(msg)
+ elif isinstance(msg, Message):
+ processed_messages.append({"role": "user" if msg.role == "user" else "model", "parts": [msg.content]})
+ else:
+ raise ValueError(
+ f"Only support message type are: str, Message, dict, but got {type(messages).__name__}!"
+ )
+ return processed_messages
+
def _const_kwargs(self, messages: list[dict], stream: bool = False) -> dict:
kwargs = {"contents": messages, "generation_config": GenerationConfig(temperature=0.3), "stream": stream}
return kwargs
- def _update_costs(self, usage: dict):
- """update each request's token cost"""
- if self.config.calc_usage:
- try:
- prompt_tokens = int(usage.get("prompt_tokens", 0))
- completion_tokens = int(usage.get("completion_tokens", 0))
- self.cost_manager.update_cost(prompt_tokens, completion_tokens, self.model)
- except Exception as e:
- logger.error(f"google gemini updats costs failed! exp: {e}")
-
def get_choice_text(self, resp: GenerateContentResponse) -> str:
return resp.text
@@ -105,16 +124,18 @@ class GeminiLLM(BaseLLM):
self._update_costs(usage)
return resp
- async def _achat_completion(self, messages: list[dict]) -> "AsyncGenerateContentResponse":
+ async def _achat_completion(
+ self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT
+ ) -> "AsyncGenerateContentResponse":
resp: AsyncGenerateContentResponse = await self.llm.generate_content_async(**self._const_kwargs(messages))
usage = await self.aget_usage(messages, resp.text)
self._update_costs(usage)
return resp
- async def acompletion(self, messages: list[dict], timeout=3) -> dict:
- return await self._achat_completion(messages)
+ async def acompletion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> dict:
+ return await self._achat_completion(messages, timeout=self.get_timeout(timeout))
- async def _achat_completion_stream(self, messages: list[dict]) -> str:
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> str:
resp: AsyncGenerateContentResponse = await self.llm.generate_content_async(
**self._const_kwargs(messages, stream=True)
)
@@ -129,17 +150,3 @@ class GeminiLLM(BaseLLM):
usage = await self.aget_usage(messages, full_content)
self._update_costs(usage)
return full_content
-
- @retry(
- stop=stop_after_attempt(3),
- wait=wait_random_exponential(min=1, max=60),
- after=after_log(logger, logger.level("WARNING").name),
- retry=retry_if_exception_type(ConnectionError),
- retry_error_callback=log_and_reraise,
- )
- async def acompletion_text(self, messages: list[dict], stream=False, timeout: int = 3) -> str:
- """response in async with stream or non-stream mode"""
- if stream:
- return await self._achat_completion_stream(messages)
- resp = await self._achat_completion(messages)
- return self.get_choice_text(resp)
diff --git a/metagpt/provider/human_provider.py b/metagpt/provider/human_provider.py
index fe000b3a6..824acd345 100644
--- a/metagpt/provider/human_provider.py
+++ b/metagpt/provider/human_provider.py
@@ -6,6 +6,7 @@ Author: garylin2099
from typing import Optional
from metagpt.configs.llm_config import LLMConfig
+from metagpt.const import LLM_API_TIMEOUT, USE_CONFIG_TIMEOUT
from metagpt.logs import logger
from metagpt.provider.base_llm import BaseLLM
@@ -18,7 +19,7 @@ class HumanProvider(BaseLLM):
def __init__(self, config: LLMConfig):
pass
- def ask(self, msg: str, timeout=3) -> str:
+ def ask(self, msg: str, timeout=USE_CONFIG_TIMEOUT) -> str:
logger.info("It's your turn, please type in your response. You may also refer to the context below")
rsp = input(msg)
if rsp in ["exit", "quit"]:
@@ -31,14 +32,23 @@ class HumanProvider(BaseLLM):
system_msgs: Optional[list[str]] = None,
format_msgs: Optional[list[dict[str, str]]] = None,
generator: bool = False,
- timeout=3,
+ timeout=USE_CONFIG_TIMEOUT,
) -> str:
- return self.ask(msg, timeout=timeout)
+ return self.ask(msg, timeout=self.get_timeout(timeout))
- async def acompletion(self, messages: list[dict], timeout=3):
+ async def _achat_completion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT):
+ pass
+
+ async def acompletion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT):
"""dummy implementation of abstract method in base"""
return []
- async def acompletion_text(self, messages: list[dict], stream=False, timeout=3) -> str:
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> str:
+ pass
+
+ async def acompletion_text(self, messages: list[dict], stream=False, timeout=USE_CONFIG_TIMEOUT) -> str:
"""dummy implementation of abstract method in base"""
return ""
+
+ def get_timeout(self, timeout: int) -> int:
+ return timeout or LLM_API_TIMEOUT
diff --git a/metagpt/provider/llm_provider_registry.py b/metagpt/provider/llm_provider_registry.py
index df89d36aa..4fd2b1978 100644
--- a/metagpt/provider/llm_provider_registry.py
+++ b/metagpt/provider/llm_provider_registry.py
@@ -21,11 +21,15 @@ class LLMProviderRegistry:
return self.providers[enum]
-def register_provider(key):
+def register_provider(keys):
"""register provider to registry"""
def decorator(cls):
- LLM_REGISTRY.register(key, cls)
+ if isinstance(keys, list):
+ for key in keys:
+ LLM_REGISTRY.register(key, cls)
+ else:
+ LLM_REGISTRY.register(keys, cls)
return cls
return decorator
diff --git a/metagpt/provider/metagpt_api.py b/metagpt/provider/metagpt_api.py
index 4956746dc..d71fa9bda 100644
--- a/metagpt/provider/metagpt_api.py
+++ b/metagpt/provider/metagpt_api.py
@@ -5,6 +5,8 @@
@File : metagpt_api.py
@Desc : MetaGPT LLM provider.
"""
+from openai.types import CompletionUsage
+
from metagpt.configs.llm_config import LLMType
from metagpt.provider import OpenAILLM
from metagpt.provider.llm_provider_registry import register_provider
@@ -12,4 +14,7 @@ from metagpt.provider.llm_provider_registry import register_provider
@register_provider(LLMType.METAGPT)
class MetaGPTLLM(OpenAILLM):
- pass
+ def _calc_usage(self, messages: list[dict], rsp: str) -> CompletionUsage:
+ # The current billing is based on usage frequency. If there is a future billing logic based on the
+ # number of tokens, please refine the logic here accordingly.
+ return CompletionUsage(prompt_tokens=0, completion_tokens=0, total_tokens=0)
diff --git a/metagpt/provider/ollama_api.py b/metagpt/provider/ollama_api.py
index c9103b018..2913eb1dd 100644
--- a/metagpt/provider/ollama_api.py
+++ b/metagpt/provider/ollama_api.py
@@ -4,22 +4,12 @@
import json
-from requests import ConnectionError
-from tenacity import (
- after_log,
- retry,
- retry_if_exception_type,
- stop_after_attempt,
- wait_random_exponential,
-)
-
from metagpt.configs.llm_config import LLMConfig, LLMType
-from metagpt.const import LLM_API_TIMEOUT
-from metagpt.logs import log_llm_stream, logger
+from metagpt.const import USE_CONFIG_TIMEOUT
+from metagpt.logs import log_llm_stream
from metagpt.provider.base_llm import BaseLLM
from metagpt.provider.general_api_requestor import GeneralAPIRequestor
from metagpt.provider.llm_provider_registry import register_provider
-from metagpt.provider.openai_api import log_and_reraise
from metagpt.utils.cost_manager import TokenCostManager
@@ -36,26 +26,17 @@ class OllamaLLM(BaseLLM):
self.suffix_url = "/chat"
self.http_method = "post"
self.use_system_prompt = False
- self._cost_manager = TokenCostManager()
+ self.cost_manager = TokenCostManager()
def __init_ollama(self, config: LLMConfig):
assert config.base_url, "ollama base url is required!"
self.model = config.model
+ self.pricing_plan = self.model
def _const_kwargs(self, messages: list[dict], stream: bool = False) -> dict:
kwargs = {"model": self.model, "messages": messages, "options": {"temperature": 0.3}, "stream": stream}
return kwargs
- def _update_costs(self, usage: dict):
- """update each request's token cost"""
- if self.config.calc_usage:
- try:
- prompt_tokens = int(usage.get("prompt_tokens", 0))
- completion_tokens = int(usage.get("completion_tokens", 0))
- self._cost_manager.update_cost(prompt_tokens, completion_tokens, self.model)
- except Exception as e:
- logger.error(f"ollama updats costs failed! exp: {e}")
-
def get_choice_text(self, resp: dict) -> str:
"""get the resp content from llm response"""
assist_msg = resp.get("message", {})
@@ -69,28 +50,28 @@ class OllamaLLM(BaseLLM):
chunk = chunk.decode(encoding)
return json.loads(chunk)
- async def _achat_completion(self, messages: list[dict]) -> dict:
+ async def _achat_completion(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> dict:
resp, _, _ = await self.client.arequest(
method=self.http_method,
url=self.suffix_url,
params=self._const_kwargs(messages),
- request_timeout=LLM_API_TIMEOUT,
+ request_timeout=self.get_timeout(timeout),
)
resp = self._decode_and_load(resp)
usage = self.get_usage(resp)
self._update_costs(usage)
return resp
- async def acompletion(self, messages: list[dict], timeout=3) -> dict:
- return await self._achat_completion(messages)
+ async def acompletion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> dict:
+ return await self._achat_completion(messages, timeout=self.get_timeout(timeout))
- async def _achat_completion_stream(self, messages: list[dict]) -> str:
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> str:
stream_resp, _, _ = await self.client.arequest(
method=self.http_method,
url=self.suffix_url,
stream=True,
params=self._const_kwargs(messages, stream=True),
- request_timeout=LLM_API_TIMEOUT,
+ request_timeout=self.get_timeout(timeout),
)
collected_content = []
@@ -110,17 +91,3 @@ class OllamaLLM(BaseLLM):
self._update_costs(usage)
full_content = "".join(collected_content)
return full_content
-
- @retry(
- stop=stop_after_attempt(3),
- wait=wait_random_exponential(min=1, max=60),
- after=after_log(logger, logger.level("WARNING").name),
- retry=retry_if_exception_type(ConnectionError),
- retry_error_callback=log_and_reraise,
- )
- async def acompletion_text(self, messages: list[dict], stream=False, timeout: int = 3) -> str:
- """response in async with stream or non-stream mode"""
- if stream:
- return await self._achat_completion_stream(messages)
- resp = await self._achat_completion(messages)
- return self.get_choice_text(resp)
diff --git a/metagpt/provider/open_llm_api.py b/metagpt/provider/open_llm_api.py
deleted file mode 100644
index a29b263a4..000000000
--- a/metagpt/provider/open_llm_api.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# @Desc : self-host open llm model with openai-compatible interface
-
-from openai.types import CompletionUsage
-
-from metagpt.configs.llm_config import LLMConfig, LLMType
-from metagpt.logs import logger
-from metagpt.provider.llm_provider_registry import register_provider
-from metagpt.provider.openai_api import OpenAILLM
-from metagpt.utils.cost_manager import Costs, TokenCostManager
-from metagpt.utils.token_counter import count_message_tokens, count_string_tokens
-
-
-@register_provider(LLMType.OPEN_LLM)
-class OpenLLM(OpenAILLM):
- def __init__(self, config: LLMConfig):
- super().__init__(config)
- self._cost_manager = TokenCostManager()
-
- def _make_client_kwargs(self) -> dict:
- kwargs = dict(api_key="sk-xxx", base_url=self.config.base_url)
- return kwargs
-
- def _calc_usage(self, messages: list[dict], rsp: str) -> CompletionUsage:
- usage = CompletionUsage(prompt_tokens=0, completion_tokens=0, total_tokens=0)
- if not self.config.calc_usage:
- return usage
-
- try:
- usage.prompt_tokens = count_message_tokens(messages, "open-llm-model")
- usage.completion_tokens = count_string_tokens(rsp, "open-llm-model")
- except Exception as e:
- logger.error(f"usage calculation failed!: {e}")
-
- return usage
-
- def _update_costs(self, usage: CompletionUsage):
- if self.config.calc_usage and usage:
- try:
- # use OpenLLMCostManager not CONFIG.cost_manager
- self._cost_manager.update_cost(usage.prompt_tokens, usage.completion_tokens, self.model)
- except Exception as e:
- logger.error(f"updating costs failed!, exp: {e}")
-
- def get_costs(self) -> Costs:
- return self._cost_manager.get_costs()
diff --git a/metagpt/provider/openai_api.py b/metagpt/provider/openai_api.py
index 63e68c9bd..dbfed72df 100644
--- a/metagpt/provider/openai_api.py
+++ b/metagpt/provider/openai_api.py
@@ -6,9 +6,11 @@
@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.
@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.
"""
+from __future__ import annotations
import json
-from typing import AsyncIterator, Optional, Union
+import re
+from typing import Optional, Union
from openai import APIConnectionError, AsyncOpenAI, AsyncStream
from openai._base_client import AsyncHttpxClientWrapper
@@ -23,13 +25,13 @@ from tenacity import (
)
from metagpt.configs.llm_config import LLMConfig, LLMType
+from metagpt.const import USE_CONFIG_TIMEOUT
from metagpt.logs import log_llm_stream, logger
from metagpt.provider.base_llm import BaseLLM
from metagpt.provider.constant import GENERAL_FUNCTION_SCHEMA
from metagpt.provider.llm_provider_registry import register_provider
-from metagpt.schema import Message
-from metagpt.utils.common import CodeParser, decode_image
-from metagpt.utils.cost_manager import CostManager, Costs
+from metagpt.utils.common import CodeParser, decode_image, log_and_reraise
+from metagpt.utils.cost_manager import CostManager
from metagpt.utils.exceptions import handle_exception
from metagpt.utils.token_counter import (
count_message_tokens,
@@ -38,33 +40,20 @@ from metagpt.utils.token_counter import (
)
-def log_and_reraise(retry_state):
- logger.error(f"Retry attempts exhausted. Last exception: {retry_state.outcome.exception()}")
- logger.warning(
- """
-Recommend going to https://deepwisdom.feishu.cn/wiki/MsGnwQBjiif9c3koSJNcYaoSnu4#part-XdatdVlhEojeAfxaaEZcMV3ZniQ
-See FAQ 5.8
-"""
- )
- raise retry_state.outcome.exception()
-
-
-@register_provider(LLMType.OPENAI)
+@register_provider([LLMType.OPENAI, LLMType.FIREWORKS, LLMType.OPEN_LLM, LLMType.MOONSHOT, LLMType.MISTRAL, LLMType.YI])
class OpenAILLM(BaseLLM):
"""Check https://platform.openai.com/examples for examples"""
def __init__(self, config: LLMConfig):
self.config = config
- self._init_model()
self._init_client()
self.auto_max_tokens = False
self.cost_manager: Optional[CostManager] = None
- def _init_model(self):
- self.model = self.config.model # Used in _calc_usage & _cons_kwargs
-
def _init_client(self):
"""https://github.com/openai/openai-python#async-usage"""
+ self.model = self.config.model # Used in _calc_usage & _cons_kwargs
+ self.pricing_plan = self.config.pricing_plan or self.model
kwargs = self._make_client_kwargs()
self.aclient = AsyncOpenAI(**kwargs)
@@ -86,37 +75,58 @@ class OpenAILLM(BaseLLM):
return params
- async def _achat_completion_stream(self, messages: list[dict], timeout=3) -> AsyncIterator[str]:
+ async def _achat_completion_stream(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> str:
response: AsyncStream[ChatCompletionChunk] = await self.aclient.chat.completions.create(
- **self._cons_kwargs(messages, timeout=timeout), stream=True
+ **self._cons_kwargs(messages, timeout=self.get_timeout(timeout)), stream=True
)
-
+ usage = None
+ collected_messages = []
async for chunk in response:
chunk_message = chunk.choices[0].delta.content or "" if chunk.choices else "" # extract the message
- yield chunk_message
+ finish_reason = (
+ chunk.choices[0].finish_reason if chunk.choices and hasattr(chunk.choices[0], "finish_reason") else None
+ )
+ log_llm_stream(chunk_message)
+ collected_messages.append(chunk_message)
+ if finish_reason:
+ if hasattr(chunk, "usage"):
+ # Some services have usage as an attribute of the chunk, such as Fireworks
+ usage = CompletionUsage(**chunk.usage)
+ elif hasattr(chunk.choices[0], "usage"):
+ # The usage of some services is an attribute of chunk.choices[0], such as Moonshot
+ usage = CompletionUsage(**chunk.choices[0].usage)
- def _cons_kwargs(self, messages: list[dict], timeout=3, **extra_kwargs) -> dict:
+ log_llm_stream("\n")
+ full_reply_content = "".join(collected_messages)
+ if not usage:
+ # Some services do not provide the usage attribute, such as OpenAI or OpenLLM
+ usage = self._calc_usage(messages, full_reply_content)
+
+ self._update_costs(usage)
+ return full_reply_content
+
+ def _cons_kwargs(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT, **extra_kwargs) -> dict:
kwargs = {
"messages": messages,
"max_tokens": self._get_max_tokens(messages),
- "n": 1,
+ # "n": 1, # Some services do not provide this parameter, such as mistral
# "stop": None, # default it's None and gpt4-v can't have this one
- "temperature": 0.3,
+ "temperature": self.config.temperature,
"model": self.model,
- "timeout": max(self.config.timeout, timeout),
+ "timeout": self.get_timeout(timeout),
}
if extra_kwargs:
kwargs.update(extra_kwargs)
return kwargs
- async def _achat_completion(self, messages: list[dict], timeout=3) -> ChatCompletion:
- kwargs = self._cons_kwargs(messages, timeout=timeout)
+ async def _achat_completion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> ChatCompletion:
+ kwargs = self._cons_kwargs(messages, timeout=self.get_timeout(timeout))
rsp: ChatCompletion = await self.aclient.chat.completions.create(**kwargs)
self._update_costs(rsp.usage)
return rsp
- async def acompletion(self, messages: list[dict], timeout=3) -> ChatCompletion:
- return await self._achat_completion(messages, timeout=timeout)
+ async def acompletion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> ChatCompletion:
+ return await self._achat_completion(messages, timeout=self.get_timeout(timeout))
@retry(
wait=wait_random_exponential(min=1, max=60),
@@ -125,63 +135,24 @@ class OpenAILLM(BaseLLM):
retry=retry_if_exception_type(APIConnectionError),
retry_error_callback=log_and_reraise,
)
- async def acompletion_text(self, messages: list[dict], stream=False, timeout=3) -> str:
+ async def acompletion_text(self, messages: list[dict], stream=False, timeout=USE_CONFIG_TIMEOUT) -> str:
"""when streaming, print each token in place."""
if stream:
- resp = self._achat_completion_stream(messages, timeout=timeout)
+ return await self._achat_completion_stream(messages, timeout=timeout)
- collected_messages = []
- async for i in resp:
- log_llm_stream(i)
- collected_messages.append(i)
- log_llm_stream("\n")
-
- full_reply_content = "".join(collected_messages)
- usage = self._calc_usage(messages, full_reply_content)
- self._update_costs(usage)
- return full_reply_content
-
- rsp = await self._achat_completion(messages, timeout=timeout)
+ rsp = await self._achat_completion(messages, timeout=self.get_timeout(timeout))
return self.get_choice_text(rsp)
- def _func_configs(self, messages: list[dict], timeout=3, **kwargs) -> dict:
- """Note: Keep kwargs consistent with https://platform.openai.com/docs/api-reference/chat/create"""
- if "tools" not in kwargs:
- configs = {"tools": [{"type": "function", "function": GENERAL_FUNCTION_SCHEMA}]}
- kwargs.update(configs)
-
- return self._cons_kwargs(messages=messages, timeout=timeout, **kwargs)
-
- def _process_message(self, messages: Union[str, Message, list[dict], list[Message], list[str]]) -> list[dict]:
- """convert messages to list[dict]."""
- # 全部转成list
- if not isinstance(messages, list):
- messages = [messages]
-
- # 转成list[dict]
- processed_messages = []
- for msg in messages:
- if isinstance(msg, str):
- processed_messages.append({"role": "user", "content": msg})
- elif isinstance(msg, dict):
- assert set(msg.keys()) == set(["role", "content"])
- processed_messages.append(msg)
- elif isinstance(msg, Message):
- processed_messages.append(msg.to_dict())
- else:
- raise ValueError(
- f"Only support message type are: str, Message, dict, but got {type(messages).__name__}!"
- )
- return processed_messages
-
- async def _achat_completion_function(self, messages: list[dict], timeout=3, **chat_configs) -> ChatCompletion:
- messages = self._process_message(messages)
- kwargs = self._func_configs(messages=messages, timeout=timeout, **chat_configs)
+ async def _achat_completion_function(
+ self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT, **chat_configs
+ ) -> ChatCompletion:
+ messages = self.format_msg(messages)
+ kwargs = self._cons_kwargs(messages=messages, timeout=self.get_timeout(timeout), **chat_configs)
rsp: ChatCompletion = await self.aclient.chat.completions.create(**kwargs)
self._update_costs(rsp.usage)
return rsp
- async def aask_code(self, messages: list[dict], **kwargs) -> dict:
+ async def aask_code(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT, **kwargs) -> dict:
"""Use function of tools to ask a code.
Note: Keep kwargs consistent with https://platform.openai.com/docs/api-reference/chat/create
@@ -191,9 +162,36 @@ class OpenAILLM(BaseLLM):
>>> rsp = await llm.aask_code(msg)
# -> {'language': 'python', 'code': "print('Hello, World!')"}
"""
+ if "tools" not in kwargs:
+ configs = {"tools": [{"type": "function", "function": GENERAL_FUNCTION_SCHEMA}]}
+ kwargs.update(configs)
rsp = await self._achat_completion_function(messages, **kwargs)
return self.get_choice_function_arguments(rsp)
+ def _parse_arguments(self, arguments: str) -> dict:
+ """parse arguments in openai function call"""
+ if "language" not in arguments and "code" not in arguments:
+ logger.warning(f"Not found `code`, `language`, We assume it is pure code:\n {arguments}\n. ")
+ return {"language": "python", "code": arguments}
+
+ # 匹配language
+ language_pattern = re.compile(r'[\"\']?language[\"\']?\s*:\s*["\']([^"\']+?)["\']', re.DOTALL)
+ language_match = language_pattern.search(arguments)
+ language_value = language_match.group(1) if language_match else "python"
+
+ # 匹配code
+ code_pattern = r'(["\'`]{3}|["\'`])([\s\S]*?)\1'
+ try:
+ code_value = re.findall(code_pattern, arguments)[-1][-1]
+ except Exception as e:
+ logger.error(f"{e}, when re.findall({code_pattern}, {arguments})")
+ code_value = None
+
+ if code_value is None:
+ raise ValueError(f"Parse code error for {arguments}")
+ # arguments只有code的情况
+ return {"language": language_value, "code": code_value}
+
# @handle_exception
def get_choice_function_arguments(self, rsp: ChatCompletion) -> dict:
"""Required to provide the first function arguments of choice.
@@ -209,7 +207,14 @@ class OpenAILLM(BaseLLM):
and message.tool_calls[0].function.arguments is not None
):
# reponse is code
- return json.loads(message.tool_calls[0].function.arguments, strict=False)
+ try:
+ return json.loads(message.tool_calls[0].function.arguments, strict=False)
+ except json.decoder.JSONDecodeError as e:
+ error_msg = (
+ f"Got JSONDecodeError for \n{'--'*40} \n{message.tool_calls[0].function.arguments}, {str(e)}"
+ )
+ logger.error(error_msg)
+ return self._parse_arguments(message.tool_calls[0].function.arguments)
elif message.tool_calls is None and message.content is not None:
# reponse is code, fix openai tools_call respond bug,
# The response content is `code``, but it appears in the content instead of the arguments.
@@ -233,27 +238,19 @@ class OpenAILLM(BaseLLM):
return usage
try:
- usage.prompt_tokens = count_message_tokens(messages, self.model)
- usage.completion_tokens = count_string_tokens(rsp, self.model)
+ usage.prompt_tokens = count_message_tokens(messages, self.pricing_plan)
+ usage.completion_tokens = count_string_tokens(rsp, self.pricing_plan)
except Exception as e:
- logger.error(f"usage calculation failed: {e}")
+ logger.warning(f"usage calculation failed: {e}")
return usage
- @handle_exception
- def _update_costs(self, usage: CompletionUsage):
- if self.config.calc_usage and usage and self.cost_manager:
- self.cost_manager.update_cost(usage.prompt_tokens, usage.completion_tokens, self.model)
-
- def get_costs(self) -> Costs:
- if not self.cost_manager:
- return Costs(0, 0, 0, 0)
- return self.cost_manager.get_costs()
-
def _get_max_tokens(self, messages: list[dict]):
if not self.auto_max_tokens:
return self.config.max_token
- return get_max_completion_tokens(messages, self.model, self.config.max_tokens)
+ # FIXME
+ # https://community.openai.com/t/why-is-gpt-3-5-turbo-1106-max-tokens-limited-to-4096/494973/3
+ return min(get_max_completion_tokens(messages, self.model, self.config.max_token), 4096)
@handle_exception
async def amoderation(self, content: Union[str, list[str]]):
diff --git a/metagpt/provider/qianfan_api.py b/metagpt/provider/qianfan_api.py
new file mode 100644
index 000000000..3d78c8bfc
--- /dev/null
+++ b/metagpt/provider/qianfan_api.py
@@ -0,0 +1,132 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @Desc : llm api of qianfan from Baidu, supports ERNIE(wen xin yi yan) and opensource models
+import copy
+import os
+
+import qianfan
+from qianfan import ChatCompletion
+from qianfan.resources.typing import JsonBody
+
+from metagpt.configs.llm_config import LLMConfig, LLMType
+from metagpt.const import USE_CONFIG_TIMEOUT
+from metagpt.logs import log_llm_stream
+from metagpt.provider.base_llm import BaseLLM
+from metagpt.provider.llm_provider_registry import register_provider
+from metagpt.utils.cost_manager import CostManager
+from metagpt.utils.token_counter import (
+ QIANFAN_ENDPOINT_TOKEN_COSTS,
+ QIANFAN_MODEL_TOKEN_COSTS,
+)
+
+
+@register_provider(LLMType.QIANFAN)
+class QianFanLLM(BaseLLM):
+ """
+ Refs
+ Auth: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/3lmokh7n6#%E3%80%90%E6%8E%A8%E8%8D%90%E3%80%91%E4%BD%BF%E7%94%A8%E5%AE%89%E5%85%A8%E8%AE%A4%E8%AF%81aksk%E9%89%B4%E6%9D%83%E8%B0%83%E7%94%A8%E6%B5%81%E7%A8%8B
+ Token Price: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/hlrk4akp7#tokens%E5%90%8E%E4%BB%98%E8%B4%B9
+ Models: https://cloud.baidu.com/doc/WENXINWORKSHOP/s/wlmhm7vuo#%E5%AF%B9%E8%AF%9Dchat
+ https://cloud.baidu.com/doc/WENXINWORKSHOP/s/xlmokikxe#%E6%94%AF%E6%8C%81%E6%A8%A1%E5%9E%8B%E5%88%97%E8%A1%A8
+ """
+
+ def __init__(self, config: LLMConfig):
+ self.config = config
+ self.use_system_prompt = False # only some ERNIE-x related models support system_prompt
+ self.__init_qianfan()
+ self.cost_manager = CostManager(token_costs=self.token_costs)
+
+ def __init_qianfan(self):
+ if self.config.access_key and self.config.secret_key:
+ # for system level auth, use access_key and secret_key, recommended by official
+ # set environment variable due to official recommendation
+ os.environ.setdefault("QIANFAN_ACCESS_KEY", self.config.access_key)
+ os.environ.setdefault("QIANFAN_SECRET_KEY", self.config.secret_key)
+ elif self.config.api_key and self.config.secret_key:
+ # for application level auth, use api_key and secret_key
+ # set environment variable due to official recommendation
+ os.environ.setdefault("QIANFAN_AK", self.config.api_key)
+ os.environ.setdefault("QIANFAN_SK", self.config.secret_key)
+ else:
+ raise ValueError("Set the `access_key`&`secret_key` or `api_key`&`secret_key` first")
+
+ support_system_pairs = [
+ ("ERNIE-Bot-4", "completions_pro"), # (model, corresponding-endpoint)
+ ("ERNIE-Bot-8k", "ernie_bot_8k"),
+ ("ERNIE-Bot", "completions"),
+ ("ERNIE-Bot-turbo", "eb-instant"),
+ ("ERNIE-Speed", "ernie_speed"),
+ ("EB-turbo-AppBuilder", "ai_apaas"),
+ ]
+ if self.config.model in [pair[0] for pair in support_system_pairs]:
+ # only some ERNIE models support
+ self.use_system_prompt = True
+ if self.config.endpoint in [pair[1] for pair in support_system_pairs]:
+ self.use_system_prompt = True
+
+ assert not (self.config.model and self.config.endpoint), "Only set `model` or `endpoint` in the config"
+ assert self.config.model or self.config.endpoint, "Should set one of `model` or `endpoint` in the config"
+
+ self.token_costs = copy.deepcopy(QIANFAN_MODEL_TOKEN_COSTS)
+ self.token_costs.update(QIANFAN_ENDPOINT_TOKEN_COSTS)
+
+ # self deployed model on the cloud not to calculate usage, it charges resource pool rental fee
+ self.calc_usage = self.config.calc_usage and self.config.endpoint is None
+ self.aclient: ChatCompletion = qianfan.ChatCompletion()
+
+ def _const_kwargs(self, messages: list[dict], stream: bool = False) -> dict:
+ kwargs = {
+ "messages": messages,
+ "stream": stream,
+ }
+ if self.config.temperature > 0:
+ # different model has default temperature. only set when it's specified.
+ kwargs["temperature"] = self.config.temperature
+ if self.config.endpoint:
+ kwargs["endpoint"] = self.config.endpoint
+ elif self.config.model:
+ kwargs["model"] = self.config.model
+
+ if self.use_system_prompt:
+ # if the model support system prompt, extract and pass it
+ if messages[0]["role"] == "system":
+ kwargs["messages"] = messages[1:]
+ kwargs["system"] = messages[0]["content"] # set system prompt here
+ return kwargs
+
+ def _update_costs(self, usage: dict):
+ """update each request's token cost"""
+ model_or_endpoint = self.config.model or self.config.endpoint
+ local_calc_usage = model_or_endpoint in self.token_costs
+ super()._update_costs(usage, model_or_endpoint, local_calc_usage)
+
+ def get_choice_text(self, resp: JsonBody) -> str:
+ return resp.get("result", "")
+
+ def completion(self, messages: list[dict]) -> JsonBody:
+ resp = self.aclient.do(**self._const_kwargs(messages=messages, stream=False))
+ self._update_costs(resp.body.get("usage", {}))
+ return resp.body
+
+ async def _achat_completion(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> JsonBody:
+ resp = await self.aclient.ado(**self._const_kwargs(messages=messages, stream=False))
+ self._update_costs(resp.body.get("usage", {}))
+ return resp.body
+
+ async def acompletion(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> JsonBody:
+ return await self._achat_completion(messages, timeout=self.get_timeout(timeout))
+
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> str:
+ resp = await self.aclient.ado(**self._const_kwargs(messages=messages, stream=True))
+ collected_content = []
+ usage = {}
+ async for chunk in resp:
+ content = chunk.body.get("result", "")
+ usage = chunk.body.get("usage", {})
+ log_llm_stream(content)
+ collected_content.append(content)
+ log_llm_stream("\n")
+
+ self._update_costs(usage)
+ full_content = "".join(collected_content)
+ return full_content
diff --git a/metagpt/provider/spark_api.py b/metagpt/provider/spark_api.py
index 5e89c26d5..594267259 100644
--- a/metagpt/provider/spark_api.py
+++ b/metagpt/provider/spark_api.py
@@ -17,6 +17,7 @@ from wsgiref.handlers import format_date_time
import websocket # 使用websocket_client
from metagpt.configs.llm_config import LLMConfig, LLMType
+from metagpt.const import USE_CONFIG_TIMEOUT
from metagpt.logs import logger
from metagpt.provider.base_llm import BaseLLM
from metagpt.provider.llm_provider_registry import register_provider
@@ -31,13 +32,19 @@ class SparkLLM(BaseLLM):
def get_choice_text(self, rsp: dict) -> str:
return rsp["payload"]["choices"]["text"][-1]["content"]
- async def acompletion_text(self, messages: list[dict], stream=False, timeout: int = 3) -> str:
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = USE_CONFIG_TIMEOUT) -> str:
+ pass
+
+ async def acompletion_text(self, messages: list[dict], stream=False, timeout: int = USE_CONFIG_TIMEOUT) -> str:
# 不支持
# logger.warning("当前方法无法支持异步运行。当你使用acompletion时,并不能并行访问。")
w = GetMessageFromWeb(messages, self.config)
return w.run()
- async def acompletion(self, messages: list[dict], timeout=3):
+ async def _achat_completion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT):
+ pass
+
+ async def acompletion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT):
# 不支持异步
w = GetMessageFromWeb(messages, self.config)
return w.run()
diff --git a/metagpt/provider/zhipuai_api.py b/metagpt/provider/zhipuai_api.py
index 9108a1fba..2db441991 100644
--- a/metagpt/provider/zhipuai_api.py
+++ b/metagpt/provider/zhipuai_api.py
@@ -3,24 +3,17 @@
# @Desc : zhipuai LLM from https://open.bigmodel.cn/dev/api#sdk
from enum import Enum
+from typing import Optional
-import openai
-import zhipuai
-from requests import ConnectionError
-from tenacity import (
- after_log,
- retry,
- retry_if_exception_type,
- stop_after_attempt,
- wait_random_exponential,
-)
+from zhipuai.types.chat.chat_completion import Completion
from metagpt.configs.llm_config import LLMConfig, LLMType
-from metagpt.logs import log_llm_stream, logger
+from metagpt.const import USE_CONFIG_TIMEOUT
+from metagpt.logs import log_llm_stream
from metagpt.provider.base_llm import BaseLLM
from metagpt.provider.llm_provider_registry import register_provider
-from metagpt.provider.openai_api import log_and_reraise
from metagpt.provider.zhipuai.zhipu_model_api import ZhiPuModelAPI
+from metagpt.utils.cost_manager import CostManager
class ZhiPuEvent(Enum):
@@ -38,51 +31,37 @@ class ZhiPuAILLM(BaseLLM):
"""
def __init__(self, config: LLMConfig):
- self.__init_zhipuai(config)
- self.llm = ZhiPuModelAPI
- self.model = "chatglm_turbo" # so far only one model, just use it
- self.use_system_prompt: bool = False # zhipuai has no system prompt when use api
self.config = config
+ self.__init_zhipuai()
+ self.cost_manager: Optional[CostManager] = None
- def __init_zhipuai(self, config: LLMConfig):
- assert config.api_key
- zhipuai.api_key = config.api_key
- # due to use openai sdk, set the api_key but it will't be used.
- # openai.api_key = zhipuai.api_key # due to use openai sdk, set the api_key but it will't be used.
- if config.proxy:
- # FIXME: openai v1.x sdk has no proxy support
- openai.proxy = config.proxy
+ def __init_zhipuai(self):
+ assert self.config.api_key
+ self.api_key = self.config.api_key
+ self.model = self.config.model # so far, it support glm-3-turbo、glm-4
+ self.pricing_plan = self.config.pricing_plan or self.model
+ self.llm = ZhiPuModelAPI(api_key=self.api_key)
def _const_kwargs(self, messages: list[dict], stream: bool = False) -> dict:
kwargs = {"model": self.model, "messages": messages, "stream": stream, "temperature": 0.3}
return kwargs
- def _update_costs(self, usage: dict):
- """update each request's token cost"""
- if self.config.calc_usage:
- try:
- prompt_tokens = int(usage.get("prompt_tokens", 0))
- completion_tokens = int(usage.get("completion_tokens", 0))
- self.config.cost_manager.update_cost(prompt_tokens, completion_tokens, self.model)
- except Exception as e:
- logger.error(f"zhipuai updats costs failed! exp: {e}")
-
- def completion(self, messages: list[dict], timeout=3) -> dict:
- resp = self.llm.chat.completions.create(**self._const_kwargs(messages))
+ def completion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> dict:
+ resp: Completion = self.llm.chat.completions.create(**self._const_kwargs(messages))
usage = resp.usage.model_dump()
self._update_costs(usage)
return resp.model_dump()
- async def _achat_completion(self, messages: list[dict], timeout=3) -> dict:
+ async def _achat_completion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> dict:
resp = await self.llm.acreate(**self._const_kwargs(messages))
usage = resp.get("usage", {})
self._update_costs(usage)
return resp
- async def acompletion(self, messages: list[dict], timeout=3) -> dict:
- return await self._achat_completion(messages, timeout=timeout)
+ async def acompletion(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> dict:
+ return await self._achat_completion(messages, timeout=self.get_timeout(timeout))
- async def _achat_completion_stream(self, messages: list[dict], timeout=3) -> str:
+ async def _achat_completion_stream(self, messages: list[dict], timeout=USE_CONFIG_TIMEOUT) -> str:
response = await self.llm.acreate_stream(**self._const_kwargs(messages, stream=True))
collected_content = []
usage = {}
@@ -100,17 +79,3 @@ class ZhiPuAILLM(BaseLLM):
self._update_costs(usage)
full_content = "".join(collected_content)
return full_content
-
- @retry(
- stop=stop_after_attempt(3),
- wait=wait_random_exponential(min=1, max=60),
- after=after_log(logger, logger.level("WARNING").name),
- retry=retry_if_exception_type(ConnectionError),
- retry_error_callback=log_and_reraise,
- )
- async def acompletion_text(self, messages: list[dict], stream=False, timeout=3) -> str:
- """response in async with stream or non-stream mode"""
- if stream:
- return await self._achat_completion_stream(messages)
- resp = await self._achat_completion(messages)
- return self.get_choice_text(resp)
diff --git a/metagpt/rag/__init__.py b/metagpt/rag/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/metagpt/rag/engines/__init__.py b/metagpt/rag/engines/__init__.py
new file mode 100644
index 000000000..373181384
--- /dev/null
+++ b/metagpt/rag/engines/__init__.py
@@ -0,0 +1,5 @@
+"""Engines init"""
+
+from metagpt.rag.engines.simple import SimpleEngine
+
+__all__ = ["SimpleEngine"]
diff --git a/metagpt/rag/engines/simple.py b/metagpt/rag/engines/simple.py
new file mode 100644
index 000000000..02f9ca7b1
--- /dev/null
+++ b/metagpt/rag/engines/simple.py
@@ -0,0 +1,259 @@
+"""Simple Engine."""
+
+import json
+import os
+from typing import Any, Optional, Union
+
+from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
+from llama_index.core.callbacks.base import CallbackManager
+from llama_index.core.embeddings import BaseEmbedding
+from llama_index.core.embeddings.mock_embed_model import MockEmbedding
+from llama_index.core.indices.base import BaseIndex
+from llama_index.core.ingestion.pipeline import run_transformations
+from llama_index.core.llms import LLM
+from llama_index.core.node_parser import SentenceSplitter
+from llama_index.core.postprocessor.types import BaseNodePostprocessor
+from llama_index.core.query_engine import RetrieverQueryEngine
+from llama_index.core.response_synthesizers import (
+ BaseSynthesizer,
+ get_response_synthesizer,
+)
+from llama_index.core.retrievers import BaseRetriever
+from llama_index.core.schema import (
+ BaseNode,
+ Document,
+ NodeWithScore,
+ QueryBundle,
+ QueryType,
+ TransformComponent,
+)
+
+from metagpt.rag.factories import (
+ get_index,
+ get_rag_embedding,
+ get_rag_llm,
+ get_rankers,
+ get_retriever,
+)
+from metagpt.rag.interface import NoEmbedding, RAGObject
+from metagpt.rag.retrievers.base import ModifiableRAGRetriever, PersistableRAGRetriever
+from metagpt.rag.retrievers.hybrid_retriever import SimpleHybridRetriever
+from metagpt.rag.schema import (
+ BaseIndexConfig,
+ BaseRankerConfig,
+ BaseRetrieverConfig,
+ BM25RetrieverConfig,
+ ObjectNode,
+)
+from metagpt.utils.common import import_class
+
+
+class SimpleEngine(RetrieverQueryEngine):
+ """SimpleEngine is designed to be simple and straightforward.
+
+ It is a lightweight and easy-to-use search engine that integrates
+ document reading, embedding, indexing, retrieving, and ranking functionalities
+ into a single, straightforward workflow. It is designed to quickly set up a
+ search engine from a collection of documents.
+ """
+
+ def __init__(
+ self,
+ retriever: BaseRetriever,
+ response_synthesizer: Optional[BaseSynthesizer] = None,
+ node_postprocessors: Optional[list[BaseNodePostprocessor]] = None,
+ callback_manager: Optional[CallbackManager] = None,
+ index: Optional[BaseIndex] = None,
+ ) -> None:
+ super().__init__(
+ retriever=retriever,
+ response_synthesizer=response_synthesizer,
+ node_postprocessors=node_postprocessors,
+ callback_manager=callback_manager,
+ )
+ self.index = index
+
+ @classmethod
+ def from_docs(
+ cls,
+ input_dir: str = None,
+ input_files: list[str] = None,
+ transformations: Optional[list[TransformComponent]] = None,
+ embed_model: BaseEmbedding = None,
+ llm: LLM = None,
+ retriever_configs: list[BaseRetrieverConfig] = None,
+ ranker_configs: list[BaseRankerConfig] = None,
+ ) -> "SimpleEngine":
+ """From docs.
+
+ Must provide either `input_dir` or `input_files`.
+
+ Args:
+ input_dir: Path to the directory.
+ input_files: List of file paths to read (Optional; overrides input_dir, exclude).
+ transformations: Parse documents to nodes. Default [SentenceSplitter].
+ embed_model: Parse nodes to embedding. Must supported by llama index. Default OpenAIEmbedding.
+ llm: Must supported by llama index. Default OpenAI.
+ retriever_configs: Configuration for retrievers. If more than one config, will use SimpleHybridRetriever.
+ ranker_configs: Configuration for rankers.
+ """
+ if not input_dir and not input_files:
+ raise ValueError("Must provide either `input_dir` or `input_files`.")
+
+ documents = SimpleDirectoryReader(input_dir=input_dir, input_files=input_files).load_data()
+ cls._fix_document_metadata(documents)
+
+ index = VectorStoreIndex.from_documents(
+ documents=documents,
+ transformations=transformations or [SentenceSplitter()],
+ embed_model=cls._resolve_embed_model(embed_model, retriever_configs),
+ )
+ return cls._from_index(index, llm=llm, retriever_configs=retriever_configs, ranker_configs=ranker_configs)
+
+ @classmethod
+ def from_objs(
+ cls,
+ objs: Optional[list[RAGObject]] = None,
+ transformations: Optional[list[TransformComponent]] = None,
+ embed_model: BaseEmbedding = None,
+ llm: LLM = None,
+ retriever_configs: list[BaseRetrieverConfig] = None,
+ ranker_configs: list[BaseRankerConfig] = None,
+ ) -> "SimpleEngine":
+ """From objs.
+
+ Args:
+ objs: List of RAGObject.
+ transformations: Parse documents to nodes. Default [SentenceSplitter].
+ embed_model: Parse nodes to embedding. Must supported by llama index. Default OpenAIEmbedding.
+ llm: Must supported by llama index. Default OpenAI.
+ retriever_configs: Configuration for retrievers. If more than one config, will use SimpleHybridRetriever.
+ ranker_configs: Configuration for rankers.
+ """
+ if not objs and any(isinstance(config, BM25RetrieverConfig) for config in retriever_configs):
+ raise ValueError("In BM25RetrieverConfig, Objs must not be empty.")
+
+ objs = objs or []
+ nodes = [ObjectNode(text=obj.rag_key(), metadata=ObjectNode.get_obj_metadata(obj)) for obj in objs]
+ index = VectorStoreIndex(
+ nodes=nodes,
+ transformations=transformations or [SentenceSplitter()],
+ embed_model=cls._resolve_embed_model(embed_model, retriever_configs),
+ )
+ return cls._from_index(index, llm=llm, retriever_configs=retriever_configs, ranker_configs=ranker_configs)
+
+ @classmethod
+ def from_index(
+ cls,
+ index_config: BaseIndexConfig,
+ embed_model: BaseEmbedding = None,
+ llm: LLM = None,
+ retriever_configs: list[BaseRetrieverConfig] = None,
+ ranker_configs: list[BaseRankerConfig] = None,
+ ) -> "SimpleEngine":
+ """Load from previously maintained index by self.persist(), index_config contains persis_path."""
+ index = get_index(index_config, embed_model=cls._resolve_embed_model(embed_model, [index_config]))
+ return cls._from_index(index, llm=llm, retriever_configs=retriever_configs, ranker_configs=ranker_configs)
+
+ async def asearch(self, content: str, **kwargs) -> str:
+ """Inplement tools.SearchInterface"""
+ return await self.aquery(content)
+
+ async def aretrieve(self, query: QueryType) -> list[NodeWithScore]:
+ """Allow query to be str."""
+ query_bundle = QueryBundle(query) if isinstance(query, str) else query
+
+ nodes = await super().aretrieve(query_bundle)
+ self._try_reconstruct_obj(nodes)
+ return nodes
+
+ def add_docs(self, input_files: list[str]):
+ """Add docs to retriever. retriever must has add_nodes func."""
+ self._ensure_retriever_modifiable()
+
+ documents = SimpleDirectoryReader(input_files=input_files).load_data()
+ self._fix_document_metadata(documents)
+
+ nodes = run_transformations(documents, transformations=self.index._transformations)
+ self._save_nodes(nodes)
+
+ def add_objs(self, objs: list[RAGObject]):
+ """Adds objects to the retriever, storing each object's original form in metadata for future reference."""
+ self._ensure_retriever_modifiable()
+
+ nodes = [ObjectNode(text=obj.rag_key(), metadata=ObjectNode.get_obj_metadata(obj)) for obj in objs]
+ self._save_nodes(nodes)
+
+ def persist(self, persist_dir: Union[str, os.PathLike], **kwargs):
+ """Persist."""
+ self._ensure_retriever_persistable()
+
+ self._persist(str(persist_dir), **kwargs)
+
+ @classmethod
+ def _from_index(
+ cls,
+ index: BaseIndex,
+ llm: LLM = None,
+ retriever_configs: list[BaseRetrieverConfig] = None,
+ ranker_configs: list[BaseRankerConfig] = None,
+ ) -> "SimpleEngine":
+ llm = llm or get_rag_llm()
+ retriever = get_retriever(configs=retriever_configs, index=index) # Default index.as_retriever
+ rankers = get_rankers(configs=ranker_configs, llm=llm) # Default []
+
+ return cls(
+ retriever=retriever,
+ node_postprocessors=rankers,
+ response_synthesizer=get_response_synthesizer(llm=llm),
+ index=index,
+ )
+
+ def _ensure_retriever_modifiable(self):
+ self._ensure_retriever_of_type(ModifiableRAGRetriever)
+
+ def _ensure_retriever_persistable(self):
+ self._ensure_retriever_of_type(PersistableRAGRetriever)
+
+ def _ensure_retriever_of_type(self, required_type: BaseRetriever):
+ """Ensure that self.retriever is required_type, or at least one of its components, if it's a SimpleHybridRetriever.
+
+ Args:
+ required_type: The class that the retriever is expected to be an instance of.
+ """
+ if isinstance(self.retriever, SimpleHybridRetriever):
+ if not any(isinstance(r, required_type) for r in self.retriever.retrievers):
+ raise TypeError(
+ f"Must have at least one retriever of type {required_type.__name__} in SimpleHybridRetriever"
+ )
+
+ if not isinstance(self.retriever, required_type):
+ raise TypeError(f"The retriever is not of type {required_type.__name__}: {type(self.retriever)}")
+
+ def _save_nodes(self, nodes: list[BaseNode]):
+ self.retriever.add_nodes(nodes)
+
+ def _persist(self, persist_dir: str, **kwargs):
+ self.retriever.persist(persist_dir, **kwargs)
+
+ @staticmethod
+ def _try_reconstruct_obj(nodes: list[NodeWithScore]):
+ """If node is object, then dynamically reconstruct object, and save object to node.metadata["obj"]."""
+ for node in nodes:
+ if node.metadata.get("is_obj", False):
+ obj_cls = import_class(node.metadata["obj_cls_name"], node.metadata["obj_mod_name"])
+ obj_dict = json.loads(node.metadata["obj_json"])
+ node.metadata["obj"] = obj_cls(**obj_dict)
+
+ @staticmethod
+ def _fix_document_metadata(documents: list[Document]):
+ """LlamaIndex keep metadata['file_path'], which is unnecessary, maybe deleted in the near future."""
+ for doc in documents:
+ doc.excluded_embed_metadata_keys.append("file_path")
+
+ @staticmethod
+ def _resolve_embed_model(embed_model: BaseEmbedding = None, configs: list[Any] = None) -> BaseEmbedding:
+ if configs and all(isinstance(c, NoEmbedding) for c in configs):
+ return MockEmbedding(embed_dim=1)
+
+ return embed_model or get_rag_embedding()
diff --git a/metagpt/rag/factories/__init__.py b/metagpt/rag/factories/__init__.py
new file mode 100644
index 000000000..caa35405f
--- /dev/null
+++ b/metagpt/rag/factories/__init__.py
@@ -0,0 +1,9 @@
+"""RAG factories"""
+
+from metagpt.rag.factories.retriever import get_retriever
+from metagpt.rag.factories.ranker import get_rankers
+from metagpt.rag.factories.embedding import get_rag_embedding
+from metagpt.rag.factories.index import get_index
+from metagpt.rag.factories.llm import get_rag_llm
+
+__all__ = ["get_retriever", "get_rankers", "get_rag_embedding", "get_index", "get_rag_llm"]
diff --git a/metagpt/rag/factories/base.py b/metagpt/rag/factories/base.py
new file mode 100644
index 000000000..8f8155914
--- /dev/null
+++ b/metagpt/rag/factories/base.py
@@ -0,0 +1,59 @@
+"""Base Factory."""
+
+from typing import Any, Callable
+
+
+class GenericFactory:
+ """Designed to get objects based on any keys."""
+
+ def __init__(self, creators: dict[Any, Callable] = None):
+ """Creators is a dictionary.
+
+ Keys are identifiers, and the values are the associated creator function, which create objects.
+ """
+ self._creators = creators or {}
+
+ def get_instances(self, keys: list[Any], **kwargs) -> list[Any]:
+ """Get instances by keys."""
+ return [self.get_instance(key, **kwargs) for key in keys]
+
+ def get_instance(self, key: Any, **kwargs) -> Any:
+ """Get instance by key.
+
+ Raise Exception if key not found.
+ """
+ creator = self._creators.get(key)
+ if creator:
+ return creator(**kwargs)
+
+ raise ValueError(f"Creator not registered for key: {key}")
+
+
+class ConfigBasedFactory(GenericFactory):
+ """Designed to get objects based on object type."""
+
+ def get_instance(self, key: Any, **kwargs) -> Any:
+ """Key is config, such as a pydantic model.
+
+ Call func by the type of key, and the key will be passed to func.
+ """
+ creator = self._creators.get(type(key))
+ if creator:
+ return creator(key, **kwargs)
+
+ raise ValueError(f"Unknown config: {key}")
+
+ @staticmethod
+ def _val_from_config_or_kwargs(key: str, config: object = None, **kwargs) -> Any:
+ """It prioritizes the configuration object's value unless it is None, in which case it looks into kwargs."""
+ if config is not None and hasattr(config, key):
+ val = getattr(config, key)
+ if val is not None:
+ return val
+
+ if key in kwargs:
+ return kwargs[key]
+
+ raise KeyError(
+ f"The key '{key}' is required but not provided in either configuration object or keyword arguments."
+ )
diff --git a/metagpt/rag/factories/embedding.py b/metagpt/rag/factories/embedding.py
new file mode 100644
index 000000000..4247db256
--- /dev/null
+++ b/metagpt/rag/factories/embedding.py
@@ -0,0 +1,37 @@
+"""RAG Embedding Factory."""
+
+from llama_index.core.embeddings import BaseEmbedding
+from llama_index.embeddings.azure_openai import AzureOpenAIEmbedding
+from llama_index.embeddings.openai import OpenAIEmbedding
+
+from metagpt.config2 import config
+from metagpt.configs.llm_config import LLMType
+from metagpt.rag.factories.base import GenericFactory
+
+
+class RAGEmbeddingFactory(GenericFactory):
+ """Create LlamaIndex Embedding with MetaGPT's config."""
+
+ def __init__(self):
+ creators = {
+ LLMType.OPENAI: self._create_openai,
+ LLMType.AZURE: self._create_azure,
+ }
+ super().__init__(creators)
+
+ def get_rag_embedding(self, key: LLMType = None) -> BaseEmbedding:
+ """Key is LLMType, default use config.llm.api_type."""
+ return super().get_instance(key or config.llm.api_type)
+
+ def _create_openai(self):
+ return OpenAIEmbedding(api_key=config.llm.api_key, api_base=config.llm.base_url)
+
+ def _create_azure(self):
+ return AzureOpenAIEmbedding(
+ azure_endpoint=config.llm.base_url,
+ api_key=config.llm.api_key,
+ api_version=config.llm.api_version,
+ )
+
+
+get_rag_embedding = RAGEmbeddingFactory().get_rag_embedding
diff --git a/metagpt/rag/factories/index.py b/metagpt/rag/factories/index.py
new file mode 100644
index 000000000..6aad695e7
--- /dev/null
+++ b/metagpt/rag/factories/index.py
@@ -0,0 +1,63 @@
+"""RAG Index Factory."""
+
+import chromadb
+from llama_index.core import StorageContext, VectorStoreIndex, load_index_from_storage
+from llama_index.core.embeddings import BaseEmbedding
+from llama_index.core.indices.base import BaseIndex
+from llama_index.vector_stores.faiss import FaissVectorStore
+
+from metagpt.rag.factories.base import ConfigBasedFactory
+from metagpt.rag.schema import (
+ BaseIndexConfig,
+ BM25IndexConfig,
+ ChromaIndexConfig,
+ FAISSIndexConfig,
+)
+from metagpt.rag.vector_stores.chroma import ChromaVectorStore
+
+
+class RAGIndexFactory(ConfigBasedFactory):
+ def __init__(self):
+ creators = {
+ FAISSIndexConfig: self._create_faiss,
+ ChromaIndexConfig: self._create_chroma,
+ BM25IndexConfig: self._create_bm25,
+ }
+ super().__init__(creators)
+
+ def get_index(self, config: BaseIndexConfig, **kwargs) -> BaseIndex:
+ """Key is PersistType."""
+ return super().get_instance(config, **kwargs)
+
+ def _create_faiss(self, config: FAISSIndexConfig, **kwargs) -> VectorStoreIndex:
+ embed_model = self._extract_embed_model(config, **kwargs)
+
+ vector_store = FaissVectorStore.from_persist_dir(str(config.persist_path))
+ storage_context = StorageContext.from_defaults(vector_store=vector_store, persist_dir=config.persist_path)
+ index = load_index_from_storage(storage_context=storage_context, embed_model=embed_model)
+ return index
+
+ def _create_chroma(self, config: ChromaIndexConfig, **kwargs) -> VectorStoreIndex:
+ embed_model = self._extract_embed_model(config, **kwargs)
+
+ db = chromadb.PersistentClient(str(config.persist_path))
+ chroma_collection = db.get_or_create_collection(config.collection_name)
+ vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
+ index = VectorStoreIndex.from_vector_store(
+ vector_store,
+ embed_model=embed_model,
+ )
+ return index
+
+ def _create_bm25(self, config: BM25IndexConfig, **kwargs) -> VectorStoreIndex:
+ embed_model = self._extract_embed_model(config, **kwargs)
+
+ storage_context = StorageContext.from_defaults(persist_dir=config.persist_path)
+ index = load_index_from_storage(storage_context=storage_context, embed_model=embed_model)
+ return index
+
+ def _extract_embed_model(self, config, **kwargs) -> BaseEmbedding:
+ return self._val_from_config_or_kwargs("embed_model", config, **kwargs)
+
+
+get_index = RAGIndexFactory().get_index
diff --git a/metagpt/rag/factories/llm.py b/metagpt/rag/factories/llm.py
new file mode 100644
index 000000000..1cdbab14d
--- /dev/null
+++ b/metagpt/rag/factories/llm.py
@@ -0,0 +1,54 @@
+"""RAG LLM."""
+
+from typing import Any
+
+from llama_index.core.constants import DEFAULT_CONTEXT_WINDOW
+from llama_index.core.llms import (
+ CompletionResponse,
+ CompletionResponseGen,
+ CustomLLM,
+ LLMMetadata,
+)
+from llama_index.core.llms.callbacks import llm_completion_callback
+from pydantic import Field
+
+from metagpt.config2 import config
+from metagpt.llm import LLM
+from metagpt.provider.base_llm import BaseLLM
+from metagpt.utils.async_helper import run_coroutine_in_new_loop
+from metagpt.utils.token_counter import TOKEN_MAX
+
+
+class RAGLLM(CustomLLM):
+ """LlamaIndex's LLM is different from MetaGPT's LLM.
+
+ Inherit CustomLLM from llamaindex, making MetaGPT's LLM can be used by LlamaIndex.
+ """
+
+ model_infer: BaseLLM = Field(..., description="The MetaGPT's LLM.")
+ context_window: int = TOKEN_MAX.get(config.llm.model, DEFAULT_CONTEXT_WINDOW)
+ num_output: int = config.llm.max_token
+ model_name: str = config.llm.model
+
+ @property
+ def metadata(self) -> LLMMetadata:
+ """Get LLM metadata."""
+ return LLMMetadata(context_window=self.context_window, num_output=self.num_output, model_name=self.model_name)
+
+ @llm_completion_callback()
+ def complete(self, prompt: str, **kwargs: Any) -> CompletionResponse:
+ return run_coroutine_in_new_loop(self.acomplete(prompt, **kwargs))
+
+ @llm_completion_callback()
+ async def acomplete(self, prompt: str, formatted: bool = False, **kwargs: Any) -> CompletionResponse:
+ text = await self.model_infer.aask(msg=prompt, stream=False)
+ return CompletionResponse(text=text)
+
+ @llm_completion_callback()
+ def stream_complete(self, prompt: str, **kwargs: Any) -> CompletionResponseGen:
+ ...
+
+
+def get_rag_llm(model_infer: BaseLLM = None) -> RAGLLM:
+ """Get llm that can be used by LlamaIndex."""
+ return RAGLLM(model_infer=model_infer or LLM())
diff --git a/metagpt/rag/factories/ranker.py b/metagpt/rag/factories/ranker.py
new file mode 100644
index 000000000..f05599e15
--- /dev/null
+++ b/metagpt/rag/factories/ranker.py
@@ -0,0 +1,35 @@
+"""RAG Ranker Factory."""
+
+from llama_index.core.llms import LLM
+from llama_index.core.postprocessor import LLMRerank
+from llama_index.core.postprocessor.types import BaseNodePostprocessor
+
+from metagpt.rag.factories.base import ConfigBasedFactory
+from metagpt.rag.schema import BaseRankerConfig, LLMRankerConfig
+
+
+class RankerFactory(ConfigBasedFactory):
+ """Modify creators for dynamically instance implementation."""
+
+ def __init__(self):
+ creators = {
+ LLMRankerConfig: self._create_llm_ranker,
+ }
+ super().__init__(creators)
+
+ def get_rankers(self, configs: list[BaseRankerConfig] = None, **kwargs) -> list[BaseNodePostprocessor]:
+ """Creates and returns a retriever instance based on the provided configurations."""
+ if not configs:
+ return []
+
+ return super().get_instances(configs, **kwargs)
+
+ def _create_llm_ranker(self, config: LLMRankerConfig, **kwargs) -> LLMRerank:
+ config.llm = self._extract_llm(config, **kwargs)
+ return LLMRerank(**config.model_dump())
+
+ def _extract_llm(self, config: BaseRankerConfig = None, **kwargs) -> LLM:
+ return self._val_from_config_or_kwargs("llm", config, **kwargs)
+
+
+get_rankers = RankerFactory().get_rankers
diff --git a/metagpt/rag/factories/retriever.py b/metagpt/rag/factories/retriever.py
new file mode 100644
index 000000000..ba48c753e
--- /dev/null
+++ b/metagpt/rag/factories/retriever.py
@@ -0,0 +1,86 @@
+"""RAG Retriever Factory."""
+
+import copy
+
+import chromadb
+import faiss
+from llama_index.core import StorageContext, VectorStoreIndex
+from llama_index.core.vector_stores.types import BasePydanticVectorStore
+from llama_index.vector_stores.faiss import FaissVectorStore
+
+from metagpt.rag.factories.base import ConfigBasedFactory
+from metagpt.rag.retrievers.base import RAGRetriever
+from metagpt.rag.retrievers.bm25_retriever import DynamicBM25Retriever
+from metagpt.rag.retrievers.chroma_retriever import ChromaRetriever
+from metagpt.rag.retrievers.faiss_retriever import FAISSRetriever
+from metagpt.rag.retrievers.hybrid_retriever import SimpleHybridRetriever
+from metagpt.rag.schema import (
+ BaseRetrieverConfig,
+ BM25RetrieverConfig,
+ ChromaRetrieverConfig,
+ FAISSRetrieverConfig,
+ IndexRetrieverConfig,
+)
+from metagpt.rag.vector_stores.chroma import ChromaVectorStore
+
+
+class RetrieverFactory(ConfigBasedFactory):
+ """Modify creators for dynamically instance implementation."""
+
+ def __init__(self):
+ creators = {
+ FAISSRetrieverConfig: self._create_faiss_retriever,
+ BM25RetrieverConfig: self._create_bm25_retriever,
+ ChromaRetrieverConfig: self._create_chroma_retriever,
+ }
+ super().__init__(creators)
+
+ def get_retriever(self, configs: list[BaseRetrieverConfig] = None, **kwargs) -> RAGRetriever:
+ """Creates and returns a retriever instance based on the provided configurations.
+
+ If multiple retrievers, using SimpleHybridRetriever.
+ """
+ if not configs:
+ return self._create_default(**kwargs)
+
+ retrievers = super().get_instances(configs, **kwargs)
+
+ return SimpleHybridRetriever(*retrievers) if len(retrievers) > 1 else retrievers[0]
+
+ def _create_default(self, **kwargs) -> RAGRetriever:
+ return self._extract_index(**kwargs).as_retriever()
+
+ def _create_faiss_retriever(self, config: FAISSRetrieverConfig, **kwargs) -> FAISSRetriever:
+ vector_store = FaissVectorStore(faiss_index=faiss.IndexFlatL2(config.dimensions))
+ config.index = self._build_index_from_vector_store(config, vector_store, **kwargs)
+ return FAISSRetriever(**config.model_dump())
+
+ def _create_bm25_retriever(self, config: BM25RetrieverConfig, **kwargs) -> DynamicBM25Retriever:
+ config.index = copy.deepcopy(self._extract_index(config, **kwargs))
+ nodes = list(config.index.docstore.docs.values())
+ return DynamicBM25Retriever(nodes=nodes, **config.model_dump())
+
+ def _create_chroma_retriever(self, config: ChromaRetrieverConfig, **kwargs) -> ChromaRetriever:
+ db = chromadb.PersistentClient(path=str(config.persist_path))
+ chroma_collection = db.get_or_create_collection(config.collection_name)
+ vector_store = ChromaVectorStore(chroma_collection=chroma_collection)
+ config.index = self._build_index_from_vector_store(config, vector_store, **kwargs)
+ return ChromaRetriever(**config.model_dump())
+
+ def _extract_index(self, config: BaseRetrieverConfig = None, **kwargs) -> VectorStoreIndex:
+ return self._val_from_config_or_kwargs("index", config, **kwargs)
+
+ def _build_index_from_vector_store(
+ self, config: IndexRetrieverConfig, vector_store: BasePydanticVectorStore, **kwargs
+ ) -> VectorStoreIndex:
+ storage_context = StorageContext.from_defaults(vector_store=vector_store)
+ old_index = self._extract_index(config, **kwargs)
+ new_index = VectorStoreIndex(
+ nodes=list(old_index.docstore.docs.values()),
+ storage_context=storage_context,
+ embed_model=old_index._embed_model,
+ )
+ return new_index
+
+
+get_retriever = RetrieverFactory().get_retriever
diff --git a/metagpt/rag/interface.py b/metagpt/rag/interface.py
new file mode 100644
index 000000000..867605edc
--- /dev/null
+++ b/metagpt/rag/interface.py
@@ -0,0 +1,24 @@
+"""RAG Interfaces."""
+
+from typing import Protocol, runtime_checkable
+
+
+@runtime_checkable
+class RAGObject(Protocol):
+ """Support rag add object."""
+
+ def rag_key(self) -> str:
+ """For rag search."""
+
+ def model_dump_json(self) -> str:
+ """For rag persist.
+
+ Pydantic Model don't need to implement this, as there is a built-in function named model_dump_json.
+ """
+
+
+@runtime_checkable
+class NoEmbedding(Protocol):
+ """Some retriever does not require embeddings, e.g. BM25"""
+
+ _no_embedding: bool
diff --git a/metagpt/rag/rankers/__init__.py b/metagpt/rag/rankers/__init__.py
new file mode 100644
index 000000000..82743487c
--- /dev/null
+++ b/metagpt/rag/rankers/__init__.py
@@ -0,0 +1 @@
+"""Rankers init"""
diff --git a/metagpt/rag/rankers/base.py b/metagpt/rag/rankers/base.py
new file mode 100644
index 000000000..a533a8b90
--- /dev/null
+++ b/metagpt/rag/rankers/base.py
@@ -0,0 +1,19 @@
+"""Base Ranker."""
+
+from abc import abstractmethod
+from typing import Optional
+
+from llama_index.core.postprocessor.types import BaseNodePostprocessor
+from llama_index.core.schema import NodeWithScore, QueryBundle
+
+
+class RAGRanker(BaseNodePostprocessor):
+ """inherit from llama_index"""
+
+ @abstractmethod
+ def _postprocess_nodes(
+ self,
+ nodes: list[NodeWithScore],
+ query_bundle: Optional[QueryBundle] = None,
+ ) -> list[NodeWithScore]:
+ """postprocess nodes."""
diff --git a/metagpt/rag/retrievers/__init__.py b/metagpt/rag/retrievers/__init__.py
new file mode 100644
index 000000000..2f70e0328
--- /dev/null
+++ b/metagpt/rag/retrievers/__init__.py
@@ -0,0 +1,5 @@
+"""Retrievers init."""
+
+from metagpt.rag.retrievers.hybrid_retriever import SimpleHybridRetriever
+
+__all__ = ["SimpleHybridRetriever"]
diff --git a/metagpt/rag/retrievers/base.py b/metagpt/rag/retrievers/base.py
new file mode 100644
index 000000000..a7b836833
--- /dev/null
+++ b/metagpt/rag/retrievers/base.py
@@ -0,0 +1,47 @@
+"""Base retriever."""
+
+from abc import abstractmethod
+
+from llama_index.core.retrievers import BaseRetriever
+from llama_index.core.schema import BaseNode, NodeWithScore, QueryType
+
+from metagpt.utils.reflection import check_methods
+
+
+class RAGRetriever(BaseRetriever):
+ """Inherit from llama_index"""
+
+ @abstractmethod
+ async def _aretrieve(self, query: QueryType) -> list[NodeWithScore]:
+ """Retrieve nodes"""
+
+ def _retrieve(self, query: QueryType) -> list[NodeWithScore]:
+ """Retrieve nodes"""
+
+
+class ModifiableRAGRetriever(RAGRetriever):
+ """Support modification."""
+
+ @classmethod
+ def __subclasshook__(cls, C):
+ if cls is ModifiableRAGRetriever:
+ return check_methods(C, "add_nodes")
+ return NotImplemented
+
+ @abstractmethod
+ def add_nodes(self, nodes: list[BaseNode], **kwargs) -> None:
+ """To support add docs, must inplement this func"""
+
+
+class PersistableRAGRetriever(RAGRetriever):
+ """Support persistent."""
+
+ @classmethod
+ def __subclasshook__(cls, C):
+ if cls is PersistableRAGRetriever:
+ return check_methods(C, "persist")
+ return NotImplemented
+
+ @abstractmethod
+ def persist(self, persist_dir: str, **kwargs) -> None:
+ """To support persist, must inplement this func"""
diff --git a/metagpt/rag/retrievers/bm25_retriever.py b/metagpt/rag/retrievers/bm25_retriever.py
new file mode 100644
index 000000000..241820cf4
--- /dev/null
+++ b/metagpt/rag/retrievers/bm25_retriever.py
@@ -0,0 +1,47 @@
+"""BM25 retriever."""
+from typing import Callable, Optional
+
+from llama_index.core import VectorStoreIndex
+from llama_index.core.callbacks.base import CallbackManager
+from llama_index.core.constants import DEFAULT_SIMILARITY_TOP_K
+from llama_index.core.schema import BaseNode, IndexNode
+from llama_index.retrievers.bm25 import BM25Retriever
+from rank_bm25 import BM25Okapi
+
+
+class DynamicBM25Retriever(BM25Retriever):
+ """BM25 retriever."""
+
+ def __init__(
+ self,
+ nodes: list[BaseNode],
+ tokenizer: Optional[Callable[[str], list[str]]] = None,
+ similarity_top_k: int = DEFAULT_SIMILARITY_TOP_K,
+ callback_manager: Optional[CallbackManager] = None,
+ objects: Optional[list[IndexNode]] = None,
+ object_map: Optional[dict] = None,
+ verbose: bool = False,
+ index: VectorStoreIndex = None,
+ ) -> None:
+ super().__init__(
+ nodes=nodes,
+ tokenizer=tokenizer,
+ similarity_top_k=similarity_top_k,
+ callback_manager=callback_manager,
+ object_map=object_map,
+ objects=objects,
+ verbose=verbose,
+ )
+ self._index = index
+
+ def add_nodes(self, nodes: list[BaseNode], **kwargs) -> None:
+ """Support add nodes."""
+ self._nodes.extend(nodes)
+ self._corpus = [self._tokenizer(node.get_content()) for node in self._nodes]
+ self.bm25 = BM25Okapi(self._corpus)
+
+ self._index.insert_nodes(nodes, **kwargs)
+
+ def persist(self, persist_dir: str, **kwargs) -> None:
+ """Support persist."""
+ self._index.storage_context.persist(persist_dir)
diff --git a/metagpt/rag/retrievers/chroma_retriever.py b/metagpt/rag/retrievers/chroma_retriever.py
new file mode 100644
index 000000000..d41f375e4
--- /dev/null
+++ b/metagpt/rag/retrievers/chroma_retriever.py
@@ -0,0 +1,17 @@
+"""Chroma retriever."""
+
+from llama_index.core.retrievers import VectorIndexRetriever
+from llama_index.core.schema import BaseNode
+
+
+class ChromaRetriever(VectorIndexRetriever):
+ """Chroma retriever."""
+
+ def add_nodes(self, nodes: list[BaseNode], **kwargs) -> None:
+ """Support add nodes."""
+ self._index.insert_nodes(nodes, **kwargs)
+
+ def persist(self, persist_dir: str, **kwargs) -> None:
+ """Support persist.
+
+ Chromadb automatically saves, so there is no need to implement."""
diff --git a/metagpt/rag/retrievers/faiss_retriever.py b/metagpt/rag/retrievers/faiss_retriever.py
new file mode 100644
index 000000000..7e543cce2
--- /dev/null
+++ b/metagpt/rag/retrievers/faiss_retriever.py
@@ -0,0 +1,16 @@
+"""FAISS retriever."""
+
+from llama_index.core.retrievers import VectorIndexRetriever
+from llama_index.core.schema import BaseNode
+
+
+class FAISSRetriever(VectorIndexRetriever):
+ """FAISS retriever."""
+
+ def add_nodes(self, nodes: list[BaseNode], **kwargs) -> None:
+ """Support add nodes"""
+ self._index.insert_nodes(nodes, **kwargs)
+
+ def persist(self, persist_dir: str, **kwargs) -> None:
+ """Support persist."""
+ self._index.storage_context.persist(persist_dir)
diff --git a/metagpt/rag/retrievers/hybrid_retriever.py b/metagpt/rag/retrievers/hybrid_retriever.py
new file mode 100644
index 000000000..c725bfc20
--- /dev/null
+++ b/metagpt/rag/retrievers/hybrid_retriever.py
@@ -0,0 +1,48 @@
+"""Hybrid retriever."""
+
+import copy
+
+from llama_index.core.schema import BaseNode, QueryType
+
+from metagpt.rag.retrievers.base import RAGRetriever
+
+
+class SimpleHybridRetriever(RAGRetriever):
+ """A composite retriever that aggregates search results from multiple retrievers."""
+
+ def __init__(self, *retrievers):
+ self.retrievers: list[RAGRetriever] = retrievers
+ super().__init__()
+
+ async def _aretrieve(self, query: QueryType, **kwargs):
+ """Asynchronously retrieves and aggregates search results from all configured retrievers.
+
+ This method queries each retriever in the `retrievers` list with the given query and
+ additional keyword arguments. It then combines the results, ensuring that each node is
+ unique, based on the node's ID.
+ """
+ all_nodes = []
+ for retriever in self.retrievers:
+ # Prevent retriever changing query
+ query_copy = copy.deepcopy(query)
+ nodes = await retriever.aretrieve(query_copy, **kwargs)
+ all_nodes.extend(nodes)
+
+ # combine all nodes
+ result = []
+ node_ids = set()
+ for n in all_nodes:
+ if n.node.node_id not in node_ids:
+ result.append(n)
+ node_ids.add(n.node.node_id)
+ return result
+
+ def add_nodes(self, nodes: list[BaseNode]) -> None:
+ """Support add nodes."""
+ for r in self.retrievers:
+ r.add_nodes(nodes)
+
+ def persist(self, persist_dir: str, **kwargs) -> None:
+ """Support persist."""
+ for r in self.retrievers:
+ r.persist(persist_dir, **kwargs)
diff --git a/metagpt/rag/schema.py b/metagpt/rag/schema.py
new file mode 100644
index 000000000..cae1c2979
--- /dev/null
+++ b/metagpt/rag/schema.py
@@ -0,0 +1,124 @@
+"""RAG schemas."""
+
+from pathlib import Path
+from typing import Any, Union
+
+from llama_index.core.embeddings import BaseEmbedding
+from llama_index.core.indices.base import BaseIndex
+from llama_index.core.schema import TextNode
+from pydantic import BaseModel, ConfigDict, Field, PrivateAttr
+
+from metagpt.rag.interface import RAGObject
+
+
+class BaseRetrieverConfig(BaseModel):
+ """Common config for retrievers.
+
+ If add new subconfig, it is necessary to add the corresponding instance implementation in rag.factories.retriever.
+ """
+
+ model_config = ConfigDict(arbitrary_types_allowed=True)
+ similarity_top_k: int = Field(default=5, description="Number of top-k similar results to return during retrieval.")
+
+
+class IndexRetrieverConfig(BaseRetrieverConfig):
+ """Config for Index-basd retrievers."""
+
+ index: BaseIndex = Field(default=None, description="Index for retriver.")
+
+
+class FAISSRetrieverConfig(IndexRetrieverConfig):
+ """Config for FAISS-based retrievers."""
+
+ dimensions: int = Field(default=1536, description="Dimensionality of the vectors for FAISS index construction.")
+
+
+class BM25RetrieverConfig(IndexRetrieverConfig):
+ """Config for BM25-based retrievers."""
+
+ _no_embedding: bool = PrivateAttr(default=True)
+
+
+class ChromaRetrieverConfig(IndexRetrieverConfig):
+ """Config for Chroma-based retrievers."""
+
+ persist_path: Union[str, Path] = Field(default="./chroma_db", description="The directory to save data.")
+ collection_name: str = Field(default="metagpt", description="The name of the collection.")
+
+
+class BaseRankerConfig(BaseModel):
+ """Common config for rankers.
+
+ If add new subconfig, it is necessary to add the corresponding instance implementation in rag.factories.ranker.
+ """
+
+ model_config = ConfigDict(arbitrary_types_allowed=True)
+
+ top_n: int = Field(default=5, description="The number of top results to return.")
+
+
+class LLMRankerConfig(BaseRankerConfig):
+ """Config for LLM-based rankers."""
+
+ llm: Any = Field(
+ default=None,
+ description="The LLM to rerank with. using Any instead of LLM, as llama_index.core.llms.LLM is pydantic.v1.",
+ )
+
+
+class BaseIndexConfig(BaseModel):
+ """Common config for index.
+
+ If add new subconfig, it is necessary to add the corresponding instance implementation in rag.factories.index.
+ """
+
+ persist_path: Union[str, Path] = Field(description="The directory of saved data.")
+
+
+class VectorIndexConfig(BaseIndexConfig):
+ """Config for vector-based index."""
+
+ embed_model: BaseEmbedding = Field(default=None, description="Embed model.")
+
+
+class FAISSIndexConfig(VectorIndexConfig):
+ """Config for faiss-based index."""
+
+
+class ChromaIndexConfig(VectorIndexConfig):
+ """Config for chroma-based index."""
+
+ collection_name: str = Field(default="metagpt", description="The name of the collection.")
+
+
+class BM25IndexConfig(BaseIndexConfig):
+ """Config for bm25-based index."""
+
+ _no_embedding: bool = PrivateAttr(default=True)
+
+
+class ObjectNodeMetadata(BaseModel):
+ """Metadata of ObjectNode."""
+
+ is_obj: bool = Field(default=True)
+ obj: Any = Field(default=None, description="When rag retrieve, will reconstruct obj from obj_json")
+ obj_json: str = Field(..., description="The json of object, e.g. obj.model_dump_json()")
+ obj_cls_name: str = Field(..., description="The class name of object, e.g. obj.__class__.__name__")
+ obj_mod_name: str = Field(..., description="The module name of class, e.g. obj.__class__.__module__")
+
+
+class ObjectNode(TextNode):
+ """RAG add object."""
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+ self.excluded_llm_metadata_keys = list(ObjectNodeMetadata.model_fields.keys())
+ self.excluded_embed_metadata_keys = self.excluded_llm_metadata_keys
+
+ @staticmethod
+ def get_obj_metadata(obj: RAGObject) -> dict:
+ metadata = ObjectNodeMetadata(
+ obj_json=obj.model_dump_json(), obj_cls_name=obj.__class__.__name__, obj_mod_name=obj.__class__.__module__
+ )
+
+ return metadata.model_dump()
diff --git a/metagpt/rag/vector_stores/__init__.py b/metagpt/rag/vector_stores/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/metagpt/rag/vector_stores/chroma/__init__.py b/metagpt/rag/vector_stores/chroma/__init__.py
new file mode 100644
index 000000000..87ba4d8a7
--- /dev/null
+++ b/metagpt/rag/vector_stores/chroma/__init__.py
@@ -0,0 +1,3 @@
+from metagpt.rag.vector_stores.chroma.base import ChromaVectorStore
+
+__all__ = ["ChromaVectorStore"]
diff --git a/metagpt/rag/vector_stores/chroma/base.py b/metagpt/rag/vector_stores/chroma/base.py
new file mode 100644
index 000000000..55e5bd40d
--- /dev/null
+++ b/metagpt/rag/vector_stores/chroma/base.py
@@ -0,0 +1,290 @@
+"""Chroma vector store.
+
+Refs to https://github.com/run-llama/llama_index/blob/v0.10.12/llama-index-integrations/vector_stores/llama-index-vector-stores-chroma/llama_index/vector_stores/chroma/base.py.
+The repo requires onnxruntime = "^1.17.0", which is too new for many OS systems, such as CentOS7.
+"""
+
+import math
+from typing import Any, Dict, Generator, List, Optional, cast
+
+import chromadb
+from chromadb.api.models.Collection import Collection
+from llama_index.core.bridge.pydantic import Field, PrivateAttr
+from llama_index.core.schema import BaseNode, MetadataMode, TextNode
+from llama_index.core.utils import truncate_text
+from llama_index.core.vector_stores.types import (
+ BasePydanticVectorStore,
+ MetadataFilters,
+ VectorStoreQuery,
+ VectorStoreQueryResult,
+)
+from llama_index.core.vector_stores.utils import (
+ legacy_metadata_dict_to_node,
+ metadata_dict_to_node,
+ node_to_metadata_dict,
+)
+
+from metagpt.logs import logger
+
+
+def _transform_chroma_filter_condition(condition: str) -> str:
+ """Translate standard metadata filter op to Chroma specific spec."""
+ if condition == "and":
+ return "$and"
+ elif condition == "or":
+ return "$or"
+ else:
+ raise ValueError(f"Filter condition {condition} not supported")
+
+
+def _transform_chroma_filter_operator(operator: str) -> str:
+ """Translate standard metadata filter operator to Chroma specific spec."""
+ if operator == "!=":
+ return "$ne"
+ elif operator == "==":
+ return "$eq"
+ elif operator == ">":
+ return "$gt"
+ elif operator == "<":
+ return "$lt"
+ elif operator == ">=":
+ return "$gte"
+ elif operator == "<=":
+ return "$lte"
+ else:
+ raise ValueError(f"Filter operator {operator} not supported")
+
+
+def _to_chroma_filter(
+ standard_filters: MetadataFilters,
+) -> dict:
+ """Translate standard metadata filters to Chroma specific spec."""
+ filters = {}
+ filters_list = []
+ condition = standard_filters.condition or "and"
+ condition = _transform_chroma_filter_condition(condition)
+ if standard_filters.filters:
+ for filter in standard_filters.filters:
+ if filter.operator:
+ filters_list.append({filter.key: {_transform_chroma_filter_operator(filter.operator): filter.value}})
+ else:
+ filters_list.append({filter.key: filter.value})
+ if len(filters_list) == 1:
+ # If there is only one filter, return it directly
+ return filters_list[0]
+ elif len(filters_list) > 1:
+ filters[condition] = filters_list
+ return filters
+
+
+import_err_msg = "`chromadb` package not found, please run `pip install chromadb`"
+MAX_CHUNK_SIZE = 41665 # One less than the max chunk size for ChromaDB
+
+
+def chunk_list(lst: List[BaseNode], max_chunk_size: int) -> Generator[List[BaseNode], None, None]:
+ """Yield successive max_chunk_size-sized chunks from lst.
+ Args:
+ lst (List[BaseNode]): list of nodes with embeddings
+ max_chunk_size (int): max chunk size
+ Yields:
+ Generator[List[BaseNode], None, None]: list of nodes with embeddings
+ """
+ for i in range(0, len(lst), max_chunk_size):
+ yield lst[i : i + max_chunk_size]
+
+
+class ChromaVectorStore(BasePydanticVectorStore):
+ """Chroma vector store.
+ In this vector store, embeddings are stored within a ChromaDB collection.
+ During query time, the index uses ChromaDB to query for the top
+ k most similar nodes.
+ Args:
+ chroma_collection (chromadb.api.models.Collection.Collection):
+ ChromaDB collection instance
+ """
+
+ stores_text: bool = True
+ flat_metadata: bool = True
+ collection_name: Optional[str]
+ host: Optional[str]
+ port: Optional[str]
+ ssl: bool
+ headers: Optional[Dict[str, str]]
+ persist_dir: Optional[str]
+ collection_kwargs: Dict[str, Any] = Field(default_factory=dict)
+ _collection: Any = PrivateAttr()
+
+ def __init__(
+ self,
+ chroma_collection: Optional[Any] = None,
+ collection_name: Optional[str] = None,
+ host: Optional[str] = None,
+ port: Optional[str] = None,
+ ssl: bool = False,
+ headers: Optional[Dict[str, str]] = None,
+ persist_dir: Optional[str] = None,
+ collection_kwargs: Optional[dict] = None,
+ **kwargs: Any,
+ ) -> None:
+ """Init params."""
+ collection_kwargs = collection_kwargs or {}
+ if chroma_collection is None:
+ client = chromadb.HttpClient(host=host, port=port, ssl=ssl, headers=headers)
+ self._collection = client.get_or_create_collection(name=collection_name, **collection_kwargs)
+ else:
+ self._collection = cast(Collection, chroma_collection)
+ super().__init__(
+ host=host,
+ port=port,
+ ssl=ssl,
+ headers=headers,
+ collection_name=collection_name,
+ persist_dir=persist_dir,
+ collection_kwargs=collection_kwargs or {},
+ )
+
+ @classmethod
+ def from_collection(cls, collection: Any) -> "ChromaVectorStore":
+ try:
+ from chromadb import Collection
+ except ImportError:
+ raise ImportError(import_err_msg)
+ if not isinstance(collection, Collection):
+ raise Exception("argument is not chromadb collection instance")
+ return cls(chroma_collection=collection)
+
+ @classmethod
+ def from_params(
+ cls,
+ collection_name: str,
+ host: Optional[str] = None,
+ port: Optional[str] = None,
+ ssl: bool = False,
+ headers: Optional[Dict[str, str]] = None,
+ persist_dir: Optional[str] = None,
+ collection_kwargs: dict = {},
+ **kwargs: Any,
+ ) -> "ChromaVectorStore":
+ if persist_dir:
+ client = chromadb.PersistentClient(path=persist_dir)
+ collection = client.get_or_create_collection(name=collection_name, **collection_kwargs)
+ elif host and port:
+ client = chromadb.HttpClient(host=host, port=port, ssl=ssl, headers=headers)
+ collection = client.get_or_create_collection(name=collection_name, **collection_kwargs)
+ else:
+ raise ValueError("Either `persist_dir` or (`host`,`port`) must be specified")
+ return cls(
+ chroma_collection=collection,
+ host=host,
+ port=port,
+ ssl=ssl,
+ headers=headers,
+ persist_dir=persist_dir,
+ collection_kwargs=collection_kwargs,
+ **kwargs,
+ )
+
+ @classmethod
+ def class_name(cls) -> str:
+ return "ChromaVectorStore"
+
+ def add(self, nodes: List[BaseNode], **add_kwargs: Any) -> List[str]:
+ """Add nodes to index.
+ Args:
+ nodes: List[BaseNode]: list of nodes with embeddings
+ """
+ if not self._collection:
+ raise ValueError("Collection not initialized")
+ max_chunk_size = MAX_CHUNK_SIZE
+ node_chunks = chunk_list(nodes, max_chunk_size)
+ all_ids = []
+ for node_chunk in node_chunks:
+ embeddings = []
+ metadatas = []
+ ids = []
+ documents = []
+ for node in node_chunk:
+ embeddings.append(node.get_embedding())
+ metadata_dict = node_to_metadata_dict(node, remove_text=True, flat_metadata=self.flat_metadata)
+ for key in metadata_dict:
+ if metadata_dict[key] is None:
+ metadata_dict[key] = ""
+ metadatas.append(metadata_dict)
+ ids.append(node.node_id)
+ documents.append(node.get_content(metadata_mode=MetadataMode.NONE))
+ self._collection.add(
+ embeddings=embeddings,
+ ids=ids,
+ metadatas=metadatas,
+ documents=documents,
+ )
+ all_ids.extend(ids)
+ return all_ids
+
+ def delete(self, ref_doc_id: str, **delete_kwargs: Any) -> None:
+ """
+ Delete nodes using with ref_doc_id.
+ Args:
+ ref_doc_id (str): The doc_id of the document to delete.
+ """
+ self._collection.delete(where={"document_id": ref_doc_id})
+
+ @property
+ def client(self) -> Any:
+ """Return client."""
+ return self._collection
+
+ def query(self, query: VectorStoreQuery, **kwargs: Any) -> VectorStoreQueryResult:
+ """Query index for top k most similar nodes.
+ Args:
+ query_embedding (List[float]): query embedding
+ similarity_top_k (int): top k most similar nodes
+ """
+ if query.filters is not None:
+ if "where" in kwargs:
+ raise ValueError(
+ "Cannot specify metadata filters via both query and kwargs. "
+ "Use kwargs only for chroma specific items that are "
+ "not supported via the generic query interface."
+ )
+ where = _to_chroma_filter(query.filters)
+ else:
+ where = kwargs.pop("where", {})
+ results = self._collection.query(
+ query_embeddings=query.query_embedding,
+ n_results=query.similarity_top_k,
+ where=where,
+ **kwargs,
+ )
+ logger.debug(f"> Top {len(results['documents'])} nodes:")
+ nodes = []
+ similarities = []
+ ids = []
+ for node_id, text, metadata, distance in zip(
+ results["ids"][0],
+ results["documents"][0],
+ results["metadatas"][0],
+ results["distances"][0],
+ ):
+ try:
+ node = metadata_dict_to_node(metadata)
+ node.set_content(text)
+ except Exception:
+ # NOTE: deprecated legacy logic for backward compatibility
+ metadata, node_info, relationships = legacy_metadata_dict_to_node(metadata)
+ node = TextNode(
+ text=text,
+ id_=node_id,
+ metadata=metadata,
+ start_char_idx=node_info.get("start", None),
+ end_char_idx=node_info.get("end", None),
+ relationships=relationships,
+ )
+ nodes.append(node)
+ similarity_score = math.exp(-distance)
+ similarities.append(similarity_score)
+ logger.debug(
+ f"> [Node {node_id}] [Similarity score: {similarity_score}] " f"{truncate_text(str(text), 100)}"
+ )
+ ids.append(node_id)
+ return VectorStoreQueryResult(nodes=nodes, similarities=similarities, ids=ids)
diff --git a/metagpt/repo_parser.py b/metagpt/repo_parser.py
index e91ebd215..bc3bae662 100644
--- a/metagpt/repo_parser.py
+++ b/metagpt/repo_parser.py
@@ -1,6 +1,10 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
+Build a symbols repository from source code.
+
+This script is designed to create a symbols repository from the provided source code.
+
@Time : 2023/11/17 17:58
@Author : alexanderwu
@File : repo_parser.py
@@ -15,15 +19,26 @@ from pathlib import Path
from typing import Dict, List, Optional
import pandas as pd
-from pydantic import BaseModel, Field
+from pydantic import BaseModel, Field, field_validator
from metagpt.const import AGGREGATION, COMPOSITION, GENERALIZATION
from metagpt.logs import logger
-from metagpt.utils.common import any_to_str, aread
+from metagpt.utils.common import any_to_str, aread, remove_white_spaces
from metagpt.utils.exceptions import handle_exception
class RepoFileInfo(BaseModel):
+ """
+ Repository data element that represents information about a file.
+
+ Attributes:
+ file (str): The name or path of the file.
+ classes (List): A list of class names present in the file.
+ functions (List): A list of function names present in the file.
+ globals (List): A list of global variable names present in the file.
+ page_info (List): A list of page-related information associated with the file.
+ """
+
file: str
classes: List = Field(default_factory=list)
functions: List = Field(default_factory=list)
@@ -32,6 +47,17 @@ class RepoFileInfo(BaseModel):
class CodeBlockInfo(BaseModel):
+ """
+ Repository data element representing information about a code block.
+
+ Attributes:
+ lineno (int): The starting line number of the code block.
+ end_lineno (int): The ending line number of the code block.
+ type_name (str): The type or category of the code block.
+ tokens (List): A list of tokens present in the code block.
+ properties (Dict): A dictionary containing additional properties associated with the code block.
+ """
+
lineno: int
end_lineno: int
type_name: str
@@ -39,31 +65,395 @@ class CodeBlockInfo(BaseModel):
properties: Dict = Field(default_factory=dict)
-class ClassInfo(BaseModel):
+class DotClassAttribute(BaseModel):
+ """
+ Repository data element representing a class attribute in dot format.
+
+ Attributes:
+ name (str): The name of the class attribute.
+ type_ (str): The type of the class attribute.
+ default_ (str): The default value of the class attribute.
+ description (str): A description of the class attribute.
+ compositions (List[str]): A list of compositions associated with the class attribute.
+ """
+
+ name: str = ""
+ type_: str = ""
+ default_: str = ""
+ description: str
+ compositions: List[str] = Field(default_factory=list)
+
+ @classmethod
+ def parse(cls, v: str) -> "DotClassAttribute":
+ """
+ Parses dot format text and returns a DotClassAttribute object.
+
+ Args:
+ v (str): Dot format text to be parsed.
+
+ Returns:
+ DotClassAttribute: An instance of the DotClassAttribute class representing the parsed data.
+ """
+ val = ""
+ meet_colon = False
+ meet_equals = False
+ for c in v:
+ if c == ":":
+ meet_colon = True
+ elif c == "=":
+ meet_equals = True
+ if not meet_colon:
+ val += ":"
+ meet_colon = True
+ val += c
+ if not meet_colon:
+ val += ":"
+ if not meet_equals:
+ val += "="
+
+ cix = val.find(":")
+ eix = val.rfind("=")
+ name = val[0:cix].strip()
+ type_ = val[cix + 1 : eix]
+ default_ = val[eix + 1 :].strip()
+
+ type_ = remove_white_spaces(type_) # remove white space
+ if type_ == "NoneType":
+ type_ = ""
+ if "Literal[" in type_:
+ pre_l, literal, post_l = cls._split_literal(type_)
+ composition_val = pre_l + "Literal" + post_l # replace Literal[...] with Literal
+ type_ = pre_l + literal + post_l
+ else:
+ type_ = re.sub(r"['\"]+", "", type_) # remove '"
+ composition_val = type_
+
+ if default_ == "None":
+ default_ = ""
+ compositions = cls.parse_compositions(composition_val)
+ return cls(name=name, type_=type_, default_=default_, description=v, compositions=compositions)
+
+ @staticmethod
+ def parse_compositions(types_part) -> List[str]:
+ """
+ Parses the type definition code block of source code and returns a list of compositions.
+
+ Args:
+ types_part: The type definition code block to be parsed.
+
+ Returns:
+ List[str]: A list of compositions extracted from the type definition code block.
+ """
+ if not types_part:
+ return []
+ modified_string = re.sub(r"[\[\],\(\)]", "|", types_part)
+ types = modified_string.split("|")
+ filters = {
+ "str",
+ "frozenset",
+ "set",
+ "int",
+ "float",
+ "complex",
+ "bool",
+ "dict",
+ "list",
+ "Union",
+ "Dict",
+ "Set",
+ "Tuple",
+ "NoneType",
+ "None",
+ "Any",
+ "Optional",
+ "Iterator",
+ "Literal",
+ "List",
+ }
+ result = set()
+ for t in types:
+ t = re.sub(r"['\"]+", "", t.strip())
+ if t and t not in filters:
+ result.add(t)
+ return list(result)
+
+ @staticmethod
+ def _split_literal(v):
+ """
+ Parses the literal definition code block and returns three parts: pre-part, literal-part, and post-part.
+
+ Args:
+ v: The literal definition code block to be parsed.
+
+ Returns:
+ Tuple[str, str, str]: A tuple containing the pre-part, literal-part, and post-part of the code block.
+ """
+ tag = "Literal["
+ bix = v.find(tag)
+ eix = len(v) - 1
+ counter = 1
+ for i in range(bix + len(tag), len(v) - 1):
+ c = v[i]
+ if c == "[":
+ counter += 1
+ continue
+ if c == "]":
+ counter -= 1
+ if counter > 0:
+ continue
+ eix = i
+ break
+ pre_l = v[0:bix]
+ post_l = v[eix + 1 :]
+ pre_l = re.sub(r"['\"]", "", pre_l) # remove '"
+ pos_l = re.sub(r"['\"]", "", post_l) # remove '"
+
+ return pre_l, v[bix : eix + 1], pos_l
+
+ @field_validator("compositions", mode="after")
+ @classmethod
+ def sort(cls, lst: List) -> List:
+ """
+ Auto-sorts a list attribute after making changes.
+
+ Args:
+ lst (List): The list attribute to be sorted.
+
+ Returns:
+ List: The sorted list.
+ """
+ lst.sort()
+ return lst
+
+
+class DotClassInfo(BaseModel):
+ """
+ Repository data element representing information about a class in dot format.
+
+ Attributes:
+ name (str): The name of the class.
+ package (Optional[str]): The package to which the class belongs (optional).
+ attributes (Dict[str, DotClassAttribute]): A dictionary of attributes associated with the class.
+ methods (Dict[str, DotClassMethod]): A dictionary of methods associated with the class.
+ compositions (List[str]): A list of compositions associated with the class.
+ aggregations (List[str]): A list of aggregations associated with the class.
+ """
+
name: str
package: Optional[str] = None
- attributes: Dict[str, str] = Field(default_factory=dict)
- methods: Dict[str, str] = Field(default_factory=dict)
+ attributes: Dict[str, DotClassAttribute] = Field(default_factory=dict)
+ methods: Dict[str, DotClassMethod] = Field(default_factory=dict)
+ compositions: List[str] = Field(default_factory=list)
+ aggregations: List[str] = Field(default_factory=list)
+
+ @field_validator("compositions", "aggregations", mode="after")
+ @classmethod
+ def sort(cls, lst: List) -> List:
+ """
+ Auto-sorts a list attribute after making changes.
+
+ Args:
+ lst (List): The list attribute to be sorted.
+
+ Returns:
+ List: The sorted list.
+ """
+ lst.sort()
+ return lst
-class ClassRelationship(BaseModel):
+class DotClassRelationship(BaseModel):
+ """
+ Repository data element representing a relationship between two classes in dot format.
+
+ Attributes:
+ src (str): The source class of the relationship.
+ dest (str): The destination class of the relationship.
+ relationship (str): The type or nature of the relationship.
+ label (Optional[str]): An optional label associated with the relationship.
+ """
+
src: str = ""
dest: str = ""
relationship: str = ""
label: Optional[str] = None
+class DotReturn(BaseModel):
+ """
+ Repository data element representing a function or method return type in dot format.
+
+ Attributes:
+ type_ (str): The type of the return.
+ description (str): A description of the return type.
+ compositions (List[str]): A list of compositions associated with the return type.
+ """
+
+ type_: str = ""
+ description: str
+ compositions: List[str] = Field(default_factory=list)
+
+ @classmethod
+ def parse(cls, v: str) -> "DotReturn" | None:
+ """
+ Parses the return type part of dot format text and returns a DotReturn object.
+
+ Args:
+ v (str): The dot format text containing the return type part to be parsed.
+
+ Returns:
+ DotReturn | None: An instance of the DotReturn class representing the parsed return type,
+ or None if parsing fails.
+ """
+ if not v:
+ return DotReturn(description=v)
+ type_ = remove_white_spaces(v)
+ compositions = DotClassAttribute.parse_compositions(type_)
+ return cls(type_=type_, description=v, compositions=compositions)
+
+ @field_validator("compositions", mode="after")
+ @classmethod
+ def sort(cls, lst: List) -> List:
+ """
+ Auto-sorts a list attribute after making changes.
+
+ Args:
+ lst (List): The list attribute to be sorted.
+
+ Returns:
+ List: The sorted list.
+ """
+ lst.sort()
+ return lst
+
+
+class DotClassMethod(BaseModel):
+ name: str
+ args: List[DotClassAttribute] = Field(default_factory=list)
+ return_args: Optional[DotReturn] = None
+ description: str
+ aggregations: List[str] = Field(default_factory=list)
+
+ @classmethod
+ def parse(cls, v: str) -> "DotClassMethod":
+ """
+ Parses a dot format method text and returns a DotClassMethod object.
+
+ Args:
+ v (str): The dot format text containing method information to be parsed.
+
+ Returns:
+ DotClassMethod: An instance of the DotClassMethod class representing the parsed method.
+ """
+ bix = v.find("(")
+ eix = v.rfind(")")
+ rix = v.rfind(":")
+ if rix < 0 or rix < eix:
+ rix = eix
+ name_part = v[0:bix].strip()
+ args_part = v[bix + 1 : eix].strip()
+ return_args_part = v[rix + 1 :].strip()
+
+ name = cls._parse_name(name_part)
+ args = cls._parse_args(args_part)
+ return_args = DotReturn.parse(return_args_part)
+ aggregations = set()
+ for i in args:
+ aggregations.update(set(i.compositions))
+ aggregations.update(set(return_args.compositions))
+
+ return cls(name=name, args=args, description=v, return_args=return_args, aggregations=list(aggregations))
+
+ @staticmethod
+ def _parse_name(v: str) -> str:
+ """
+ Parses the dot format method name part and returns the method name.
+
+ Args:
+ v (str): The dot format text containing the method name part to be parsed.
+
+ Returns:
+ str: The parsed method name.
+ """
+ tags = [">", ""]
+ if tags[0] in v:
+ bix = v.find(tags[0]) + len(tags[0])
+ eix = v.rfind(tags[1])
+ return v[bix:eix].strip()
+ return v.strip()
+
+ @staticmethod
+ def _parse_args(v: str) -> List[DotClassAttribute]:
+ """
+ Parses the dot format method arguments part and returns the parsed arguments.
+
+ Args:
+ v (str): The dot format text containing the arguments part to be parsed.
+
+ Returns:
+ str: The parsed method arguments.
+ """
+ if not v:
+ return []
+ parts = []
+ bix = 0
+ counter = 0
+ for i in range(0, len(v)):
+ c = v[i]
+ if c == "[":
+ counter += 1
+ continue
+ elif c == "]":
+ counter -= 1
+ continue
+ elif c == "," and counter == 0:
+ parts.append(v[bix:i].strip())
+ bix = i + 1
+ parts.append(v[bix:].strip())
+
+ attrs = []
+ for p in parts:
+ if p:
+ attr = DotClassAttribute.parse(p)
+ attrs.append(attr)
+ return attrs
+
+
class RepoParser(BaseModel):
+ """
+ Tool to build a symbols repository from a project directory.
+
+ Attributes:
+ base_directory (Path): The base directory of the project.
+ """
+
base_directory: Path = Field(default=None)
@classmethod
@handle_exception(exception_type=Exception, default_return=[])
def _parse_file(cls, file_path: Path) -> list:
- """Parse a Python file in the repository."""
+ """
+ Parses a Python file in the repository.
+
+ Args:
+ file_path (Path): The path to the Python file to be parsed.
+
+ Returns:
+ list: A list containing the parsed symbols from the file.
+ """
return ast.parse(file_path.read_text()).body
def extract_class_and_function_info(self, tree, file_path) -> RepoFileInfo:
- """Extract class, function, and global variable information from the AST."""
+ """
+ Extracts class, function, and global variable information from the Abstract Syntax Tree (AST).
+
+ Args:
+ tree: The Abstract Syntax Tree (AST) of the Python file.
+ file_path: The path to the Python file.
+
+ Returns:
+ RepoFileInfo: A RepoFileInfo object containing the extracted information.
+ """
file_info = RepoFileInfo(file=str(file_path.relative_to(self.base_directory)))
for node in tree:
info = RepoParser.node_to_str(node)
@@ -81,11 +471,17 @@ class RepoParser(BaseModel):
return file_info
def generate_symbols(self) -> List[RepoFileInfo]:
+ """
+ Builds a symbol repository from '.py' and '.js' files in the project directory.
+
+ Returns:
+ List[RepoFileInfo]: A list of RepoFileInfo objects containing the extracted information.
+ """
files_classes = []
directory = self.base_directory
matching_files = []
- extensions = ["*.py", "*.js"]
+ extensions = ["*.py"]
for ext in extensions:
matching_files += directory.rglob(ext)
for path in matching_files:
@@ -95,19 +491,38 @@ class RepoParser(BaseModel):
return files_classes
- def generate_json_structure(self, output_path):
- """Generate a JSON file documenting the repository structure."""
+ def generate_json_structure(self, output_path: Path):
+ """
+ Generates a JSON file documenting the repository structure.
+
+ Args:
+ output_path (Path): The path to the JSON file to be generated.
+ """
files_classes = [i.model_dump() for i in self.generate_symbols()]
output_path.write_text(json.dumps(files_classes, indent=4))
- def generate_dataframe_structure(self, output_path):
- """Generate a DataFrame documenting the repository structure and save as CSV."""
+ def generate_dataframe_structure(self, output_path: Path):
+ """
+ Generates a DataFrame documenting the repository structure and saves it as a CSV file.
+
+ Args:
+ output_path (Path): The path to the CSV file to be generated.
+ """
files_classes = [i.model_dump() for i in self.generate_symbols()]
df = pd.DataFrame(files_classes)
df.to_csv(output_path, index=False)
- def generate_structure(self, output_path=None, mode="json") -> Path:
- """Generate the structure of the repository as a specified format."""
+ def generate_structure(self, output_path: str | Path = None, mode="json") -> Path:
+ """
+ Generates the structure of the repository in a specified format.
+
+ Args:
+ output_path (str | Path): The path to the output file or directory. Default is None.
+ mode (str): The output format mode. Options: "json" (default), "csv", etc.
+
+ Returns:
+ Path: The path to the generated output file or directory.
+ """
output_file = self.base_directory / f"{self.base_directory.name}-structure.{mode}"
output_path = Path(output_path) if output_path else output_file
@@ -119,6 +534,16 @@ class RepoParser(BaseModel):
@staticmethod
def node_to_str(node) -> CodeBlockInfo | None:
+ """
+ Parses and converts an Abstract Syntax Tree (AST) node to a CodeBlockInfo object.
+
+ Args:
+ node: The AST node to be converted.
+
+ Returns:
+ CodeBlockInfo | None: A CodeBlockInfo object representing the parsed AST node,
+ or None if the conversion fails.
+ """
if isinstance(node, ast.Try):
return None
if any_to_str(node) == any_to_str(ast.Expr):
@@ -159,9 +584,19 @@ class RepoParser(BaseModel):
@staticmethod
def _parse_expr(node) -> List:
+ """
+ Parses an expression Abstract Syntax Tree (AST) node.
+
+ Args:
+ node: The AST node representing an expression.
+
+ Returns:
+ List: A list containing the parsed information from the expression node.
+ """
funcs = {
any_to_str(ast.Constant): lambda x: [any_to_str(x.value), RepoParser._parse_variable(x.value)],
any_to_str(ast.Call): lambda x: [any_to_str(x.value), RepoParser._parse_variable(x.value.func)],
+ any_to_str(ast.Tuple): lambda x: [any_to_str(x.value), RepoParser._parse_variable(x.value)],
}
func = funcs.get(any_to_str(node.value))
if func:
@@ -170,12 +605,30 @@ class RepoParser(BaseModel):
@staticmethod
def _parse_name(n):
+ """
+ Gets the 'name' value of an Abstract Syntax Tree (AST) node.
+
+ Args:
+ n: The AST node.
+
+ Returns:
+ The 'name' value of the AST node.
+ """
if n.asname:
return f"{n.name} as {n.asname}"
return n.name
@staticmethod
def _parse_if(n):
+ """
+ Parses an 'if' statement Abstract Syntax Tree (AST) node.
+
+ Args:
+ n: The AST node representing an 'if' statement.
+
+ Returns:
+ None or Parsed information from the 'if' statement node.
+ """
tokens = []
try:
if isinstance(n.test, ast.BoolOp):
@@ -187,10 +640,14 @@ class RepoParser(BaseModel):
v = RepoParser._parse_variable(n.test.left)
if v:
tokens.append(v)
- for item in n.test.comparators:
- v = RepoParser._parse_variable(item)
- if v:
- tokens.append(v)
+ if isinstance(n.test, ast.Name):
+ v = RepoParser._parse_variable(n.test)
+ tokens.append(v)
+ if hasattr(n.test, "comparators"):
+ for item in n.test.comparators:
+ v = RepoParser._parse_variable(item)
+ if v:
+ tokens.append(v)
return tokens
except Exception as e:
logger.warning(f"Unsupported if: {n}, err:{e}")
@@ -198,6 +655,15 @@ class RepoParser(BaseModel):
@staticmethod
def _parse_if_compare(n):
+ """
+ Parses an 'if' condition Abstract Syntax Tree (AST) node.
+
+ Args:
+ n: The AST node representing an 'if' condition.
+
+ Returns:
+ None or Parsed information from the 'if' condition node.
+ """
if hasattr(n, "left"):
return RepoParser._parse_variable(n.left)
else:
@@ -205,6 +671,15 @@ class RepoParser(BaseModel):
@staticmethod
def _parse_variable(node):
+ """
+ Parses a variable Abstract Syntax Tree (AST) node.
+
+ Args:
+ node: The AST node representing a variable.
+
+ Returns:
+ None or Parsed information from the variable node.
+ """
try:
funcs = {
any_to_str(ast.Constant): lambda x: x.value,
@@ -213,7 +688,7 @@ class RepoParser(BaseModel):
if hasattr(x.value, "id")
else f"{x.attr}",
any_to_str(ast.Call): lambda x: RepoParser._parse_variable(x.func),
- any_to_str(ast.Tuple): lambda x: "",
+ any_to_str(ast.Tuple): lambda x: [d.value for d in x.dims],
}
func = funcs.get(any_to_str(node))
if not func:
@@ -224,22 +699,42 @@ class RepoParser(BaseModel):
@staticmethod
def _parse_assign(node):
+ """
+ Parses an assignment Abstract Syntax Tree (AST) node.
+
+ Args:
+ node: The AST node representing an assignment.
+
+ Returns:
+ None or Parsed information from the assignment node.
+ """
return [RepoParser._parse_variable(t) for t in node.targets]
async def rebuild_class_views(self, path: str | Path = None):
+ """
+ Executes `pylint` to reconstruct the dot format class view repository file.
+
+ Args:
+ path (str | Path): The path to the target directory or file. Default is None.
+ """
if not path:
path = self.base_directory
path = Path(path)
if not path.exists():
return
+ init_file = path / "__init__.py"
+ if not init_file.exists():
+ raise ValueError("Failed to import module __init__ with error:No module named __init__.")
command = f"pyreverse {str(path)} -o dot"
- result = subprocess.run(command, shell=True, check=True, cwd=str(path))
+ output_dir = path / "__dot__"
+ output_dir.mkdir(parents=True, exist_ok=True)
+ result = subprocess.run(command, shell=True, check=True, cwd=str(output_dir))
if result.returncode != 0:
raise ValueError(f"{result}")
- class_view_pathname = path / "classes.dot"
+ class_view_pathname = output_dir / "classes.dot"
class_views = await self._parse_classes(class_view_pathname)
relationship_views = await self._parse_class_relationships(class_view_pathname)
- packages_pathname = path / "packages.dot"
+ packages_pathname = output_dir / "packages.dot"
class_views, relationship_views, package_root = RepoParser._repair_namespaces(
class_views=class_views, relationship_views=relationship_views, path=path
)
@@ -247,7 +742,17 @@ class RepoParser(BaseModel):
packages_pathname.unlink(missing_ok=True)
return class_views, relationship_views, package_root
- async def _parse_classes(self, class_view_pathname):
+ @staticmethod
+ async def _parse_classes(class_view_pathname: Path) -> List[DotClassInfo]:
+ """
+ Parses a dot format class view repository file.
+
+ Args:
+ class_view_pathname (Path): The path to the dot format class view repository file.
+
+ Returns:
+ List[DotClassInfo]: A list of DotClassInfo objects representing the parsed classes.
+ """
class_views = []
if not class_view_pathname.exists():
return class_views
@@ -258,22 +763,38 @@ class RepoParser(BaseModel):
if not package_name:
continue
class_name, members, functions = re.split(r"(? List[ClassRelationship]:
+ @staticmethod
+ async def _parse_class_relationships(class_view_pathname: Path) -> List[DotClassRelationship]:
+ """
+ Parses a dot format class view repository file.
+
+ Args:
+ class_view_pathname (Path): The path to the dot format class view repository file.
+
+ Returns:
+ List[DotClassRelationship]: A list of DotClassRelationship objects representing the parsed class relationships.
+ """
relationship_views = []
if not class_view_pathname.exists():
return relationship_views
@@ -287,7 +808,16 @@ class RepoParser(BaseModel):
return relationship_views
@staticmethod
- def _split_class_line(line):
+ def _split_class_line(line: str) -> (str, str):
+ """
+ Parses a dot format line about class info and returns the class name part and class members part.
+
+ Args:
+ line (str): The dot format line containing class information.
+
+ Returns:
+ Tuple[str, str]: A tuple containing the class name part and class members part.
+ """
part_splitor = '" ['
if part_splitor not in line:
return None, None
@@ -305,14 +835,25 @@ class RepoParser(BaseModel):
return class_name, info
@staticmethod
- def _split_relationship_line(line):
+ def _split_relationship_line(line: str) -> DotClassRelationship:
+ """
+ Parses a dot format line about the relationship of two classes and returns 'Generalize', 'Composite',
+ or 'Aggregate'.
+
+ Args:
+ line (str): The dot format line containing relationship information.
+
+ Returns:
+ DotClassRelationship: The object of relationship representing either 'Generalize', 'Composite',
+ or 'Aggregate' relationship.
+ """
splitters = [" -> ", " [", "];"]
idxs = []
for tag in splitters:
if tag not in line:
return None
idxs.append(line.find(tag))
- ret = ClassRelationship()
+ ret = DotClassRelationship()
ret.src = line[0 : idxs[0]].strip('"')
ret.dest = line[idxs[0] + len(splitters[0]) : idxs[1]].strip('"')
properties = line[idxs[1] + len(splitters[1]) : idxs[2]].strip(" ")
@@ -330,7 +871,16 @@ class RepoParser(BaseModel):
return ret
@staticmethod
- def _get_label(line):
+ def _get_label(line: str) -> str:
+ """
+ Parses a dot format line and returns the label information.
+
+ Args:
+ line (str): The dot format line containing label information.
+
+ Returns:
+ str: The label information parsed from the line.
+ """
tag = 'label="'
if tag not in line:
return ""
@@ -340,6 +890,15 @@ class RepoParser(BaseModel):
@staticmethod
def _create_path_mapping(path: str | Path) -> Dict[str, str]:
+ """
+ Creates a mapping table between source code files' paths and module names.
+
+ Args:
+ path (str | Path): The path to the source code files or directory.
+
+ Returns:
+ Dict[str, str]: A dictionary mapping source code file paths to their corresponding module names.
+ """
mappings = {
str(path).replace("/", "."): str(path),
}
@@ -363,8 +922,21 @@ class RepoParser(BaseModel):
@staticmethod
def _repair_namespaces(
- class_views: List[ClassInfo], relationship_views: List[ClassRelationship], path: str | Path
- ) -> (List[ClassInfo], List[ClassRelationship], str):
+ class_views: List[DotClassInfo], relationship_views: List[DotClassRelationship], path: str | Path
+ ) -> (List[DotClassInfo], List[DotClassRelationship], str):
+ """
+ Augments namespaces to the path-prefixed classes and relationships.
+
+ Args:
+ class_views (List[DotClassInfo]): List of DotClassInfo objects representing class views.
+ relationship_views (List[DotClassRelationship]): List of DotClassRelationship objects representing
+ relationships.
+ path (str | Path): The path to the source code files or directory.
+
+ Returns:
+ Tuple[List[DotClassInfo], List[DotClassRelationship], str]: A tuple containing the augmented class views,
+ relationships, and the root path of the package.
+ """
if not class_views:
return [], [], ""
c = class_views[0]
@@ -383,28 +955,49 @@ class RepoParser(BaseModel):
for c in class_views:
c.package = RepoParser._repair_ns(c.package, new_mappings)
- for i in range(len(relationship_views)):
- v = relationship_views[i]
+ for _, v in enumerate(relationship_views):
v.src = RepoParser._repair_ns(v.src, new_mappings)
v.dest = RepoParser._repair_ns(v.dest, new_mappings)
- relationship_views[i] = v
- return class_views, relationship_views, root_path
+ return class_views, relationship_views, str(path)[: len(root_path)]
@staticmethod
- def _repair_ns(package, mappings):
+ def _repair_ns(package: str, mappings: Dict[str, str]) -> str:
+ """
+ Replaces the package-prefix with the namespace-prefix.
+
+ Args:
+ package (str): The package to be repaired.
+ mappings (Dict[str, str]): A dictionary mapping source code file paths to their corresponding packages.
+
+ Returns:
+ str: The repaired namespace.
+ """
file_ns = package
+ ix = 0
while file_ns != "":
if file_ns not in mappings:
ix = file_ns.rfind(".")
file_ns = file_ns[0:ix]
continue
break
+ if file_ns == "":
+ return ""
internal_ns = package[ix + 1 :]
ns = mappings[file_ns] + ":" + internal_ns.replace(".", ":")
return ns
@staticmethod
- def _find_root(full_key, package) -> str:
+ def _find_root(full_key: str, package: str) -> str:
+ """
+ Returns the package root path based on the key, which is the full path, and the package information.
+
+ Args:
+ full_key (str): The full key representing the full path.
+ package (str): The package information.
+
+ Returns:
+ str: The package root path.
+ """
left = full_key
while left != "":
if left in package:
@@ -417,5 +1010,14 @@ class RepoParser(BaseModel):
return "." + full_key[0:ix]
-def is_func(node):
+def is_func(node) -> bool:
+ """
+ Returns True if the given node represents a function.
+
+ Args:
+ node: The Abstract Syntax Tree (AST) node.
+
+ Returns:
+ bool: True if the node represents a function, False otherwise.
+ """
return isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef))
diff --git a/metagpt/roles/__init__.py b/metagpt/roles/__init__.py
index f033a5dfa..08a0406b3 100644
--- a/metagpt/roles/__init__.py
+++ b/metagpt/roles/__init__.py
@@ -14,7 +14,6 @@ from metagpt.roles.engineer import Engineer
from metagpt.roles.qa_engineer import QaEngineer
from metagpt.roles.searcher import Searcher
from metagpt.roles.sales import Sales
-from metagpt.roles.customer_service import CustomerService
__all__ = [
@@ -26,5 +25,4 @@ __all__ = [
"QaEngineer",
"Searcher",
"Sales",
- "CustomerService",
]
diff --git a/metagpt/roles/assistant.py b/metagpt/roles/assistant.py
index 2774bd9b6..895fd8385 100644
--- a/metagpt/roles/assistant.py
+++ b/metagpt/roles/assistant.py
@@ -65,7 +65,7 @@ class Assistant(Role):
prompt += f"If the text explicitly want you to {desc}, return `[SKILL]: {name}` brief and clear. For instance: [SKILL]: {name}\n"
prompt += 'Otherwise, return `[TALK]: {talk}` brief and clear. For instance: if {talk} is "xxxx" return [TALK]: xxxx\n\n'
prompt += f"Now what specific action is explicitly mentioned in the text: {last_talk}\n"
- rsp = await self.llm.aask(prompt, ["You are an action classifier"])
+ rsp = await self.llm.aask(prompt, ["You are an action classifier"], stream=False)
logger.info(f"THINK: {prompt}\n, THINK RESULT: {rsp}\n")
return await self._plan(rsp, last_talk=last_talk)
diff --git a/metagpt/roles/ci/code_interpreter.py b/metagpt/roles/ci/code_interpreter.py
deleted file mode 100644
index 796abba04..000000000
--- a/metagpt/roles/ci/code_interpreter.py
+++ /dev/null
@@ -1,89 +0,0 @@
-from __future__ import annotations
-
-from pydantic import Field
-
-from metagpt.actions.ci.ask_review import ReviewConst
-from metagpt.actions.ci.execute_nb_code import ExecuteNbCode
-from metagpt.actions.ci.write_analysis_code import (
- WriteCodeWithoutTools,
- WriteCodeWithTools,
-)
-from metagpt.logs import logger
-from metagpt.roles import Role
-from metagpt.schema import Message, Task, TaskResult
-
-
-class CodeInterpreter(Role):
- name: str = "Charlie"
- profile: str = "CodeInterpreter"
- auto_run: bool = True
- use_tools: bool = False
- execute_code: ExecuteNbCode = Field(default_factory=ExecuteNbCode, exclude=True)
- tools: list[str] = []
-
- def __init__(
- self,
- auto_run=True,
- use_tools=False,
- tools=[],
- **kwargs,
- ):
- super().__init__(auto_run=auto_run, use_tools=use_tools, tools=tools, **kwargs)
- self._set_react_mode(react_mode="plan_and_act", auto_run=auto_run, use_tools=use_tools)
- if use_tools and tools:
- from metagpt.tools.tool_registry import (
- validate_tool_names, # import upon use
- )
-
- self.tools = validate_tool_names(tools)
- logger.info(f"will only use {self.tools} as tools")
-
- @property
- def working_memory(self):
- return self.rc.working_memory
-
- async def _act_on_task(self, current_task: Task) -> TaskResult:
- code, result, is_success = await self._write_and_exec_code()
- task_result = TaskResult(code=code, result=result, is_success=is_success)
- return task_result
-
- async def _write_and_exec_code(self, max_retry: int = 3):
- counter = 0
- success = False
-
- while not success and counter < max_retry:
- ### write code ###
- code, cause_by = await self._write_code()
-
- self.working_memory.add(Message(content=code["code"], role="assistant", cause_by=cause_by))
-
- ### execute code ###
- result, success = await self.execute_code.run(**code)
- print(result)
-
- self.working_memory.add(Message(content=result, role="user", cause_by=ExecuteNbCode))
-
- ### process execution result ###
- counter += 1
-
- if not success and counter >= max_retry:
- logger.info("coding failed!")
- review, _ = await self.planner.ask_review(auto_run=False, trigger=ReviewConst.CODE_REVIEW_TRIGGER)
- if ReviewConst.CHANGE_WORDS[0] in review:
- counter = 0 # redo the task again with help of human suggestions
-
- py_code = (
- code["code"] if code.get("language") == "python" else ""
- ) # use python code as final code; for markdown, return the rendered result instead of the code itself
-
- return py_code, result, success
-
- async def _write_code(self):
- todo = WriteCodeWithoutTools() if not self.use_tools else WriteCodeWithTools(selected_tools=self.tools)
- logger.info(f"ready to {todo.name}")
-
- context = self.planner.get_useful_memories()
- # print(*context, sep="\n***\n")
- code = await todo.run(context=context, plan=self.planner.plan, temperature=0.0)
-
- return code, todo
diff --git a/metagpt/roles/ci/ml_engineer.py b/metagpt/roles/ci/ml_engineer.py
deleted file mode 100644
index f8bcb2c89..000000000
--- a/metagpt/roles/ci/ml_engineer.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from metagpt.actions.ci.debug_code import DebugCode
-from metagpt.actions.ci.execute_nb_code import ExecuteNbCode
-from metagpt.actions.ci.ml_action import UpdateDataColumns, WriteCodeWithToolsML
-from metagpt.logs import logger
-from metagpt.roles.ci.code_interpreter import CodeInterpreter
-from metagpt.tools.tool_type import ToolType
-from metagpt.utils.common import any_to_str
-
-
-class MLEngineer(CodeInterpreter):
- name: str = "Mark"
- profile: str = "MLEngineer"
- debug_context: list = []
- latest_code: str = ""
-
- async def _write_code(self):
- if not self.use_tools:
- return await super()._write_code()
-
- # In a trial and errors settings, check whether this is our first attempt to tackle the task. If there is no code execution before, then it is.
- is_first_trial = any_to_str(ExecuteNbCode) not in [msg.cause_by for msg in self.working_memory.get()]
-
- if is_first_trial:
- # For the first trial, write task code from scratch
- column_info = await self._update_data_columns()
-
- logger.info("Write code with tools")
- tool_context, code = await WriteCodeWithToolsML(selected_tools=self.tools).run(
- context=[], # context assembled inside the Action
- plan=self.planner.plan,
- column_info=column_info,
- )
- self.debug_context = tool_context
- cause_by = WriteCodeWithToolsML
-
- else:
- # Previous trials resulted in error, debug and rewrite the code
- logger.warning("We got a bug, now start to debug...")
- code = await DebugCode().run(
- code=self.latest_code,
- runtime_result=self.working_memory.get(),
- context=self.debug_context,
- )
- logger.info(f"new code \n{code}")
- cause_by = DebugCode
-
- self.latest_code = code["code"]
-
- return code, cause_by
-
- async def _update_data_columns(self):
- current_task = self.planner.plan.current_task
- if current_task.task_type not in [
- ToolType.DATA_PREPROCESS.type_name,
- ToolType.FEATURE_ENGINEERING.type_name,
- ToolType.MODEL_TRAIN.type_name,
- ]:
- return ""
- logger.info("Check columns in updated data")
- code = await UpdateDataColumns().run(self.planner.plan)
- success = False
- result, success = await self.execute_code.run(**code)
- print(result)
- return result if success else ""
diff --git a/metagpt/roles/di/__init__.py b/metagpt/roles/di/__init__.py
new file mode 100644
index 000000000..e69de29bb
diff --git a/metagpt/roles/di/data_interpreter.py b/metagpt/roles/di/data_interpreter.py
new file mode 100644
index 000000000..a8534b710
--- /dev/null
+++ b/metagpt/roles/di/data_interpreter.py
@@ -0,0 +1,184 @@
+from __future__ import annotations
+
+import json
+from typing import Literal, Union
+
+from pydantic import Field, model_validator
+
+from metagpt.actions.di.ask_review import ReviewConst
+from metagpt.actions.di.execute_nb_code import ExecuteNbCode
+from metagpt.actions.di.write_analysis_code import CheckData, WriteAnalysisCode
+from metagpt.logs import logger
+from metagpt.prompts.di.write_analysis_code import DATA_INFO
+from metagpt.roles import Role
+from metagpt.schema import Message, Task, TaskResult
+from metagpt.strategy.task_type import TaskType
+from metagpt.tools.tool_recommend import BM25ToolRecommender, ToolRecommender
+from metagpt.utils.common import CodeParser
+
+REACT_THINK_PROMPT = """
+# User Requirement
+{user_requirement}
+# Context
+{context}
+
+Output a json following the format:
+```json
+{{
+ "thoughts": str = "Thoughts on current situation, reflect on how you should proceed to fulfill the user requirement",
+ "state": bool = "Decide whether you need to take more actions to complete the user requirement. Return true if you think so. Return false if you think the requirement has been completely fulfilled."
+}}
+```
+"""
+
+
+class DataInterpreter(Role):
+ name: str = "David"
+ profile: str = "DataInterpreter"
+ auto_run: bool = True
+ use_plan: bool = True
+ use_reflection: bool = False
+ execute_code: ExecuteNbCode = Field(default_factory=ExecuteNbCode, exclude=True)
+ tools: Union[str, list[str]] = [] # Use special symbol [""] to indicate use of all registered tools
+ tool_recommender: ToolRecommender = None
+ react_mode: Literal["plan_and_act", "react"] = "plan_and_act"
+ max_react_loop: int = 10 # used for react mode
+
+ @model_validator(mode="after")
+ def set_plan_and_tool(self) -> "Interpreter":
+ self._set_react_mode(react_mode=self.react_mode, max_react_loop=self.max_react_loop, auto_run=self.auto_run)
+ self.use_plan = (
+ self.react_mode == "plan_and_act"
+ ) # create a flag for convenience, overwrite any passed-in value
+ if self.tools:
+ self.tool_recommender = BM25ToolRecommender(tools=self.tools)
+ self.set_actions([WriteAnalysisCode])
+ self._set_state(0)
+ return self
+
+ @property
+ def working_memory(self):
+ return self.rc.working_memory
+
+ async def _think(self) -> bool:
+ """Useful in 'react' mode. Use LLM to decide whether and what to do next."""
+ user_requirement = self.get_memories()[0].content
+ context = self.working_memory.get()
+
+ if not context:
+ # just started the run, we need action certainly
+ self.working_memory.add(self.get_memories()[0]) # add user requirement to working memory
+ self._set_state(0)
+ return True
+
+ prompt = REACT_THINK_PROMPT.format(user_requirement=user_requirement, context=context)
+ rsp = await self.llm.aask(prompt)
+ rsp_dict = json.loads(CodeParser.parse_code(block=None, text=rsp))
+ self.working_memory.add(Message(content=rsp_dict["thoughts"], role="assistant"))
+ need_action = rsp_dict["state"]
+ self._set_state(0) if need_action else self._set_state(-1)
+
+ return need_action
+
+ async def _act(self) -> Message:
+ """Useful in 'react' mode. Return a Message conforming to Role._act interface."""
+ code, _, _ = await self._write_and_exec_code()
+ return Message(content=code, role="assistant", cause_by=WriteAnalysisCode)
+
+ async def _plan_and_act(self) -> Message:
+ rsp = await super()._plan_and_act()
+ await self.execute_code.terminate()
+ return rsp
+
+ async def _act_on_task(self, current_task: Task) -> TaskResult:
+ """Useful in 'plan_and_act' mode. Wrap the output in a TaskResult for review and confirmation."""
+ code, result, is_success = await self._write_and_exec_code()
+ task_result = TaskResult(code=code, result=result, is_success=is_success)
+ return task_result
+
+ async def _write_and_exec_code(self, max_retry: int = 3):
+ counter = 0
+ success = False
+
+ # plan info
+ plan_status = self.planner.get_plan_status() if self.use_plan else ""
+
+ # tool info
+ if self.tools:
+ context = (
+ self.working_memory.get()[-1].content if self.working_memory.get() else ""
+ ) # thoughts from _think stage in 'react' mode
+ plan = self.planner.plan if self.use_plan else None
+ tool_info = await self.tool_recommender.get_recommended_tool_info(context=context, plan=plan)
+ else:
+ tool_info = ""
+
+ # data info
+ await self._check_data()
+
+ while not success and counter < max_retry:
+ ### write code ###
+ code, cause_by = await self._write_code(counter, plan_status, tool_info)
+
+ self.working_memory.add(Message(content=code, role="assistant", cause_by=cause_by))
+
+ ### execute code ###
+ result, success = await self.execute_code.run(code)
+ print(result)
+
+ self.working_memory.add(Message(content=result, role="user", cause_by=ExecuteNbCode))
+
+ ### process execution result ###
+ counter += 1
+
+ if not success and counter >= max_retry:
+ logger.info("coding failed!")
+ review, _ = await self.planner.ask_review(auto_run=False, trigger=ReviewConst.CODE_REVIEW_TRIGGER)
+ if ReviewConst.CHANGE_WORDS[0] in review:
+ counter = 0 # redo the task again with help of human suggestions
+
+ return code, result, success
+
+ async def _write_code(
+ self,
+ counter: int,
+ plan_status: str = "",
+ tool_info: str = "",
+ ):
+ todo = self.rc.todo # todo is WriteAnalysisCode
+ logger.info(f"ready to {todo.name}")
+ use_reflection = counter > 0 and self.use_reflection # only use reflection after the first trial
+
+ user_requirement = self.get_memories()[0].content
+
+ code = await todo.run(
+ user_requirement=user_requirement,
+ plan_status=plan_status,
+ tool_info=tool_info,
+ working_memory=self.working_memory.get(),
+ use_reflection=use_reflection,
+ )
+
+ return code, todo
+
+ async def _check_data(self):
+ if (
+ not self.use_plan
+ or not self.planner.plan.get_finished_tasks()
+ or self.planner.plan.current_task.task_type
+ not in [
+ TaskType.DATA_PREPROCESS.type_name,
+ TaskType.FEATURE_ENGINEERING.type_name,
+ TaskType.MODEL_TRAIN.type_name,
+ ]
+ ):
+ return
+ logger.info("Check updated data")
+ code = await CheckData().run(self.planner.plan)
+ if not code.strip():
+ return
+ result, success = await self.execute_code.run(code)
+ if success:
+ print(result)
+ data_info = DATA_INFO.format(info=result)
+ self.working_memory.add(Message(content=data_info, role="user", cause_by=CheckData))
diff --git a/metagpt/roles/engineer.py b/metagpt/roles/engineer.py
index 7037ca0b3..9d8f6884f 100644
--- a/metagpt/roles/engineer.py
+++ b/metagpt/roles/engineer.py
@@ -204,7 +204,6 @@ class Engineer(Role):
async def _act_code_plan_and_change(self):
"""Write code plan and change that guides subsequent WriteCode and WriteCodeReview"""
- logger.info("Writing code plan and change..")
node = await self.rc.todo.run()
code_plan_and_change = node.instruct_content.model_dump_json()
dependencies = {
@@ -241,8 +240,8 @@ class Engineer(Role):
async def _think(self) -> Action | None:
if not self.src_workspace:
self.src_workspace = self.git_repo.workdir / self.git_repo.workdir.name
- write_plan_and_change_filters = any_to_str_set([WriteTasks])
- write_code_filters = any_to_str_set([WriteTasks, WriteCodePlanAndChange, SummarizeCode, FixBug])
+ write_plan_and_change_filters = any_to_str_set([WriteTasks, FixBug])
+ write_code_filters = any_to_str_set([WriteTasks, WriteCodePlanAndChange, SummarizeCode])
summarize_code_filters = any_to_str_set([WriteCode, WriteCodeReview])
if not self.rc.news:
return None
@@ -360,9 +359,17 @@ class Engineer(Role):
summarizations[ctx].append(filename)
for ctx, filenames in summarizations.items():
ctx.codes_filenames = filenames
- self.summarize_todos.append(SummarizeCode(i_context=ctx, context=self.context, llm=self.llm))
+ new_summarize = SummarizeCode(i_context=ctx, context=self.context, llm=self.llm)
+ for i, act in enumerate(self.summarize_todos):
+ if act.i_context.task_filename == new_summarize.i_context.task_filename:
+ self.summarize_todos[i] = new_summarize
+ new_summarize = None
+ break
+ if new_summarize:
+ self.summarize_todos.append(new_summarize)
if self.summarize_todos:
self.set_todo(self.summarize_todos[0])
+ self.summarize_todos.pop(0)
async def _new_code_plan_and_change_action(self):
"""Create a WriteCodePlanAndChange action for subsequent to-do actions."""
diff --git a/metagpt/roles/role.py b/metagpt/roles/role.py
index 3938664ba..e0f8a7ea6 100644
--- a/metagpt/roles/role.py
+++ b/metagpt/roles/role.py
@@ -108,12 +108,6 @@ class RoleContext(BaseModel):
) # see `Role._set_react_mode` for definitions of the following two attributes
max_react_loop: int = 1
- def check(self, role_id: str):
- # if hasattr(CONFIG, "enable_longterm_memory") and CONFIG.enable_longterm_memory:
- # self.long_term_memory.recover_memory(role_id, self)
- # self.memory = self.long_term_memory # use memory to act as long_term_memory for unify operation
- pass
-
@property
def important_memory(self) -> list[Message]:
"""Retrieve information corresponding to the attention action."""
@@ -175,6 +169,7 @@ class Role(SerializationMixin, ContextMixin, BaseModel):
self._check_actions()
self.llm.system_prompt = self._get_prefix()
+ self.llm.cost_manager = self.context.cost_manager
self._watch(kwargs.pop("watch", [UserRequirement]))
if self.latest_observed_msg:
@@ -281,9 +276,9 @@ class Role(SerializationMixin, ContextMixin, BaseModel):
i = action
self._init_action(i)
self.actions.append(i)
- self.states.append(f"{len(self.actions)}. {action}")
+ self.states.append(f"{len(self.actions) - 1}. {action}")
- def _set_react_mode(self, react_mode: str, max_react_loop: int = 1, auto_run: bool = True, use_tools: bool = False):
+ def _set_react_mode(self, react_mode: str, max_react_loop: int = 1, auto_run: bool = True):
"""Set strategy of the Role reacting to observed Message. Variation lies in how
this Role elects action to perform during the _think stage, especially if it is capable of multiple Actions.
@@ -304,17 +299,13 @@ class Role(SerializationMixin, ContextMixin, BaseModel):
if react_mode == RoleReactMode.REACT:
self.rc.max_react_loop = max_react_loop
elif react_mode == RoleReactMode.PLAN_AND_ACT:
- self.planner = Planner(
- goal=self.goal, working_memory=self.rc.working_memory, auto_run=auto_run, use_tools=use_tools
- )
+ self.planner = Planner(goal=self.goal, working_memory=self.rc.working_memory, auto_run=auto_run)
def _watch(self, actions: Iterable[Type[Action]] | Iterable[Action]):
"""Watch Actions of interest. Role will select Messages caused by these Actions from its personal message
buffer during _observe.
"""
self.rc.watch = {any_to_str(t) for t in actions}
- # check RoleContext after adding watch actions
- self.rc.check(self.role_id)
def is_watch(self, caused_by: str):
return caused_by in self.rc.watch
@@ -341,6 +332,7 @@ class Role(SerializationMixin, ContextMixin, BaseModel):
if env:
env.set_addresses(self, self.addresses)
self.llm.system_prompt = self._get_prefix()
+ self.llm.cost_manager = self.context.cost_manager
self.set_actions(self.actions) # reset actions to update llm and prefix
def _get_prefix(self):
diff --git a/metagpt/roles/sales.py b/metagpt/roles/sales.py
index bc449b5cd..e5cb12778 100644
--- a/metagpt/roles/sales.py
+++ b/metagpt/roles/sales.py
@@ -11,7 +11,6 @@ from typing import Optional
from pydantic import Field, model_validator
from metagpt.actions import SearchAndSummarize, UserRequirement
-from metagpt.document_store.base_store import BaseStore
from metagpt.roles import Role
from metagpt.tools.search_engine import SearchEngine
@@ -27,7 +26,7 @@ class Sales(Role):
"delivered with the professionalism and courtesy expected of a seasoned sales guide."
)
- store: Optional[BaseStore] = Field(default=None, exclude=True)
+ store: Optional[object] = Field(default=None, exclude=True) # must inplement tools.SearchInterface
@model_validator(mode="after")
def validate_stroe(self):
diff --git a/metagpt/schema.py b/metagpt/schema.py
index 7bbb567b9..45c7480f9 100644
--- a/metagpt/schema.py
+++ b/metagpt/schema.py
@@ -46,6 +46,7 @@ from metagpt.const import (
TASK_FILE_REPO,
)
from metagpt.logs import logger
+from metagpt.repo_parser import DotClassInfo
from metagpt.utils.common import any_to_str, any_to_str_set, import_class
from metagpt.utils.exceptions import handle_exception
from metagpt.utils.serialize import (
@@ -232,6 +233,10 @@ class Message(BaseModel):
def check_send_to(cls, send_to: Any) -> set:
return any_to_str_set(send_to if send_to else {MESSAGE_ROUTE_TO_ALL})
+ @field_serializer("send_to", mode="plain")
+ def ser_send_to(self, send_to: set) -> list:
+ return list(send_to)
+
@field_serializer("instruct_content", mode="plain")
def ser_instruct_content(self, ic: BaseModel) -> Union[dict, None]:
ic_dict = None
@@ -275,6 +280,10 @@ class Message(BaseModel):
def __repr__(self):
return self.__str__()
+ def rag_key(self) -> str:
+ """For search"""
+ return self.content
+
def to_dict(self) -> dict:
"""Return a dict containing `role` and `content` for the LLM call.l"""
return {"role": self.role, "content": self.content}
@@ -690,54 +699,64 @@ class CodePlanAndChangeContext(BaseModel):
# mermaid class view
-class ClassMeta(BaseModel):
+class UMLClassMeta(BaseModel):
name: str = ""
- abstraction: bool = False
- static: bool = False
visibility: str = ""
+ @staticmethod
+ def name_to_visibility(name: str) -> str:
+ if name == "__init__":
+ return "+"
+ if name.startswith("__"):
+ return "-"
+ elif name.startswith("_"):
+ return "#"
+ return "+"
-class ClassAttribute(ClassMeta):
+
+class UMLClassAttribute(UMLClassMeta):
value_type: str = ""
default_value: str = ""
def get_mermaid(self, align=1) -> str:
content = "".join(["\t" for i in range(align)]) + self.visibility
if self.value_type:
- content += self.value_type + " "
- content += self.name
+ content += self.value_type.replace(" ", "") + " "
+ name = self.name.split(":", 1)[1] if ":" in self.name else self.name
+ content += name
if self.default_value:
content += "="
if self.value_type not in ["str", "string", "String"]:
content += self.default_value
else:
content += '"' + self.default_value.replace('"', "") + '"'
- if self.abstraction:
- content += "*"
- if self.static:
- content += "$"
+ # if self.abstraction:
+ # content += "*"
+ # if self.static:
+ # content += "$"
return content
-class ClassMethod(ClassMeta):
- args: List[ClassAttribute] = Field(default_factory=list)
+class UMLClassMethod(UMLClassMeta):
+ args: List[UMLClassAttribute] = Field(default_factory=list)
return_type: str = ""
def get_mermaid(self, align=1) -> str:
content = "".join(["\t" for i in range(align)]) + self.visibility
- content += self.name + "(" + ",".join([v.get_mermaid(align=0) for v in self.args]) + ")"
+ name = self.name.split(":", 1)[1] if ":" in self.name else self.name
+ content += name + "(" + ",".join([v.get_mermaid(align=0) for v in self.args]) + ")"
if self.return_type:
- content += ":" + self.return_type
- if self.abstraction:
- content += "*"
- if self.static:
- content += "$"
+ content += " " + self.return_type.replace(" ", "")
+ # if self.abstraction:
+ # content += "*"
+ # if self.static:
+ # content += "$"
return content
-class ClassView(ClassMeta):
- attributes: List[ClassAttribute] = Field(default_factory=list)
- methods: List[ClassMethod] = Field(default_factory=list)
+class UMLClassView(UMLClassMeta):
+ attributes: List[UMLClassAttribute] = Field(default_factory=list)
+ methods: List[UMLClassMethod] = Field(default_factory=list)
def get_mermaid(self, align=1) -> str:
content = "".join(["\t" for i in range(align)]) + "class " + self.name + "{\n"
@@ -747,3 +766,21 @@ class ClassView(ClassMeta):
content += v.get_mermaid(align=align + 1) + "\n"
content += "".join(["\t" for i in range(align)]) + "}\n"
return content
+
+ @classmethod
+ def load_dot_class_info(cls, dot_class_info: DotClassInfo) -> UMLClassView:
+ visibility = UMLClassView.name_to_visibility(dot_class_info.name)
+ class_view = cls(name=dot_class_info.name, visibility=visibility)
+ for i in dot_class_info.attributes.values():
+ visibility = UMLClassAttribute.name_to_visibility(i.name)
+ attr = UMLClassAttribute(name=i.name, visibility=visibility, value_type=i.type_, default_value=i.default_)
+ class_view.attributes.append(attr)
+ for i in dot_class_info.methods.values():
+ visibility = UMLClassMethod.name_to_visibility(i.name)
+ method = UMLClassMethod(name=i.name, visibility=visibility, return_type=i.return_args.type_)
+ for j in i.args:
+ arg = UMLClassAttribute(name=j.name, value_type=j.type_, default_value=j.default_)
+ method.args.append(arg)
+ method.return_type = i.return_args.type_
+ class_view.methods.append(method)
+ return class_view
diff --git a/metagpt/software_company.py b/metagpt/software_company.py
index 26bb29cd1..f290d497a 100644
--- a/metagpt/software_company.py
+++ b/metagpt/software_company.py
@@ -2,14 +2,11 @@
# -*- coding: utf-8 -*-
import asyncio
-import shutil
from pathlib import Path
import typer
-from metagpt.config2 import config
-from metagpt.const import CONFIG_ROOT, METAGPT_ROOT
-from metagpt.context import Context
+from metagpt.const import CONFIG_ROOT
from metagpt.utils.project_repo import ProjectRepo
app = typer.Typer(add_completion=False, pretty_exceptions_show_locals=False)
@@ -30,6 +27,8 @@ def generate_repo(
recover_path=None,
) -> ProjectRepo:
"""Run the startup logic. Can be called from CLI or other Python scripts."""
+ from metagpt.config2 import config
+ from metagpt.context import Context
from metagpt.roles import (
Architect,
Engineer,
@@ -122,7 +121,17 @@ def startup(
)
-def copy_config_to(config_path=METAGPT_ROOT / "config" / "config2.yaml"):
+DEFAULT_CONFIG = """# Full Example: https://github.com/geekan/MetaGPT/blob/main/config/config2.example.yaml
+# Reflected Code: https://github.com/geekan/MetaGPT/blob/main/metagpt/config2.py
+llm:
+ api_type: "openai" # or azure / ollama / open_llm etc. Check LLMType for more options
+ model: "gpt-4-turbo-preview" # or gpt-3.5-turbo-1106 / gpt-4-1106-preview
+ base_url: "https://api.openai.com/v1" # or forward url / other llm url
+ api_key: "YOUR_API_KEY"
+"""
+
+
+def copy_config_to():
"""Initialize the configuration file for MetaGPT."""
target_path = CONFIG_ROOT / "config2.yaml"
@@ -136,7 +145,7 @@ def copy_config_to(config_path=METAGPT_ROOT / "config" / "config2.yaml"):
print(f"Existing configuration file backed up at {backup_path}")
# 复制文件
- shutil.copy(str(config_path), target_path)
+ target_path.write_text(DEFAULT_CONFIG, encoding="utf-8")
print(f"Configuration file initialized at {target_path}")
diff --git a/metagpt/startup.py b/metagpt/startup.py
new file mode 100644
index 000000000..bb6f6abf2
--- /dev/null
+++ b/metagpt/startup.py
@@ -0,0 +1,10 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@Time : 2024/3/11 19:16
+@Author : alexanderwu
+@File : startup.py
+"""
+
+# DEPRECATED: This file is deprecated and will be removed in the future.
+# The startup.py implementation has been moved to software_company.py
diff --git a/metagpt/strategy/planner.py b/metagpt/strategy/planner.py
index fd635df39..fbf784837 100644
--- a/metagpt/strategy/planner.py
+++ b/metagpt/strategy/planner.py
@@ -4,8 +4,8 @@ import json
from pydantic import BaseModel, Field
-from metagpt.actions.ci.ask_review import AskReview, ReviewConst
-from metagpt.actions.ci.write_plan import (
+from metagpt.actions.di.ask_review import AskReview, ReviewConst
+from metagpt.actions.di.write_plan import (
WritePlan,
precheck_update_plan_from_rsp,
update_plan_from_rsp,
@@ -13,6 +13,8 @@ from metagpt.actions.ci.write_plan import (
from metagpt.logs import logger
from metagpt.memory import Memory
from metagpt.schema import Message, Plan, Task, TaskResult
+from metagpt.strategy.task_type import TaskType
+from metagpt.utils.common import remove_comments
STRUCTURAL_CONTEXT = """
## User Requirement
@@ -25,6 +27,24 @@ STRUCTURAL_CONTEXT = """
{current_task}
"""
+PLAN_STATUS = """
+## Finished Tasks
+### code
+```python
+{code_written}
+```
+
+### execution result
+{task_results}
+
+## Current Task
+{current_task}
+
+## Task Guidance
+Write complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.
+Specifically, {guidance}
+"""
+
class Planner(BaseModel):
plan: Plan
@@ -32,7 +52,6 @@ class Planner(BaseModel):
default_factory=Memory
) # memory for working on each task, discarded each time a task is done
auto_run: bool = False
- use_tools: bool = False
def __init__(self, goal: str = "", plan: Plan = None, **kwargs):
plan = plan or Plan(goal=goal)
@@ -53,7 +72,7 @@ class Planner(BaseModel):
plan_confirmed = False
while not plan_confirmed:
context = self.get_useful_memories()
- rsp = await WritePlan().run(context, max_tasks=max_tasks, use_tools=self.use_tools)
+ rsp = await WritePlan().run(context, max_tasks=max_tasks)
self.working_memory.add(Message(content=rsp, role="assistant", cause_by=WritePlan))
# precheck plan before asking reviews
@@ -122,7 +141,7 @@ class Planner(BaseModel):
) # "confirm, ... (more content, such as changing downstream tasks)"
if confirmed_and_more:
self.working_memory.add(Message(content=review, role="user", cause_by=AskReview))
- await self.update_plan(review)
+ await self.update_plan()
def get_useful_memories(self, task_exclude_field=None) -> list[Message]:
"""find useful memories only to reduce context length and improve performance"""
@@ -137,3 +156,24 @@ class Planner(BaseModel):
context_msg = [Message(content=context, role="user")]
return context_msg + self.working_memory.get()
+
+ def get_plan_status(self) -> str:
+ # prepare components of a plan status
+ finished_tasks = self.plan.get_finished_tasks()
+ code_written = [remove_comments(task.code) for task in finished_tasks]
+ code_written = "\n\n".join(code_written)
+ task_results = [task.result for task in finished_tasks]
+ task_results = "\n\n".join(task_results)
+ task_type_name = self.current_task.task_type
+ task_type = TaskType.get_type(task_type_name)
+ guidance = task_type.guidance if task_type else ""
+
+ # combine components in a prompt
+ prompt = PLAN_STATUS.format(
+ code_written=code_written,
+ task_results=task_results,
+ current_task=self.current_task.instruction,
+ guidance=guidance,
+ )
+
+ return prompt
diff --git a/metagpt/strategy/solver.py b/metagpt/strategy/solver.py
index e7d61a881..e532f736b 100644
--- a/metagpt/strategy/solver.py
+++ b/metagpt/strategy/solver.py
@@ -49,8 +49,8 @@ class TOTSolver(BaseSolver):
raise NotImplementedError
-class CodeInterpreterSolver(BaseSolver):
- """CodeInterpreterSolver: Write&Run code in the graph"""
+class DataInterpreterSolver(BaseSolver):
+ """DataInterpreterSolver: Write&Run code in the graph"""
async def solve(self):
raise NotImplementedError
diff --git a/metagpt/strategy/task_type.py b/metagpt/strategy/task_type.py
new file mode 100644
index 000000000..d21705c16
--- /dev/null
+++ b/metagpt/strategy/task_type.py
@@ -0,0 +1,80 @@
+from enum import Enum
+
+from pydantic import BaseModel
+
+from metagpt.prompts.task_type import (
+ DATA_PREPROCESS_PROMPT,
+ EDA_PROMPT,
+ FEATURE_ENGINEERING_PROMPT,
+ IMAGE2WEBPAGE_PROMPT,
+ MODEL_EVALUATE_PROMPT,
+ MODEL_TRAIN_PROMPT,
+)
+
+
+class TaskTypeDef(BaseModel):
+ name: str
+ desc: str = ""
+ guidance: str = ""
+
+
+class TaskType(Enum):
+ """By identifying specific types of tasks, we can inject human priors (guidance) to help task solving"""
+
+ EDA = TaskTypeDef(
+ name="eda",
+ desc="For performing exploratory data analysis",
+ guidance=EDA_PROMPT,
+ )
+ DATA_PREPROCESS = TaskTypeDef(
+ name="data preprocessing",
+ desc="For preprocessing dataset in a data analysis or machine learning task ONLY,"
+ "general data operation doesn't fall into this type",
+ guidance=DATA_PREPROCESS_PROMPT,
+ )
+ FEATURE_ENGINEERING = TaskTypeDef(
+ name="feature engineering",
+ desc="Only for creating new columns for input data.",
+ guidance=FEATURE_ENGINEERING_PROMPT,
+ )
+ MODEL_TRAIN = TaskTypeDef(
+ name="model train",
+ desc="Only for training model.",
+ guidance=MODEL_TRAIN_PROMPT,
+ )
+ MODEL_EVALUATE = TaskTypeDef(
+ name="model evaluate",
+ desc="Only for evaluating model.",
+ guidance=MODEL_EVALUATE_PROMPT,
+ )
+ IMAGE2WEBPAGE = TaskTypeDef(
+ name="image2webpage",
+ desc="For converting image into webpage code.",
+ guidance=IMAGE2WEBPAGE_PROMPT,
+ )
+ OTHER = TaskTypeDef(name="other", desc="Any tasks not in the defined categories")
+
+ # Legacy TaskType to support tool recommendation using type match. You don't need to define task types if you have no human priors to inject.
+ TEXT2IMAGE = TaskTypeDef(
+ name="text2image",
+ desc="Related to text2image, image2image using stable diffusion model.",
+ )
+ WEBSCRAPING = TaskTypeDef(
+ name="web scraping",
+ desc="For scraping data from web pages.",
+ )
+ EMAIL_LOGIN = TaskTypeDef(
+ name="email login",
+ desc="For logging to an email.",
+ )
+
+ @property
+ def type_name(self):
+ return self.value.name
+
+ @classmethod
+ def get_type(cls, type_name):
+ for member in cls:
+ if member.type_name == type_name:
+ return member.value
+ return None
diff --git a/metagpt/tools/__init__.py b/metagpt/tools/__init__.py
index c1f604df9..8d265e9f3 100644
--- a/metagpt/tools/__init__.py
+++ b/metagpt/tools/__init__.py
@@ -30,3 +30,8 @@ class WebBrowserEngineType(Enum):
def __missing__(cls, key):
"""Default type conversion"""
return cls.CUSTOM
+
+
+class SearchInterface:
+ async def asearch(self, *args, **kwargs):
+ ...
diff --git a/metagpt/tools/libs/__init__.py b/metagpt/tools/libs/__init__.py
index c9767c1e5..91596fd3d 100644
--- a/metagpt/tools/libs/__init__.py
+++ b/metagpt/tools/libs/__init__.py
@@ -10,6 +10,14 @@ from metagpt.tools.libs import (
sd_engine,
gpt_v_generator,
web_scraping,
+ email_login,
)
-_ = data_preprocess, feature_engineering, sd_engine, gpt_v_generator, web_scraping # Avoid pre-commit error
+_ = (
+ data_preprocess,
+ feature_engineering,
+ sd_engine,
+ gpt_v_generator,
+ web_scraping,
+ email_login,
+) # Avoid pre-commit error
diff --git a/metagpt/tools/libs/data_preprocess.py b/metagpt/tools/libs/data_preprocess.py
index 7a3d019bf..aa9070689 100644
--- a/metagpt/tools/libs/data_preprocess.py
+++ b/metagpt/tools/libs/data_preprocess.py
@@ -1,6 +1,7 @@
from __future__ import annotations
import json
+from typing import Literal
import numpy as np
import pandas as pd
@@ -16,9 +17,8 @@ from sklearn.preprocessing import (
)
from metagpt.tools.tool_registry import register_tool
-from metagpt.tools.tool_type import ToolType
-TOOL_TYPE = ToolType.DATA_PREPROCESS.type_name
+TAGS = ["data preprocessing", "machine learning"]
class MLProcess:
@@ -85,20 +85,22 @@ class DataPreprocessTool(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class FillMissingValue(DataPreprocessTool):
"""
Completing missing values with simple strategies.
"""
- def __init__(self, features: list, strategy: str = "mean", fill_value=None):
+ def __init__(
+ self, features: list, strategy: Literal["mean", "median", "most_frequent", "constant"] = "mean", fill_value=None
+ ):
"""
Initialize self.
Args:
features (list): Columns to be processed.
- strategy (str, optional): The imputation strategy, notice 'mean' and 'median' can only
- be used for numeric features. Enum: ['mean', 'median', 'most_frequent', 'constant']. Defaults to 'mean'.
+ strategy (Literal["mean", "median", "most_frequent", "constant"], optional): The imputation strategy, notice 'mean' and 'median' can only
+ be used for numeric features. Defaults to 'mean'.
fill_value (int, optional): Fill_value is used to replace all occurrences of missing_values.
Defaults to None.
"""
@@ -106,7 +108,7 @@ class FillMissingValue(DataPreprocessTool):
self.model = SimpleImputer(strategy=strategy, fill_value=fill_value)
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class MinMaxScale(DataPreprocessTool):
"""
Transform features by scaling each feature to a range, which is (0, 1).
@@ -117,7 +119,7 @@ class MinMaxScale(DataPreprocessTool):
self.model = MinMaxScaler()
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class StandardScale(DataPreprocessTool):
"""
Standardize features by removing the mean and scaling to unit variance.
@@ -128,7 +130,7 @@ class StandardScale(DataPreprocessTool):
self.model = StandardScaler()
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class MaxAbsScale(DataPreprocessTool):
"""
Scale each feature by its maximum absolute value.
@@ -139,7 +141,7 @@ class MaxAbsScale(DataPreprocessTool):
self.model = MaxAbsScaler()
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class RobustScale(DataPreprocessTool):
"""
Apply the RobustScaler to scale features using statistics that are robust to outliers.
@@ -150,7 +152,7 @@ class RobustScale(DataPreprocessTool):
self.model = RobustScaler()
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class OrdinalEncode(DataPreprocessTool):
"""
Encode categorical features as ordinal integers.
@@ -161,7 +163,7 @@ class OrdinalEncode(DataPreprocessTool):
self.model = OrdinalEncoder()
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class OneHotEncode(DataPreprocessTool):
"""
Apply one-hot encoding to specified categorical columns, the original columns will be dropped.
@@ -180,7 +182,7 @@ class OneHotEncode(DataPreprocessTool):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class LabelEncode(DataPreprocessTool):
"""
Apply label encoding to specified categorical columns in-place.
diff --git a/metagpt/tools/libs/email_login.py b/metagpt/tools/libs/email_login.py
new file mode 100644
index 000000000..32626ac55
--- /dev/null
+++ b/metagpt/tools/libs/email_login.py
@@ -0,0 +1,49 @@
+from imap_tools import MailBox
+
+from metagpt.tools.tool_registry import register_tool
+
+# Define a dictionary mapping email domains to their IMAP server addresses
+IMAP_SERVERS = {
+ "outlook.com": "imap-mail.outlook.com", # Outlook
+ "163.com": "imap.163.com", # 163 Mail
+ "qq.com": "imap.qq.com", # QQ Mail
+ "gmail.com": "imap.gmail.com", # Gmail
+ "yahoo.com": "imap.mail.yahoo.com", # Yahoo Mail
+ "icloud.com": "imap.mail.me.com", # iCloud Mail
+ "hotmail.com": "imap-mail.outlook.com", # Hotmail (同 Outlook)
+ "live.com": "imap-mail.outlook.com", # Live (同 Outlook)
+ "sina.com": "imap.sina.com", # Sina Mail
+ "sohu.com": "imap.sohu.com", # Sohu Mail
+ "yahoo.co.jp": "imap.mail.yahoo.co.jp", # Yahoo Mail Japan
+ "yandex.com": "imap.yandex.com", # Yandex Mail
+ "mail.ru": "imap.mail.ru", # Mail.ru
+ "aol.com": "imap.aol.com", # AOL Mail
+ "gmx.com": "imap.gmx.com", # GMX Mail
+ "zoho.com": "imap.zoho.com", # Zoho Mail
+}
+
+
+@register_tool(tags=["email login"])
+def email_login_imap(email_address, email_password):
+ """
+ Use imap_tools package to log in to your email (the email that supports IMAP protocol) to verify and return the account object.
+
+ Args:
+ email_address (str): Email address that needs to be logged in and linked.
+ email_password (str): Password for the email address that needs to be logged in and linked.
+
+ Returns:
+ object: The imap_tools's MailBox object returned after successfully connecting to the mailbox through imap_tools, including various information about this account (email, etc.), or None if login fails.
+ """
+
+ # Extract the domain from the email address
+ domain = email_address.split("@")[-1]
+
+ # Determine the correct IMAP server
+ imap_server = IMAP_SERVERS.get(domain)
+
+ assert imap_server, f"IMAP server for {domain} not found."
+
+ # Attempt to log in to the email account
+ mailbox = MailBox(imap_server).login(email_address, email_password)
+ return mailbox
diff --git a/metagpt/tools/libs/feature_engineering.py b/metagpt/tools/libs/feature_engineering.py
index 40bfb2fc7..3013e1594 100644
--- a/metagpt/tools/libs/feature_engineering.py
+++ b/metagpt/tools/libs/feature_engineering.py
@@ -19,12 +19,11 @@ from sklearn.preprocessing import KBinsDiscretizer, PolynomialFeatures
from metagpt.tools.libs.data_preprocess import MLProcess
from metagpt.tools.tool_registry import register_tool
-from metagpt.tools.tool_type import ToolType
-TOOL_TYPE = ToolType.FEATURE_ENGINEERING.type_name
+TAGS = ["feature engineering", "machine learning"]
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class PolynomialExpansion(MLProcess):
"""
Add polynomial and interaction features from selected numeric columns to input DataFrame.
@@ -67,7 +66,7 @@ class PolynomialExpansion(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class CatCount(MLProcess):
"""
Add value counts of a categorical column as new feature.
@@ -92,7 +91,7 @@ class CatCount(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class TargetMeanEncoder(MLProcess):
"""
Encode a categorical column by the mean of the label column, and adds the result as a new feature.
@@ -119,7 +118,7 @@ class TargetMeanEncoder(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class KFoldTargetMeanEncoder(MLProcess):
"""
Add a new feature to the DataFrame by k-fold mean encoding of a categorical column using the label column.
@@ -159,7 +158,7 @@ class KFoldTargetMeanEncoder(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class CatCross(MLProcess):
"""
Add pairwise crossed features and convert them to numerical features.
@@ -216,7 +215,7 @@ class CatCross(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class GroupStat(MLProcess):
"""
Aggregate specified column in a DataFrame grouped by another column, adding new features named '__by_'.
@@ -248,7 +247,7 @@ class GroupStat(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class SplitBins(MLProcess):
"""
Inplace binning of continuous data into intervals, returning integer-encoded bin identifiers directly.
@@ -276,7 +275,7 @@ class SplitBins(MLProcess):
return new_df
-# @register_tool(tool_type=TOOL_TYPE)
+# @register_tool(tags=TAGS)
class ExtractTimeComps(MLProcess):
"""
Extract time components from a datetime column and add them as new features.
@@ -316,7 +315,7 @@ class ExtractTimeComps(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class GeneralSelection(MLProcess):
"""
Drop all nan feats and feats with only one unique value.
@@ -349,7 +348,7 @@ class GeneralSelection(MLProcess):
# skip for now because lgb is needed
-# @register_tool(tool_type=TOOL_TYPE)
+# @register_tool(tags=TAGS)
class TreeBasedSelection(MLProcess):
"""
Select features based on tree-based model and remove features with low importance.
@@ -403,7 +402,7 @@ class TreeBasedSelection(MLProcess):
return new_df
-@register_tool(tool_type=TOOL_TYPE)
+@register_tool(tags=TAGS)
class VarianceBasedSelection(MLProcess):
"""
Select features based on variance and remove features with low variance.
diff --git a/metagpt/tools/libs/gpt_v_generator.py b/metagpt/tools/libs/gpt_v_generator.py
index b1e8317ed..4eba3d5ee 100644
--- a/metagpt/tools/libs/gpt_v_generator.py
+++ b/metagpt/tools/libs/gpt_v_generator.py
@@ -5,20 +5,20 @@
@Author : mannaandpoem
@File : gpt_v_generator.py
"""
-import os
+import re
from pathlib import Path
from metagpt.const import DEFAULT_WORKSPACE_ROOT
+from metagpt.logs import logger
from metagpt.tools.tool_registry import register_tool
-from metagpt.tools.tool_type import ToolType
-from metagpt.utils.common import encode_image
+from metagpt.utils.common import CodeParser, encode_image
-ANALYZE_LAYOUT_PROMPT = """You are now a UI/UX, please generate layout information for this image:
+ANALYZE_LAYOUT_PROMPT = """You are now a UI/UX designer, please generate layout information for this image:
NOTE: The image does not have a commercial logo or copyright information. It is just a sketch image of the design.
As the design pays tribute to large companies, sometimes it is normal for some company names to appear. Don't worry. """
-GENERATE_PROMPT = """You are now a UI/UX and Web Developer. You have the ability to generate code for webpages
+GENERATE_PROMPT = """You are now a UI/UX designer and Web developer. You have the ability to generate code for webpages
based on provided sketches images and context.
Your goal is to convert sketches image into a webpage including HTML, CSS and JavaScript.
@@ -28,11 +28,9 @@ As the design pays tribute to large companies, sometimes it is normal for some c
Now, please generate the corresponding webpage code including HTML, CSS and JavaScript:"""
-@register_tool(
- tool_type=ToolType.IMAGE2WEBPAGE.type_name, include_functions=["__init__", "generate_webpages", "save_webpages"]
-)
+@register_tool(tags=["image2webpage"], include_functions=["__init__", "generate_webpages", "save_webpages"])
class GPTvGenerator:
- """Class for generating webpages at once.
+ """Class for generating webpage code from a given webpage screenshot.
This class provides methods to generate webpages including all code (HTML, CSS, and JavaScript) based on an image.
It utilizes a vision model to analyze the layout from an image and generate webpage codes accordingly.
@@ -75,50 +73,34 @@ class GPTvGenerator:
return await self.llm.aask(msg=prompt, images=[encode_image(image_path)])
@staticmethod
- def save_webpages(image_path: str, webpages: str) -> Path:
+ def save_webpages(webpages: str, save_folder_name: str = "example") -> Path:
"""Save webpages including all code (HTML, CSS, and JavaScript) at once.
Args:
- image_path (str): The path of the image file.
webpages (str): The generated webpages content.
+ save_folder_name (str, optional): The name of the folder to save the webpages. Defaults to 'example'.
Returns:
Path: The path of the saved webpages.
"""
# Create a folder called webpages in the workspace directory to store HTML, CSS, and JavaScript files
- webpages_path = DEFAULT_WORKSPACE_ROOT / "webpages" / Path(image_path).stem
- os.makedirs(webpages_path, exist_ok=True)
+ webpages_path = DEFAULT_WORKSPACE_ROOT / "webpages" / save_folder_name
+ logger.info(f"code will be saved at {webpages_path}")
+ webpages_path.mkdir(parents=True, exist_ok=True)
index_path = webpages_path / "index.html"
- try:
- index = webpages.split("```html")[1].split("```")[0]
- style_path = None
- if "styles.css" in index:
- style_path = webpages_path / "styles.css"
- elif "style.css" in index:
- style_path = webpages_path / "style.css"
- style = webpages.split("```css")[1].split("```")[0] if style_path else ""
+ index_path.write_text(CodeParser.parse_code(block=None, text=webpages, lang="html"))
- js_path = None
- if "scripts.js" in index:
- js_path = webpages_path / "scripts.js"
- elif "script.js" in index:
- js_path = webpages_path / "script.js"
+ extract_and_save_code(folder=webpages_path, text=webpages, pattern="styles?.css", language="css")
- js = webpages.split("```javascript")[1].split("```")[0] if js_path else ""
- except IndexError:
- raise ValueError(f"No html or css or js code found in the result. \nWebpages: {webpages}")
-
- try:
- with open(index_path, "w", encoding="utf-8") as f:
- f.write(index)
- if style_path:
- with open(style_path, "w", encoding="utf-8") as f:
- f.write(style)
- if js_path:
- with open(js_path, "w", encoding="utf-8") as f:
- f.write(js)
- except FileNotFoundError as e:
- raise FileNotFoundError(f"Cannot save the webpages to {str(webpages_path)}") from e
+ extract_and_save_code(folder=webpages_path, text=webpages, pattern="scripts?.js", language="javascript")
return webpages_path
+
+
+def extract_and_save_code(folder, text, pattern, language):
+ word = re.search(pattern, text)
+ if word:
+ path = folder / word.group(0)
+ code = CodeParser.parse_code(block=None, text=text, lang=language)
+ path.write_text(code, encoding="utf-8")
diff --git a/metagpt/tools/libs/sd_engine.py b/metagpt/tools/libs/sd_engine.py
index 347f4a430..b62e39db8 100644
--- a/metagpt/tools/libs/sd_engine.py
+++ b/metagpt/tools/libs/sd_engine.py
@@ -14,11 +14,9 @@ import requests
from aiohttp import ClientSession
from PIL import Image, PngImagePlugin
-#
from metagpt.const import SD_OUTPUT_FILE_REPO, SOURCE_ROOT
from metagpt.logs import logger
from metagpt.tools.tool_registry import register_tool
-from metagpt.tools.tool_type import ToolType
payload = {
"prompt": "",
@@ -55,7 +53,7 @@ default_negative_prompt = "(easynegative:0.8),black, dark,Low resolution"
@register_tool(
- tool_type=ToolType.STABLE_DIFFUSION.type_name,
+ tags=["text2image", "multimodal"],
include_functions=["__init__", "simple_run_t2i", "run_t2i", "construct_payload", "save"],
)
class SDEngine:
diff --git a/metagpt/tools/libs/web_scraping.py b/metagpt/tools/libs/web_scraping.py
index d01e69d09..bc34b1306 100644
--- a/metagpt/tools/libs/web_scraping.py
+++ b/metagpt/tools/libs/web_scraping.py
@@ -1,9 +1,8 @@
from metagpt.tools.tool_registry import register_tool
-from metagpt.tools.tool_type import ToolType
from metagpt.tools.web_browser_engine_playwright import PlaywrightWrapper
-@register_tool(tool_type=ToolType.WEBSCRAPING.type_name)
+@register_tool(tags=["web scraping", "web"])
async def scrape_web_playwright(url):
"""
Asynchronously Scrape and save the HTML structure and inner text content of a web page using Playwright.
diff --git a/metagpt/tools/tool_convert.py b/metagpt/tools/tool_convert.py
index fc29d0693..42c65b9e7 100644
--- a/metagpt/tools/tool_convert.py
+++ b/metagpt/tools/tool_convert.py
@@ -2,14 +2,18 @@ import inspect
from metagpt.utils.parse_docstring import GoogleDocstringParser, remove_spaces
+PARSER = GoogleDocstringParser
-def convert_code_to_tool_schema(obj, include: list[str] = []):
+
+def convert_code_to_tool_schema(obj, include: list[str] = None):
docstring = inspect.getdoc(obj)
assert docstring, "no docstring found for the objects, skip registering"
if inspect.isclass(obj):
schema = {"type": "class", "description": remove_spaces(docstring), "methods": {}}
for name, method in inspect.getmembers(obj, inspect.isfunction):
+ if name.startswith("_") and name != "__init__": # skip private methodss
+ continue
if include and name not in include:
continue
# method_doc = inspect.getdoc(method)
@@ -23,54 +27,31 @@ def convert_code_to_tool_schema(obj, include: list[str] = []):
return schema
-def function_docstring_to_schema(fn_obj, docstring):
+def function_docstring_to_schema(fn_obj, docstring) -> dict:
+ """
+ Converts a function's docstring into a schema dictionary.
+
+ Args:
+ fn_obj: The function object.
+ docstring: The docstring of the function.
+
+ Returns:
+ A dictionary representing the schema of the function's docstring.
+ The dictionary contains the following keys:
+ - 'type': The type of the function ('function' or 'async_function').
+ - 'description': The first section of the docstring describing the function overall. Provided to LLMs for both recommending and using the function.
+ - 'signature': The signature of the function, which helps LLMs understand how to call the function.
+ - 'parameters': Docstring section describing parameters including args and returns, served as extra details for LLM perception.
+ """
+ signature = inspect.signature(fn_obj)
+
+ docstring = remove_spaces(docstring)
+
+ overall_desc, param_desc = PARSER.parse(docstring)
+
function_type = "function" if not inspect.iscoroutinefunction(fn_obj) else "async_function"
- return {"type": function_type, **docstring_to_schema(docstring)}
-
-def docstring_to_schema(docstring: str):
- if docstring is None:
- return {}
-
- parser = GoogleDocstringParser(docstring=docstring)
-
- # 匹配简介部分
- description = parser.parse_desc()
-
- # 匹配Args部分
- params = parser.parse_params()
- parameter_schema = {"properties": {}, "required": []}
- for param in params:
- param_name, param_type, param_desc = param
- # check required or optional
- is_optional, param_type = parser.check_and_parse_optional(param_type)
- if not is_optional:
- parameter_schema["required"].append(param_name)
- # type and desc
- param_dict = {"type": param_type, "description": remove_spaces(param_desc)}
- # match Default for optional args
- has_default_val, default_val = parser.check_and_parse_default_value(param_desc)
- if has_default_val:
- param_dict["default"] = default_val
- # match Enum
- has_enum, enum_vals = parser.check_and_parse_enum(param_desc)
- if has_enum:
- param_dict["enum"] = enum_vals
- # add to parameter schema
- parameter_schema["properties"].update({param_name: param_dict})
-
- # 匹配Returns部分
- returns = parser.parse_returns()
-
- # 构建YAML字典
- schema = {
- "description": description,
- "parameters": parameter_schema,
- }
- if returns:
- schema["returns"] = [{"type": ret[0], "description": remove_spaces(ret[1])} for ret in returns]
-
- return schema
+ return {"type": function_type, "description": overall_desc, "signature": str(signature), "parameters": param_desc}
def get_class_method_docstring(cls, method_name):
diff --git a/metagpt/tools/tool_data_type.py b/metagpt/tools/tool_data_type.py
index 0ae46fa5c..1a31b03e7 100644
--- a/metagpt/tools/tool_data_type.py
+++ b/metagpt/tools/tool_data_type.py
@@ -1,12 +1,6 @@
from pydantic import BaseModel
-class ToolTypeDef(BaseModel):
- name: str
- desc: str = ""
- usage_prompt: str = ""
-
-
class ToolSchema(BaseModel):
description: str
@@ -16,3 +10,4 @@ class Tool(BaseModel):
path: str
schemas: dict = {}
code: str = ""
+ tags: list[str] = []
diff --git a/metagpt/tools/tool_recommend.py b/metagpt/tools/tool_recommend.py
new file mode 100644
index 000000000..69b9a4b5d
--- /dev/null
+++ b/metagpt/tools/tool_recommend.py
@@ -0,0 +1,214 @@
+from __future__ import annotations
+
+import json
+from typing import Any
+
+import jieba
+import numpy as np
+from pydantic import BaseModel, field_validator
+from rank_bm25 import BM25Okapi
+
+from metagpt.llm import LLM
+from metagpt.logs import logger
+from metagpt.schema import Plan
+from metagpt.tools import TOOL_REGISTRY
+from metagpt.tools.tool_data_type import Tool
+from metagpt.tools.tool_registry import validate_tool_names
+from metagpt.utils.common import CodeParser
+
+TOOL_INFO_PROMPT = """
+## Capabilities
+- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python class or function.
+- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..
+
+## Available Tools:
+Each tool is described in JSON format. When you call a tool, import the tool from its path first.
+{tool_schemas}
+"""
+
+
+TOOL_RECOMMENDATION_PROMPT = """
+## User Requirement:
+{current_task}
+
+## Task
+Recommend up to {topk} tools from 'Available Tools' that can help solve the 'User Requirement'.
+
+## Available Tools:
+{available_tools}
+
+## Tool Selection and Instructions:
+- Select tools most relevant to completing the 'User Requirement'.
+- If you believe that no tools are suitable, indicate with an empty list.
+- Only list the names of the tools, not the full schema of each tool.
+- Ensure selected tools are listed in 'Available Tools'.
+- Output a json list of tool names:
+```json
+["tool_name1", "tool_name2", ...]
+```
+"""
+
+
+class ToolRecommender(BaseModel):
+ """
+ The default ToolRecommender:
+ 1. Recall: To be implemented in subclasses. Recall tools based on the given context and plan.
+ 2. Rank: Use LLM to select final candidates from recalled set.
+ """
+
+ tools: dict[str, Tool] = {}
+ force: bool = False # whether to forcedly recommend the specified tools
+
+ @field_validator("tools", mode="before")
+ @classmethod
+ def validate_tools(cls, v: list[str]) -> dict[str, Tool]:
+ # One can use special symbol [""] to indicate use of all registered tools
+ if v == [""]:
+ return TOOL_REGISTRY.get_all_tools()
+ else:
+ return validate_tool_names(v)
+
+ async def recommend_tools(
+ self, context: str = "", plan: Plan = None, recall_topk: int = 20, topk: int = 5
+ ) -> list[Tool]:
+ """
+ Recommends a list of tools based on the given context and plan. The recommendation process includes two stages: recall from a large pool and rank the recalled tools to select the final set.
+
+ Args:
+ context (str): The context for tool recommendation.
+ plan (Plan): The plan for tool recommendation.
+ recall_topk (int): The number of tools to recall in the initial step.
+ topk (int): The number of tools to return after rank as final recommendations.
+
+ Returns:
+ list[Tool]: A list of recommended tools.
+ """
+
+ if not self.tools:
+ return []
+
+ if self.force or (not context and not plan):
+ # directly use what users have specified as result for forced recommendation;
+ # directly use the whole set if there is no useful information
+ return list(self.tools.values())
+
+ recalled_tools = await self.recall_tools(context=context, plan=plan, topk=recall_topk)
+ if not recalled_tools:
+ return []
+
+ ranked_tools = await self.rank_tools(recalled_tools=recalled_tools, context=context, plan=plan, topk=topk)
+
+ logger.info(f"Recommended tools: \n{[tool.name for tool in ranked_tools]}")
+
+ return ranked_tools
+
+ async def get_recommended_tool_info(self, **kwargs) -> str:
+ """
+ Wrap recommended tools with their info in a string, which can be used directly in a prompt.
+ """
+ recommended_tools = await self.recommend_tools(**kwargs)
+ if not recommended_tools:
+ return ""
+ tool_schemas = {tool.name: tool.schemas for tool in recommended_tools}
+ return TOOL_INFO_PROMPT.format(tool_schemas=tool_schemas)
+
+ async def recall_tools(self, context: str = "", plan: Plan = None, topk: int = 20) -> list[Tool]:
+ """
+ Retrieves a list of relevant tools from a large pool, based on the given context and plan.
+ """
+ raise NotImplementedError
+
+ async def rank_tools(
+ self, recalled_tools: list[Tool], context: str = "", plan: Plan = None, topk: int = 5
+ ) -> list[Tool]:
+ """
+ Default rank methods for a ToolRecommender. Use LLM to rank the recalled tools based on the given context, plan, and topk value.
+ """
+ current_task = plan.current_task.instruction if plan else context
+
+ available_tools = {tool.name: tool.schemas["description"] for tool in recalled_tools}
+ prompt = TOOL_RECOMMENDATION_PROMPT.format(
+ current_task=current_task,
+ available_tools=available_tools,
+ topk=topk,
+ )
+ rsp = await LLM().aask(prompt)
+ rsp = CodeParser.parse_code(block=None, text=rsp)
+ ranked_tools = json.loads(rsp)
+
+ valid_tools = validate_tool_names(ranked_tools)
+
+ return list(valid_tools.values())[:topk]
+
+
+class TypeMatchToolRecommender(ToolRecommender):
+ """
+ A legacy ToolRecommender using task type matching at the recall stage:
+ 1. Recall: Find tools based on exact match between task type and tool tag;
+ 2. Rank: LLM rank, the same as the default ToolRecommender.
+ """
+
+ async def recall_tools(self, context: str = "", plan: Plan = None, topk: int = 20) -> list[Tool]:
+ if not plan:
+ return list(self.tools.values())[:topk]
+
+ # find tools based on exact match between task type and tool tag
+ task_type = plan.current_task.task_type
+ candidate_tools = TOOL_REGISTRY.get_tools_by_tag(task_type)
+ candidate_tool_names = set(self.tools.keys()) & candidate_tools.keys()
+ recalled_tools = [candidate_tools[tool_name] for tool_name in candidate_tool_names][:topk]
+
+ logger.info(f"Recalled tools: \n{[tool.name for tool in recalled_tools]}")
+
+ return recalled_tools
+
+
+class BM25ToolRecommender(ToolRecommender):
+ """
+ A ToolRecommender using BM25 at the recall stage:
+ 1. Recall: Querying tool descriptions with task instruction if plan exists. Otherwise, return all user-specified tools;
+ 2. Rank: LLM rank, the same as the default ToolRecommender.
+ """
+
+ bm25: Any = None
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+ self._init_corpus()
+
+ def _init_corpus(self):
+ corpus = [f"{tool.name} {tool.tags}: {tool.schemas['description']}" for tool in self.tools.values()]
+ tokenized_corpus = [self._tokenize(doc) for doc in corpus]
+ self.bm25 = BM25Okapi(tokenized_corpus)
+
+ def _tokenize(self, text):
+ return jieba.lcut(text) # FIXME: needs more sophisticated tokenization
+
+ async def recall_tools(self, context: str = "", plan: Plan = None, topk: int = 20) -> list[Tool]:
+ query = plan.current_task.instruction if plan else context
+
+ query_tokens = self._tokenize(query)
+ doc_scores = self.bm25.get_scores(query_tokens)
+ top_indexes = np.argsort(doc_scores)[::-1][:topk]
+ recalled_tools = [list(self.tools.values())[index] for index in top_indexes]
+
+ logger.info(
+ f"Recalled tools: \n{[tool.name for tool in recalled_tools]}; Scores: {[doc_scores[index] for index in top_indexes]}"
+ )
+
+ return recalled_tools
+
+
+class EmbeddingToolRecommender(ToolRecommender):
+ """
+ NOTE: To be implemented.
+ A ToolRecommender using embeddings at the recall stage:
+ 1. Recall: Use embeddings to calculate the similarity between query and tool info;
+ 2. Rank: LLM rank, the same as the default ToolRecommender.
+ """
+
+ def __init__(self, **kwargs):
+ super().__init__(**kwargs)
+
+ async def recall_tools(self, context: str = "", plan: Plan = None, topk: int = 20) -> list[Tool]:
+ pass
diff --git a/metagpt/tools/tool_registry.py b/metagpt/tools/tool_registry.py
index 5fbd39421..11269cb0f 100644
--- a/metagpt/tools/tool_registry.py
+++ b/metagpt/tools/tool_registry.py
@@ -9,28 +9,21 @@ from __future__ import annotations
import inspect
import os
-import re
from collections import defaultdict
+from typing import Union
import yaml
-from pydantic import BaseModel, field_validator
+from pydantic import BaseModel
from metagpt.const import TOOL_SCHEMA_PATH
from metagpt.logs import logger
from metagpt.tools.tool_convert import convert_code_to_tool_schema
-from metagpt.tools.tool_data_type import Tool, ToolSchema, ToolTypeDef
-from metagpt.tools.tool_type import ToolType
+from metagpt.tools.tool_data_type import Tool, ToolSchema
class ToolRegistry(BaseModel):
tools: dict = {}
- tool_types: dict = {}
- tools_by_types: dict = defaultdict(dict) # two-layer k-v, {tool_type: {tool_name: {...}, ...}, ...}
-
- @field_validator("tool_types", mode="before")
- @classmethod
- def init_tool_types(cls, tool_types: ToolType):
- return {tool_type.type_name: tool_type.value for tool_type in tool_types}
+ tools_by_tags: dict = defaultdict(dict) # two-layer k-v, {tag: {tool_name: {...}, ...}, ...}
def register_tool(
self,
@@ -38,25 +31,15 @@ class ToolRegistry(BaseModel):
tool_path,
schema_path="",
tool_code="",
- tool_type="other",
+ tags=None,
tool_source_object=None,
- include_functions=[],
+ include_functions=None,
verbose=False,
):
if self.has_tool(tool_name):
return
- if tool_type not in self.tool_types:
- # register new tool type on the fly
- logger.warning(
- f"{tool_type} not previously defined, will create a temporary tool type with just a name. This tool type is only effective during this runtime. You may consider add this tool type with more configs permanently at metagpt.tools.tool_type"
- )
- temp_tool_type_obj = ToolTypeDef(name=tool_type)
- self.tool_types[tool_type] = temp_tool_type_obj
- if verbose:
- logger.info(f"tool type {tool_type} registered")
-
- schema_path = schema_path or TOOL_SCHEMA_PATH / tool_type / f"{tool_name}.yml"
+ schema_path = schema_path or TOOL_SCHEMA_PATH / f"{tool_name}.yml"
schemas = make_schema(tool_source_object, include_functions, schema_path)
@@ -71,10 +54,11 @@ class ToolRegistry(BaseModel):
# logger.warning(
# f"{tool_name} schema not conforms to required format, but will be used anyway. Mismatch: {e}"
# )
-
- tool = Tool(name=tool_name, path=tool_path, schemas=schemas, code=tool_code)
+ tags = tags or []
+ tool = Tool(name=tool_name, path=tool_path, schemas=schemas, code=tool_code, tags=tags)
self.tools[tool_name] = tool
- self.tools_by_types[tool_type][tool_name] = tool
+ for tag in tags:
+ self.tools_by_tags[tag].update({tool_name: tool})
if verbose:
logger.info(f"{tool_name} registered")
logger.info(f"schema made at {str(schema_path)}, can be used for checking")
@@ -85,31 +69,32 @@ class ToolRegistry(BaseModel):
def get_tool(self, key) -> Tool:
return self.tools.get(key)
- def get_tools_by_type(self, key) -> dict[str, Tool]:
- return self.tools_by_types.get(key, {})
+ def get_tools_by_tag(self, key) -> dict[str, Tool]:
+ return self.tools_by_tags.get(key, {})
- def has_tool_type(self, key) -> bool:
- return key in self.tool_types
+ def get_all_tools(self) -> dict[str, Tool]:
+ return self.tools
- def get_tool_type(self, key) -> ToolType:
- return self.tool_types.get(key)
+ def has_tool_tag(self, key) -> bool:
+ return key in self.tools_by_tags
- def get_tool_types(self) -> dict[str, ToolType]:
- return self.tool_types
+ def get_tool_tags(self) -> list[str]:
+ return list(self.tools_by_tags.keys())
# Registry instance
-TOOL_REGISTRY = ToolRegistry(tool_types=ToolType)
+TOOL_REGISTRY = ToolRegistry()
-def register_tool(tool_type: str = "other", schema_path: str = "", **kwargs):
+def register_tool(tags: list[str] = None, schema_path: str = "", **kwargs):
"""register a tool to registry"""
def decorator(cls):
# Get the file path where the function / class is defined and the source code
file_path = inspect.getfile(cls)
if "metagpt" in file_path:
- file_path = re.search("metagpt.+", file_path).group(0)
+ # split to handle ../metagpt/metagpt/tools/... where only metapgt/tools/... is needed
+ file_path = "metagpt" + file_path.split("metagpt")[-1]
source_code = inspect.getsource(cls)
TOOL_REGISTRY.register_tool(
@@ -117,7 +102,7 @@ def register_tool(tool_type: str = "other", schema_path: str = "", **kwargs):
tool_path=file_path,
schema_path=schema_path,
tool_code=source_code,
- tool_type=tool_type,
+ tags=tags,
tool_source_object=cls,
**kwargs,
)
@@ -142,14 +127,15 @@ def make_schema(tool_source_object, include, path):
return schema
-def validate_tool_names(tools: list[str], return_tool_object=False) -> list[str]:
- valid_tools = []
- for tool_name in tools:
- if not TOOL_REGISTRY.has_tool(tool_name):
- logger.warning(
- f"Specified tool {tool_name} not found and was skipped. Check if you have registered it properly"
- )
+def validate_tool_names(tools: Union[list[str], str]) -> str:
+ assert isinstance(tools, list), "tools must be a list of str"
+ valid_tools = {}
+ for key in tools:
+ # one can define either tool names or tool type names, take union to get the whole set
+ if TOOL_REGISTRY.has_tool(key):
+ valid_tools.update({key: TOOL_REGISTRY.get_tool(key)})
+ elif TOOL_REGISTRY.has_tool_tag(key):
+ valid_tools.update(TOOL_REGISTRY.get_tools_by_tag(key))
else:
- valid_tool = TOOL_REGISTRY.get_tool(tool_name) if return_tool_object else tool_name
- valid_tools.append(valid_tool)
+ logger.warning(f"invalid tool name or tool type name: {key}, skipped")
return valid_tools
diff --git a/metagpt/tools/tool_type.py b/metagpt/tools/tool_type.py
deleted file mode 100644
index 6fa971c56..000000000
--- a/metagpt/tools/tool_type.py
+++ /dev/null
@@ -1,55 +0,0 @@
-from enum import Enum
-
-from metagpt.prompts.tool_types import (
- DATA_PREPROCESS_PROMPT,
- FEATURE_ENGINEERING_PROMPT,
- IMAGE2WEBPAGE_PROMPT,
- MODEL_EVALUATE_PROMPT,
- MODEL_TRAIN_PROMPT,
-)
-from metagpt.tools.tool_data_type import ToolTypeDef
-
-
-class ToolType(Enum):
- EDA = ToolTypeDef(name="eda", desc="For performing exploratory data analysis")
- DATA_PREPROCESS = ToolTypeDef(
- name="data_preprocess",
- desc="Only for changing value inplace.",
- usage_prompt=DATA_PREPROCESS_PROMPT,
- )
- FEATURE_ENGINEERING = ToolTypeDef(
- name="feature_engineering",
- desc="Only for creating new columns for input data.",
- usage_prompt=FEATURE_ENGINEERING_PROMPT,
- )
- MODEL_TRAIN = ToolTypeDef(
- name="model_train",
- desc="Only for training model.",
- usage_prompt=MODEL_TRAIN_PROMPT,
- )
- MODEL_EVALUATE = ToolTypeDef(
- name="model_evaluate",
- desc="Only for evaluating model.",
- usage_prompt=MODEL_EVALUATE_PROMPT,
- )
- STABLE_DIFFUSION = ToolTypeDef(
- name="stable_diffusion",
- desc="Related to text2image, image2image using stable diffusion model.",
- )
- IMAGE2WEBPAGE = ToolTypeDef(
- name="image2webpage",
- desc="For converting image into webpage code.",
- usage_prompt=IMAGE2WEBPAGE_PROMPT,
- )
- WEBSCRAPING = ToolTypeDef(
- name="web_scraping",
- desc="For scraping data from web pages.",
- )
- OTHER = ToolTypeDef(name="other", desc="Any tools not in the defined categories")
-
- def __missing__(self, key):
- return self.OTHER
-
- @property
- def type_name(self):
- return self.value.name
diff --git a/metagpt/tools/web_browser_engine_selenium.py b/metagpt/tools/web_browser_engine_selenium.py
index 3b1682291..786715461 100644
--- a/metagpt/tools/web_browser_engine_selenium.py
+++ b/metagpt/tools/web_browser_engine_selenium.py
@@ -103,7 +103,7 @@ class WDMHttpProxyClient(WDMHttpClient):
def get(self, url, **kwargs):
if "proxies" not in kwargs and self.proxy:
- kwargs["proxies"] = {"all_proxy": self.proxy}
+ kwargs["proxies"] = {"all": self.proxy}
return super().get(url, **kwargs)
diff --git a/metagpt/utils/async_helper.py b/metagpt/utils/async_helper.py
new file mode 100644
index 000000000..ee440ef44
--- /dev/null
+++ b/metagpt/utils/async_helper.py
@@ -0,0 +1,22 @@
+import asyncio
+import threading
+from typing import Any
+
+
+def run_coroutine_in_new_loop(coroutine) -> Any:
+ """Runs a coroutine in a new, separate event loop on a different thread.
+
+ This function is useful when try to execute an async function within a sync function, but encounter the error `RuntimeError: This event loop is already running`.
+ """
+ new_loop = asyncio.new_event_loop()
+ t = threading.Thread(target=lambda: new_loop.run_forever())
+ t.start()
+
+ future = asyncio.run_coroutine_threadsafe(coroutine, new_loop)
+
+ try:
+ return future.result()
+ finally:
+ new_loop.call_soon_threadsafe(new_loop.stop)
+ t.join()
+ new_loop.close()
diff --git a/metagpt/utils/common.py b/metagpt/utils/common.py
index 015902c3d..e443c3466 100644
--- a/metagpt/utils/common.py
+++ b/metagpt/utils/common.py
@@ -18,17 +18,19 @@ import csv
import importlib
import inspect
import json
+import mimetypes
import os
import platform
import re
import sys
import traceback
-import typing
from io import BytesIO
from pathlib import Path
-from typing import Any, Callable, List, Tuple, Union
+from typing import Any, Callable, List, Literal, Tuple, Union
+from urllib.parse import quote, unquote
import aiofiles
+import chardet
import loguru
import requests
from PIL import Image
@@ -361,16 +363,6 @@ def parse_recipient(text):
return ""
-def create_func_call_config(func_schema: dict) -> dict:
- """Create new function call config"""
- tools = [{"type": "function", "function": func_schema}]
- tool_choice = {"type": "function", "function": {"name": func_schema["name"]}}
- return {
- "tools": tools,
- "tool_choice": tool_choice,
- }
-
-
def remove_comments(code_str: str) -> str:
"""Remove comments from code."""
pattern = r"(\".*?\"|\'.*?\')|(\#.*?$)"
@@ -433,23 +425,109 @@ def is_send_to(message: "Message", addresses: set):
def any_to_name(val):
"""
Convert a value to its name by extracting the last part of the dotted path.
-
- :param val: The value to convert.
-
- :return: The name of the value.
"""
return any_to_str(val).split(".")[-1]
-def concat_namespace(*args) -> str:
- return ":".join(str(value) for value in args)
+def concat_namespace(*args, delimiter: str = ":") -> str:
+ """Concatenate fields to create a unique namespace prefix.
+
+ Example:
+ >>> concat_namespace('prefix', 'field1', 'field2', delimiter=":")
+ 'prefix:field1:field2'
+ """
+ return delimiter.join(str(value) for value in args)
-def split_namespace(ns_class_name: str) -> List[str]:
- return ns_class_name.split(":")
+def split_namespace(ns_class_name: str, delimiter: str = ":", maxsplit: int = 1) -> List[str]:
+ """Split a namespace-prefixed name into its namespace-prefix and name parts.
+
+ Example:
+ >>> split_namespace('prefix:classname')
+ ['prefix', 'classname']
+
+ >>> split_namespace('prefix:module:class', delimiter=":", maxsplit=2)
+ ['prefix', 'module', 'class']
+ """
+ return ns_class_name.split(delimiter, maxsplit=maxsplit)
-def general_after_log(i: "loguru.Logger", sec_format: str = "%0.3f") -> typing.Callable[["RetryCallState"], None]:
+def auto_namespace(name: str, delimiter: str = ":") -> str:
+ """Automatically handle namespace-prefixed names.
+
+ If the input name is empty, returns a default namespace prefix and name.
+ If the input name is not namespace-prefixed, adds a default namespace prefix.
+ Otherwise, returns the input name unchanged.
+
+ Example:
+ >>> auto_namespace('classname')
+ '?:classname'
+
+ >>> auto_namespace('prefix:classname')
+ 'prefix:classname'
+
+ >>> auto_namespace('')
+ '?:?'
+
+ >>> auto_namespace('?:custom')
+ '?:custom'
+ """
+ if not name:
+ return f"?{delimiter}?"
+ v = split_namespace(name, delimiter=delimiter)
+ if len(v) < 2:
+ return f"?{delimiter}{name}"
+ return name
+
+
+def add_affix(text: str, affix: Literal["brace", "url", "none"] = "brace"):
+ """Add affix to encapsulate data.
+
+ Example:
+ >>> add_affix("data", affix="brace")
+ '{data}'
+
+ >>> add_affix("example.com", affix="url")
+ '%7Bexample.com%7D'
+
+ >>> add_affix("text", affix="none")
+ 'text'
+ """
+ mappings = {
+ "brace": lambda x: "{" + x + "}",
+ "url": lambda x: quote("{" + x + "}"),
+ }
+ encoder = mappings.get(affix, lambda x: x)
+ return encoder(text)
+
+
+def remove_affix(text, affix: Literal["brace", "url", "none"] = "brace"):
+ """Remove affix to extract encapsulated data.
+
+ Args:
+ text (str): The input text with affix to be removed.
+ affix (str, optional): The type of affix used. Defaults to "brace".
+ Supported affix types: "brace" for removing curly braces, "url" for URL decoding within curly braces.
+
+ Returns:
+ str: The text with affix removed.
+
+ Example:
+ >>> remove_affix('{data}', affix="brace")
+ 'data'
+
+ >>> remove_affix('%7Bexample.com%7D', affix="url")
+ 'example.com'
+
+ >>> remove_affix('text', affix="none")
+ 'text'
+ """
+ mappings = {"brace": lambda x: x[1:-1], "url": lambda x: unquote(x)[1:-1]}
+ decoder = mappings.get(affix, lambda x: x)
+ return decoder(text)
+
+
+def general_after_log(i: "loguru.Logger", sec_format: str = "%0.3f") -> Callable[["RetryCallState"], None]:
"""
Generates a logging function to be used after a call is retried.
@@ -587,14 +665,21 @@ def role_raise_decorator(func):
@handle_exception
-async def aread(filename: str | Path, encoding=None) -> str:
+async def aread(filename: str | Path, encoding="utf-8") -> str:
"""Read file asynchronously."""
- async with aiofiles.open(str(filename), mode="r", encoding=encoding) as reader:
- content = await reader.read()
+ try:
+ async with aiofiles.open(str(filename), mode="r", encoding=encoding) as reader:
+ content = await reader.read()
+ except UnicodeDecodeError:
+ async with aiofiles.open(str(filename), mode="rb") as reader:
+ raw = await reader.read()
+ result = chardet.detect(raw)
+ detected_encoding = result["encoding"]
+ content = raw.decode(detected_encoding)
return content
-async def awrite(filename: str | Path, data: str, encoding=None):
+async def awrite(filename: str | Path, data: str, encoding="utf-8"):
"""Write file asynchronously."""
pathname = Path(filename)
pathname.parent.mkdir(parents=True, exist_ok=True)
@@ -636,12 +721,60 @@ def list_files(root: str | Path) -> List[Path]:
return files
+def parse_json_code_block(markdown_text: str) -> List[str]:
+ json_blocks = re.findall(r"```json(.*?)```", markdown_text, re.DOTALL)
+ return [v.strip() for v in json_blocks]
+
+
+def remove_white_spaces(v: str) -> str:
+ return re.sub(r"(? bytes:
+ """Read binary file asynchronously.
+
+ Args:
+ filename (Union[str, Path]): The name or path of the file to be read.
+
+ Returns:
+ bytes: The content of the file as bytes.
+
+ Example:
+ >>> content = await aread_bin('example.txt')
+ b'This is the content of the file.'
+
+ >>> content = await aread_bin(Path('example.txt'))
+ b'This is the content of the file.'
+ """
+ async with aiofiles.open(str(filename), mode="rb") as reader:
+ content = await reader.read()
+ return content
+
+
+async def awrite_bin(filename: str | Path, data: bytes):
+ """Write binary file asynchronously.
+
+ Args:
+ filename (Union[str, Path]): The name or path of the file to be written.
+ data (bytes): The binary data to be written to the file.
+
+ Example:
+ >>> await awrite_bin('output.bin', b'This is binary data.')
+
+ >>> await awrite_bin(Path('output.bin'), b'Another set of binary data.')
+ """
+ pathname = Path(filename)
+ pathname.parent.mkdir(parents=True, exist_ok=True)
+ async with aiofiles.open(str(pathname), mode="wb") as writer:
+ await writer.write(data)
+
+
def is_coroutine_func(func: Callable) -> bool:
return inspect.iscoroutinefunction(func)
def load_mc_skills_code(skill_names: list[str] = None, skills_dir: Path = None) -> list[str]:
- """load mincraft skill from js files"""
+ """load minecraft skill from js files"""
if not skills_dir:
skills_dir = Path(__file__).parent.absolute()
if skill_names is None:
@@ -676,3 +809,32 @@ def decode_image(img_url_or_b64: str) -> Image:
img_data = BytesIO(base64.b64decode(b64_data))
img = Image.open(img_data)
return img
+
+
+def log_and_reraise(retry_state: RetryCallState):
+ logger.error(f"Retry attempts exhausted. Last exception: {retry_state.outcome.exception()}")
+ logger.warning(
+ """
+Recommend going to https://deepwisdom.feishu.cn/wiki/MsGnwQBjiif9c3koSJNcYaoSnu4#part-XdatdVlhEojeAfxaaEZcMV3ZniQ
+See FAQ 5.8
+"""
+ )
+ raise retry_state.outcome.exception()
+
+
+def get_markdown_codeblock_type(filename: str) -> str:
+ """Return the markdown code-block type corresponding to the file extension."""
+ mime_type, _ = mimetypes.guess_type(filename)
+ mappings = {
+ "text/x-shellscript": "bash",
+ "text/x-c++src": "cpp",
+ "text/css": "css",
+ "text/html": "html",
+ "text/x-java": "java",
+ "application/javascript": "javascript",
+ "application/json": "json",
+ "text/x-python": "python",
+ "text/x-ruby": "ruby",
+ "application/sql": "sql",
+ }
+ return mappings.get(mime_type, "text")
diff --git a/metagpt/utils/cost_manager.py b/metagpt/utils/cost_manager.py
index 7bf5154b6..7149ab94e 100644
--- a/metagpt/utils/cost_manager.py
+++ b/metagpt/utils/cost_manager.py
@@ -6,12 +6,13 @@
@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.
"""
+import re
from typing import NamedTuple
from pydantic import BaseModel
from metagpt.logs import logger
-from metagpt.utils.token_counter import TOKEN_COSTS
+from metagpt.utils.token_counter import FIREWORKS_GRADE_TOKEN_COSTS, TOKEN_COSTS
class Costs(NamedTuple):
@@ -29,6 +30,7 @@ class CostManager(BaseModel):
total_budget: float = 0
max_budget: float = 10.0
total_cost: float = 0
+ token_costs: dict[str, dict[str, float]] = TOKEN_COSTS # different model's token cost
def update_cost(self, prompt_tokens, completion_tokens, model):
"""
@@ -39,10 +41,17 @@ class CostManager(BaseModel):
completion_tokens (int): The number of tokens used in the completion.
model (str): The model used for the API call.
"""
+ if prompt_tokens + completion_tokens == 0 or not model:
+ return
self.total_prompt_tokens += prompt_tokens
self.total_completion_tokens += completion_tokens
+ if model not in self.token_costs:
+ logger.warning(f"Model {model} not found in TOKEN_COSTS.")
+ return
+
cost = (
- prompt_tokens * TOKEN_COSTS[model]["prompt"] + completion_tokens * TOKEN_COSTS[model]["completion"]
+ prompt_tokens * self.token_costs[model]["prompt"]
+ + completion_tokens * self.token_costs[model]["completion"]
) / 1000
self.total_cost += cost
logger.info(
@@ -97,3 +106,44 @@ class TokenCostManager(CostManager):
self.total_prompt_tokens += prompt_tokens
self.total_completion_tokens += completion_tokens
logger.info(f"prompt_tokens: {prompt_tokens}, completion_tokens: {completion_tokens}")
+
+
+class FireworksCostManager(CostManager):
+ def model_grade_token_costs(self, model: str) -> dict[str, float]:
+ def _get_model_size(model: str) -> float:
+ size = re.findall(".*-([0-9.]+)b", model)
+ size = float(size[0]) if len(size) > 0 else -1
+ return size
+
+ if "mixtral-8x7b" in model:
+ token_costs = FIREWORKS_GRADE_TOKEN_COSTS["mixtral-8x7b"]
+ else:
+ model_size = _get_model_size(model)
+ if 0 < model_size <= 16:
+ token_costs = FIREWORKS_GRADE_TOKEN_COSTS["16"]
+ elif 16 < model_size <= 80:
+ token_costs = FIREWORKS_GRADE_TOKEN_COSTS["80"]
+ else:
+ token_costs = FIREWORKS_GRADE_TOKEN_COSTS["-1"]
+ return token_costs
+
+ def update_cost(self, prompt_tokens: int, completion_tokens: int, model: str):
+ """
+ Refs to `https://app.fireworks.ai/pricing` **Developer pricing**
+ Update the total cost, prompt tokens, and completion tokens.
+
+ Args:
+ prompt_tokens (int): The number of tokens used in the prompt.
+ completion_tokens (int): The number of tokens used in the completion.
+ model (str): The model used for the API call.
+ """
+ self.total_prompt_tokens += prompt_tokens
+ self.total_completion_tokens += completion_tokens
+
+ token_costs = self.model_grade_token_costs(model)
+ cost = (prompt_tokens * token_costs["prompt"] + completion_tokens * token_costs["completion"]) / 1000000
+ self.total_cost += cost
+ logger.info(
+ f"Total running cost: ${self.total_cost:.4f}"
+ f"Current cost: ${cost:.4f}, prompt_tokens: {prompt_tokens}, completion_tokens: {completion_tokens}"
+ )
diff --git a/metagpt/utils/dependency_file.py b/metagpt/utils/dependency_file.py
index d3add1171..0a375051c 100644
--- a/metagpt/utils/dependency_file.py
+++ b/metagpt/utils/dependency_file.py
@@ -13,9 +13,7 @@ import re
from pathlib import Path
from typing import Set
-import aiofiles
-
-from metagpt.utils.common import aread
+from metagpt.utils.common import aread, awrite
from metagpt.utils.exceptions import handle_exception
@@ -45,8 +43,7 @@ class DependencyFile:
async def save(self):
"""Save dependencies to the file asynchronously."""
data = json.dumps(self._dependencies)
- async with aiofiles.open(str(self._filename), mode="w") as writer:
- await writer.write(data)
+ await awrite(filename=self._filename, data=data)
async def update(self, filename: Path | str, dependencies: Set[Path | str], persist=True):
"""Update dependencies for a file asynchronously.
diff --git a/metagpt/utils/di_graph_repository.py b/metagpt/utils/di_graph_repository.py
index 8bb5f9bb3..fee706ece 100644
--- a/metagpt/utils/di_graph_repository.py
+++ b/metagpt/utils/di_graph_repository.py
@@ -4,7 +4,9 @@
@Time : 2023/12/19
@Author : mashenquan
@File : di_graph_repository.py
-@Desc : Graph repository based on DiGraph
+@Desc : Graph repository based on DiGraph.
+ This script defines a graph repository class based on a directed graph (DiGraph), providing functionalities
+ specific to handling directed relationships between entities.
"""
from __future__ import annotations
@@ -19,20 +21,41 @@ from metagpt.utils.graph_repository import SPO, GraphRepository
class DiGraphRepository(GraphRepository):
+ """Graph repository based on DiGraph."""
+
def __init__(self, name: str, **kwargs):
super().__init__(name=name, **kwargs)
self._repo = networkx.DiGraph()
async def insert(self, subject: str, predicate: str, object_: str):
+ """Insert a new triple into the directed graph repository.
+
+ Args:
+ subject (str): The subject of the triple.
+ predicate (str): The predicate describing the relationship.
+ object_ (str): The object of the triple.
+
+ Example:
+ await my_di_graph_repo.insert(subject="Node1", predicate="connects_to", object_="Node2")
+ # Adds a directed relationship: Node1 connects_to Node2
+ """
self._repo.add_edge(subject, object_, predicate=predicate)
- async def upsert(self, subject: str, predicate: str, object_: str):
- pass
-
- async def update(self, subject: str, predicate: str, object_: str):
- pass
-
async def select(self, subject: str = None, predicate: str = None, object_: str = None) -> List[SPO]:
+ """Retrieve triples from the directed graph repository based on specified criteria.
+
+ Args:
+ subject (str, optional): The subject of the triple to filter by.
+ predicate (str, optional): The predicate describing the relationship to filter by.
+ object_ (str, optional): The object of the triple to filter by.
+
+ Returns:
+ List[SPO]: A list of SPO objects representing the selected triples.
+
+ Example:
+ selected_triples = await my_di_graph_repo.select(subject="Node1", predicate="connects_to")
+ # Retrieves directed relationships where Node1 is the subject and the predicate is 'connects_to'.
+ """
result = []
for s, o, p in self._repo.edges(data="predicate"):
if subject and subject != s:
@@ -44,12 +67,41 @@ class DiGraphRepository(GraphRepository):
result.append(SPO(subject=s, predicate=p, object_=o))
return result
+ async def delete(self, subject: str = None, predicate: str = None, object_: str = None) -> int:
+ """Delete triples from the directed graph repository based on specified criteria.
+
+ Args:
+ subject (str, optional): The subject of the triple to filter by.
+ predicate (str, optional): The predicate describing the relationship to filter by.
+ object_ (str, optional): The object of the triple to filter by.
+
+ Returns:
+ int: The number of triples deleted from the repository.
+
+ Example:
+ deleted_count = await my_di_graph_repo.delete(subject="Node1", predicate="connects_to")
+ # Deletes directed relationships where Node1 is the subject and the predicate is 'connects_to'.
+ """
+ rows = await self.select(subject=subject, predicate=predicate, object_=object_)
+ if not rows:
+ return 0
+ for r in rows:
+ self._repo.remove_edge(r.subject, r.object_)
+ return len(rows)
+
def json(self) -> str:
+ """Convert the directed graph repository to a JSON-formatted string."""
m = networkx.node_link_data(self._repo)
data = json.dumps(m)
return data
async def save(self, path: str | Path = None):
+ """Save the directed graph repository to a JSON file.
+
+ Args:
+ path (Union[str, Path], optional): The directory path where the JSON file will be saved.
+ If not provided, the default path is taken from the 'root' key in the keyword arguments.
+ """
data = self.json()
path = path or self._kwargs.get("root")
if not path.exists():
@@ -58,12 +110,21 @@ class DiGraphRepository(GraphRepository):
await awrite(filename=pathname.with_suffix(".json"), data=data, encoding="utf-8")
async def load(self, pathname: str | Path):
+ """Load a directed graph repository from a JSON file."""
data = await aread(filename=pathname, encoding="utf-8")
m = json.loads(data)
self._repo = networkx.node_link_graph(m)
@staticmethod
async def load_from(pathname: str | Path) -> GraphRepository:
+ """Create and load a directed graph repository from a JSON file.
+
+ Args:
+ pathname (Union[str, Path]): The path to the JSON file to be loaded.
+
+ Returns:
+ GraphRepository: A new instance of the graph repository loaded from the specified JSON file.
+ """
pathname = Path(pathname)
name = pathname.with_suffix("").name
root = pathname.parent
@@ -74,9 +135,16 @@ class DiGraphRepository(GraphRepository):
@property
def root(self) -> str:
+ """Return the root directory path for the graph repository files."""
return self._kwargs.get("root")
@property
def pathname(self) -> Path:
+ """Return the path and filename to the graph repository file."""
p = Path(self.root) / self.name
return p.with_suffix(".json")
+
+ @property
+ def repo(self):
+ """Get the underlying directed graph repository."""
+ return self._repo
diff --git a/metagpt/utils/embedding.py b/metagpt/utils/embedding.py
index 21d62948c..3d53a314c 100644
--- a/metagpt/utils/embedding.py
+++ b/metagpt/utils/embedding.py
@@ -5,12 +5,15 @@
@Author : alexanderwu
@File : embedding.py
"""
-from langchain_community.embeddings import OpenAIEmbeddings
+from llama_index.embeddings.openai import OpenAIEmbedding
from metagpt.config2 import config
-def get_embedding():
+def get_embedding() -> OpenAIEmbedding:
llm = config.get_openai_llm()
- embedding = OpenAIEmbeddings(openai_api_key=llm.api_key, openai_api_base=llm.base_url)
+ if llm is None:
+ raise ValueError("To use OpenAIEmbedding, please ensure that config.llm.api_type is correctly set to 'openai'.")
+
+ embedding = OpenAIEmbedding(api_key=llm.api_key, api_base=llm.base_url)
return embedding
diff --git a/metagpt/utils/file_repository.py b/metagpt/utils/file_repository.py
index d2a06963a..d19f2b705 100644
--- a/metagpt/utils/file_repository.py
+++ b/metagpt/utils/file_repository.py
@@ -14,11 +14,9 @@ from datetime import datetime
from pathlib import Path
from typing import Dict, List, Set
-import aiofiles
-
from metagpt.logs import logger
from metagpt.schema import Document
-from metagpt.utils.common import aread
+from metagpt.utils.common import aread, awrite
from metagpt.utils.json_to_markdown import json_to_markdown
@@ -55,8 +53,7 @@ class FileRepository:
pathname = self.workdir / filename
pathname.parent.mkdir(parents=True, exist_ok=True)
content = content if content else "" # avoid `argument must be str, not None` to make it continue
- async with aiofiles.open(str(pathname), mode="w") as writer:
- await writer.write(content)
+ await awrite(filename=str(pathname), data=content)
logger.info(f"save to: {str(pathname)}")
if dependencies is not None:
diff --git a/metagpt/utils/graph_repository.py b/metagpt/utils/graph_repository.py
index 1a6f29a6b..eb1fc5e12 100644
--- a/metagpt/utils/graph_repository.py
+++ b/metagpt/utils/graph_repository.py
@@ -4,21 +4,28 @@
@Time : 2023/12/19
@Author : mashenquan
@File : graph_repository.py
-@Desc : Superclass for graph repository.
+@Desc : Superclass for graph repository. This script defines a superclass for a graph repository, providing a
+ foundation for specific implementations.
+
"""
from abc import ABC, abstractmethod
+from collections import defaultdict
from pathlib import Path
from typing import List
from pydantic import BaseModel
-from metagpt.logs import logger
-from metagpt.repo_parser import ClassInfo, ClassRelationship, RepoFileInfo
-from metagpt.utils.common import concat_namespace
+from metagpt.repo_parser import DotClassInfo, DotClassRelationship, RepoFileInfo
+from metagpt.utils.common import concat_namespace, split_namespace
class GraphKeyword:
+ """Basic words for a Graph database.
+
+ This class defines a set of basic words commonly used in the context of a Graph database.
+ """
+
IS = "is"
OF = "Of"
ON = "On"
@@ -28,51 +35,149 @@ class GraphKeyword:
SOURCE_CODE = "source_code"
NULL = ""
GLOBAL_VARIABLE = "global_variable"
- CLASS_FUNCTION = "class_function"
+ CLASS_METHOD = "class_method"
CLASS_PROPERTY = "class_property"
- HAS_CLASS_FUNCTION = "has_class_function"
+ HAS_CLASS_METHOD = "has_class_method"
HAS_CLASS_PROPERTY = "has_class_property"
HAS_CLASS = "has_class"
+ HAS_DETAIL = "has_detail"
HAS_PAGE_INFO = "has_page_info"
HAS_CLASS_VIEW = "has_class_view"
HAS_SEQUENCE_VIEW = "has_sequence_view"
- HAS_ARGS_DESC = "has_args_desc"
- HAS_TYPE_DESC = "has_type_desc"
+ HAS_SEQUENCE_VIEW_VER = "has_sequence_view_ver"
+ HAS_CLASS_USE_CASE = "has_class_use_case"
+ IS_COMPOSITE_OF = "is_composite_of"
+ IS_AGGREGATE_OF = "is_aggregate_of"
+ HAS_PARTICIPANT = "has_participant"
class SPO(BaseModel):
+ """Graph repository record type.
+
+ This class represents a record in a graph repository with three components:
+ - Subject: The subject of the triple.
+ - Predicate: The predicate describing the relationship between the subject and the object.
+ - Object: The object of the triple.
+
+ Attributes:
+ subject (str): The subject of the triple.
+ predicate (str): The predicate describing the relationship.
+ object_ (str): The object of the triple.
+
+ Example:
+ spo_record = SPO(subject="Node1", predicate="connects_to", object_="Node2")
+ # Represents a triple: Node1 connects_to Node2
+ """
+
subject: str
predicate: str
object_: str
class GraphRepository(ABC):
+ """Abstract base class for a Graph Repository.
+
+ This class defines the interface for a graph repository, providing methods for inserting, selecting,
+ deleting, and saving graph data. Concrete implementations of this class must provide functionality
+ for these operations.
+ """
+
def __init__(self, name: str, **kwargs):
self._repo_name = name
self._kwargs = kwargs
@abstractmethod
async def insert(self, subject: str, predicate: str, object_: str):
- pass
+ """Insert a new triple into the graph repository.
- @abstractmethod
- async def upsert(self, subject: str, predicate: str, object_: str):
- pass
+ Args:
+ subject (str): The subject of the triple.
+ predicate (str): The predicate describing the relationship.
+ object_ (str): The object of the triple.
- @abstractmethod
- async def update(self, subject: str, predicate: str, object_: str):
+ Example:
+ await my_repository.insert(subject="Node1", predicate="connects_to", object_="Node2")
+ # Inserts a triple: Node1 connects_to Node2 into the graph repository.
+ """
pass
@abstractmethod
async def select(self, subject: str = None, predicate: str = None, object_: str = None) -> List[SPO]:
+ """Retrieve triples from the graph repository based on specified criteria.
+
+ Args:
+ subject (str, optional): The subject of the triple to filter by.
+ predicate (str, optional): The predicate describing the relationship to filter by.
+ object_ (str, optional): The object of the triple to filter by.
+
+ Returns:
+ List[SPO]: A list of SPO objects representing the selected triples.
+
+ Example:
+ selected_triples = await my_repository.select(subject="Node1", predicate="connects_to")
+ # Retrieves triples where Node1 is the subject and the predicate is 'connects_to'.
+ """
+ pass
+
+ @abstractmethod
+ async def delete(self, subject: str = None, predicate: str = None, object_: str = None) -> int:
+ """Delete triples from the graph repository based on specified criteria.
+
+ Args:
+ subject (str, optional): The subject of the triple to filter by.
+ predicate (str, optional): The predicate describing the relationship to filter by.
+ object_ (str, optional): The object of the triple to filter by.
+
+ Returns:
+ int: The number of triples deleted from the repository.
+
+ Example:
+ deleted_count = await my_repository.delete(subject="Node1", predicate="connects_to")
+ # Deletes triples where Node1 is the subject and the predicate is 'connects_to'.
+ """
+ pass
+
+ @abstractmethod
+ async def save(self):
+ """Save any changes made to the graph repository.
+
+ Example:
+ await my_repository.save()
+ # Persists any changes made to the graph repository.
+ """
pass
@property
def name(self) -> str:
+ """Get the name of the graph repository."""
return self._repo_name
@staticmethod
async def update_graph_db_with_file_info(graph_db: "GraphRepository", file_info: RepoFileInfo):
+ """Insert information of RepoFileInfo into the specified graph repository.
+
+ This function updates the provided graph repository with information from the given RepoFileInfo object.
+ The function inserts triples related to various dimensions such as file type, class, class method, function,
+ global variable, and page info.
+
+ Triple Patterns:
+ - (?, is, [file type])
+ - (?, has class, ?)
+ - (?, is, [class])
+ - (?, has class method, ?)
+ - (?, has function, ?)
+ - (?, is, [function])
+ - (?, is, global variable)
+ - (?, has page info, ?)
+
+ Args:
+ graph_db (GraphRepository): The graph repository object to be updated.
+ file_info (RepoFileInfo): The RepoFileInfo object containing information to be inserted.
+
+ Example:
+ await update_graph_db_with_file_info(my_graph_repo, my_file_info)
+ # Updates 'my_graph_repo' with information from 'my_file_info'.
+ """
await graph_db.insert(subject=file_info.file, predicate=GraphKeyword.IS, object_=GraphKeyword.SOURCE_CODE)
file_types = {".py": "python", ".js": "javascript"}
file_type = file_types.get(Path(file_info.file).suffix, GraphKeyword.NULL)
@@ -95,13 +200,13 @@ class GraphRepository(ABC):
for fn in methods:
await graph_db.insert(
subject=concat_namespace(file_info.file, class_name),
- predicate=GraphKeyword.HAS_CLASS_FUNCTION,
+ predicate=GraphKeyword.HAS_CLASS_METHOD,
object_=concat_namespace(file_info.file, class_name, fn),
)
await graph_db.insert(
subject=concat_namespace(file_info.file, class_name, fn),
predicate=GraphKeyword.IS,
- object_=GraphKeyword.CLASS_FUNCTION,
+ object_=GraphKeyword.CLASS_METHOD,
)
for f in file_info.functions:
# file -> function
@@ -133,7 +238,34 @@ class GraphRepository(ABC):
)
@staticmethod
- async def update_graph_db_with_class_views(graph_db: "GraphRepository", class_views: List[ClassInfo]):
+ async def update_graph_db_with_class_views(graph_db: "GraphRepository", class_views: List[DotClassInfo]):
+ """Insert dot format class information into the specified graph repository.
+
+ This function updates the provided graph repository with class information from the given list of DotClassInfo objects.
+ The function inserts triples related to various aspects of class views, including source code, file type, class,
+ class property, class detail, method, composition, and aggregation.
+
+ Triple Patterns:
+ - (?, is, source code)
+ - (?, is, file type)
+ - (?, has class, ?)
+ - (?, is, class)
+ - (?, has class property, ?)
+ - (?, is, class property)
+ - (?, has detail, ?)
+ - (?, has method, ?)
+ - (?, is composite of, ?)
+ - (?, is aggregate of, ?)
+
+ Args:
+ graph_db (GraphRepository): The graph repository object to be updated.
+ class_views (List[DotClassInfo]): List of DotClassInfo objects containing class information to be inserted.
+
+
+ Example:
+ await update_graph_db_with_class_views(my_graph_repo, [class_info1, class_info2])
+ # Updates 'my_graph_repo' with class information from the provided list of DotClassInfo objects.
+ """
for c in class_views:
filename, _ = c.package.split(":", 1)
await graph_db.insert(subject=filename, predicate=GraphKeyword.IS, object_=GraphKeyword.SOURCE_CODE)
@@ -146,6 +278,7 @@ class GraphRepository(ABC):
predicate=GraphKeyword.IS,
object_=GraphKeyword.CLASS,
)
+ await graph_db.insert(subject=c.package, predicate=GraphKeyword.HAS_DETAIL, object_=c.model_dump_json())
for vn, vt in c.attributes.items():
# class -> property
await graph_db.insert(
@@ -160,33 +293,61 @@ class GraphRepository(ABC):
object_=GraphKeyword.CLASS_PROPERTY,
)
await graph_db.insert(
- subject=concat_namespace(c.package, vn), predicate=GraphKeyword.HAS_TYPE_DESC, object_=vt
+ subject=concat_namespace(c.package, vn),
+ predicate=GraphKeyword.HAS_DETAIL,
+ object_=vt.model_dump_json(),
)
- for fn, desc in c.methods.items():
- if " " in desc and "" not in desc:
- logger.error(desc)
+ for fn, ft in c.methods.items():
# class -> function
await graph_db.insert(
subject=c.package,
- predicate=GraphKeyword.HAS_CLASS_FUNCTION,
+ predicate=GraphKeyword.HAS_CLASS_METHOD,
object_=concat_namespace(c.package, fn),
)
# function detail
await graph_db.insert(
subject=concat_namespace(c.package, fn),
predicate=GraphKeyword.IS,
- object_=GraphKeyword.CLASS_FUNCTION,
+ object_=GraphKeyword.CLASS_METHOD,
)
await graph_db.insert(
subject=concat_namespace(c.package, fn),
- predicate=GraphKeyword.HAS_ARGS_DESC,
- object_=desc,
+ predicate=GraphKeyword.HAS_DETAIL,
+ object_=ft.model_dump_json(),
+ )
+ for i in c.compositions:
+ await graph_db.insert(
+ subject=c.package, predicate=GraphKeyword.IS_COMPOSITE_OF, object_=concat_namespace("?", i)
+ )
+ for i in c.aggregations:
+ await graph_db.insert(
+ subject=c.package, predicate=GraphKeyword.IS_AGGREGATE_OF, object_=concat_namespace("?", i)
)
@staticmethod
async def update_graph_db_with_class_relationship_views(
- graph_db: "GraphRepository", relationship_views: List[ClassRelationship]
+ graph_db: "GraphRepository", relationship_views: List[DotClassRelationship]
):
+ """Insert class relationships and labels into the specified graph repository.
+
+ This function updates the provided graph repository with class relationship information from the given list
+ of DotClassRelationship objects. The function inserts triples representing relationships and labels between
+ classes.
+
+ Triple Patterns:
+ - (?, is relationship of, ?)
+ - (?, is relationship on, ?)
+
+ Args:
+ graph_db (GraphRepository): The graph repository object to be updated.
+ relationship_views (List[DotClassRelationship]): List of DotClassRelationship objects containing
+ class relationship information to be inserted.
+
+ Example:
+ await update_graph_db_with_class_relationship_views(my_graph_repo, [relationship1, relationship2])
+ # Updates 'my_graph_repo' with class relationship information from the provided list of DotClassRelationship objects.
+
+ """
for r in relationship_views:
await graph_db.insert(
subject=r.src, predicate=GraphKeyword.IS + r.relationship + GraphKeyword.OF, object_=r.dest
@@ -198,3 +359,32 @@ class GraphRepository(ABC):
predicate=GraphKeyword.IS + r.relationship + GraphKeyword.ON,
object_=concat_namespace(r.dest, r.label),
)
+
+ @staticmethod
+ async def rebuild_composition_relationship(graph_db: "GraphRepository"):
+ """Append namespace-prefixed information to relationship SPO (Subject-Predicate-Object) objects in the graph
+ repository.
+
+ This function updates the provided graph repository by appending namespace-prefixed information to existing
+ relationship SPO objects.
+
+ Args:
+ graph_db (GraphRepository): The graph repository object to be updated.
+ """
+ classes = await graph_db.select(predicate=GraphKeyword.IS, object_=GraphKeyword.CLASS)
+ mapping = defaultdict(list)
+ for c in classes:
+ name = split_namespace(c.subject)[-1]
+ mapping[name].append(c.subject)
+
+ rows = await graph_db.select(predicate=GraphKeyword.IS_COMPOSITE_OF)
+ for r in rows:
+ ns, class_ = split_namespace(r.object_)
+ if ns != "?":
+ continue
+ val = mapping[class_]
+ if len(val) != 1:
+ continue
+ ns_name = val[0]
+ await graph_db.delete(subject=r.subject, predicate=r.predicate, object_=r.object_)
+ await graph_db.insert(subject=r.subject, predicate=r.predicate, object_=ns_name)
diff --git a/metagpt/utils/mermaid.py b/metagpt/utils/mermaid.py
index ae3c5118f..e1d140e84 100644
--- a/metagpt/utils/mermaid.py
+++ b/metagpt/utils/mermaid.py
@@ -9,11 +9,9 @@ import asyncio
import os
from pathlib import Path
-import aiofiles
-
from metagpt.config2 import config
from metagpt.logs import logger
-from metagpt.utils.common import check_cmd_exists
+from metagpt.utils.common import awrite, check_cmd_exists
async def mermaid_to_file(engine, mermaid_code, output_file_without_suffix, width=2048, height=2048) -> int:
@@ -30,9 +28,7 @@ async def mermaid_to_file(engine, mermaid_code, output_file_without_suffix, widt
if dir_name and not os.path.exists(dir_name):
os.makedirs(dir_name)
tmp = Path(f"{output_file_without_suffix}.mmd")
- async with aiofiles.open(tmp, "w", encoding="utf-8") as f:
- await f.write(mermaid_code)
- # tmp.write_text(mermaid_code, encoding="utf-8")
+ await awrite(filename=tmp, data=mermaid_code)
if engine == "nodejs":
if check_cmd_exists(config.mermaid.path) != 0:
diff --git a/metagpt/utils/parse_docstring.py b/metagpt/utils/parse_docstring.py
index e91be8e75..63c0e6890 100644
--- a/metagpt/utils/parse_docstring.py
+++ b/metagpt/utils/parse_docstring.py
@@ -1,45 +1,23 @@
import re
from typing import Tuple
-from pydantic import BaseModel
-
def remove_spaces(text):
return re.sub(r"\s+", " ", text).strip()
-class DocstringParser(BaseModel):
- docstring: str
+class DocstringParser:
+ @staticmethod
+ def parse(docstring: str) -> Tuple[str, str]:
+ """Parse the docstring and return the overall description and the parameter description.
- def parse_desc(self) -> str:
- """Parse and return the description from the docstring."""
-
- def parse_params(self) -> list[Tuple[str, str, str]]:
- """Parse and return the parameters from the docstring.
+ Args:
+ docstring (str): The docstring to be parsed.
Returns:
- list[Tuple[str, str, str]]: A list of input paramter info. Each info is a triple of (param name, param type, param description)
+ Tuple[str, str]: A tuple of (overall description, parameter description)
"""
- def parse_returns(self) -> list[Tuple[str, str]]:
- """Parse and return the output information from the docstring.
-
- Returns:
- list[Tuple[str, str]]: A list of output info. Each info is a tuple of (return type, return description)
- """
-
- @staticmethod
- def check_and_parse_optional(param_type: str) -> Tuple[bool, str]:
- """Check if a parameter is optional and return a processed param_type rid of the optionality info if so"""
-
- @staticmethod
- def check_and_parse_default_value(param_desc: str) -> Tuple[bool, str]:
- """Check if a parameter has a default value and return the default value if so"""
-
- @staticmethod
- def check_and_parse_enum(param_desc: str) -> Tuple[bool, str]:
- """Check if a parameter description includes an enum and return enum values if so"""
-
class reSTDocstringParser(DocstringParser):
"""A parser for reStructuredText (reST) docstring"""
@@ -48,40 +26,18 @@ class reSTDocstringParser(DocstringParser):
class GoogleDocstringParser(DocstringParser):
"""A parser for Google-stype docstring"""
- docstring: str
-
- def parse_desc(self) -> str:
- description_match = re.search(r"^(.*?)(?:Args:|Returns:|Raises:|$)", self.docstring, re.DOTALL)
- description = remove_spaces(description_match.group(1)) if description_match else ""
- return description
-
- def parse_params(self) -> list[Tuple[str, str, str]]:
- args_match = re.search(r"Args:\s*(.*?)(?:Returns:|Raises:|$)", self.docstring, re.DOTALL)
- _args = args_match.group(1).strip() if args_match else ""
- # variable_pattern = re.compile(r"(\w+)\s*\((.*?)\):\s*(.*)")
- variable_pattern = re.compile(
- r"(\w+)\s*\((.*?)\):\s*(.*?)(?=\n\s*\w+\s*\(|\Z)", re.DOTALL
- ) # (?=\n\w+\s*\(|\Z) is to assert that what follows is either the start of the next parameter (indicated by a newline, some word characters, and an opening parenthesis) or the end of the string (\Z).
- params = variable_pattern.findall(_args)
- return params
-
- def parse_returns(self) -> list[Tuple[str, str]]:
- returns_match = re.search(r"Returns:\s*(.*?)(?:Raises:|$)", self.docstring, re.DOTALL)
- returns = returns_match.group(1).strip() if returns_match else ""
- return_pattern = re.compile(r"^(.*)\s*:\s*(.*)$")
- returns = return_pattern.findall(returns)
- return returns
-
@staticmethod
- def check_and_parse_optional(param_type: str) -> Tuple[bool, str]:
- return "optional" in param_type, param_type.replace(", optional", "")
+ def parse(docstring: str) -> Tuple[str, str]:
+ if not docstring:
+ return "", ""
- @staticmethod
- def check_and_parse_default_value(param_desc: str) -> Tuple[bool, str]:
- default_val = re.search(r"Defaults to (.+?)\.", param_desc)
- return (True, default_val.group(1)) if default_val else (False, "")
+ docstring = remove_spaces(docstring)
- @staticmethod
- def check_and_parse_enum(param_desc: str) -> Tuple[bool, str]:
- enum_val = re.search(r"Enum: \[(.+?)\]", param_desc)
- return (True, [e.strip() for e in enum_val.group(1).split(",")]) if enum_val else (False, [])
+ if "Args:" in docstring:
+ overall_desc, param_desc = docstring.split("Args:")
+ param_desc = "Args:" + param_desc
+ else:
+ overall_desc = docstring
+ param_desc = ""
+
+ return overall_desc, param_desc
diff --git a/metagpt/utils/project_repo.py b/metagpt/utils/project_repo.py
index c1f98e1ec..bb18b520c 100644
--- a/metagpt/utils/project_repo.py
+++ b/metagpt/utils/project_repo.py
@@ -33,6 +33,7 @@ from metagpt.const import (
TASK_PDF_FILE_REPO,
TEST_CODES_FILE_REPO,
TEST_OUTPUTS_FILE_REPO,
+ VISUAL_GRAPH_REPO_FILE_REPO,
)
from metagpt.utils.file_repository import FileRepository
from metagpt.utils.git_repository import GitRepository
@@ -69,6 +70,7 @@ class ResourceFileRepositories(FileRepository):
code_summary: FileRepository
sd_output: FileRepository
code_plan_and_change: FileRepository
+ graph_repo: FileRepository
def __init__(self, git_repo):
super().__init__(git_repo=git_repo, relative_path=RESOURCES_FILE_REPO)
@@ -82,6 +84,7 @@ class ResourceFileRepositories(FileRepository):
self.code_summary = git_repo.new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)
self.sd_output = git_repo.new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)
self.code_plan_and_change = git_repo.new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)
+ self.graph_repo = git_repo.new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)
class ProjectRepo(FileRepository):
@@ -133,6 +136,7 @@ class ProjectRepo(FileRepository):
code_files = self.with_src_path(path=git_workdir / git_workdir.name).srcs.all_files
if not code_files:
return False
+ return bool(code_files)
def with_src_path(self, path: str | Path) -> ProjectRepo:
try:
diff --git a/metagpt/utils/recovery_util.py b/metagpt/utils/recovery_util.py
index d0b197e69..2089ae018 100644
--- a/metagpt/utils/recovery_util.py
+++ b/metagpt/utils/recovery_util.py
@@ -54,5 +54,5 @@ def save_history(role: Role, save_dir: str = ""):
with open(save_path / "plan.json", "w", encoding="utf-8") as plan_file:
json.dump(plan, plan_file, indent=4, ensure_ascii=False)
- save_code_file(name=Path(record_time) / "history_nb", code_context=role.execute_code.nb, file_format="ipynb")
+ save_code_file(name=Path(record_time), code_context=role.execute_code.nb, file_format="ipynb")
return save_path
diff --git a/metagpt/utils/reflection.py b/metagpt/utils/reflection.py
new file mode 100644
index 000000000..8b8237ae7
--- /dev/null
+++ b/metagpt/utils/reflection.py
@@ -0,0 +1,18 @@
+"""class tools, including method inspection, class attributes, inheritance relationships, etc."""
+
+
+def check_methods(C, *methods):
+ """Check if the class has methods. borrow from _collections_abc.
+
+ Useful when implementing implicit interfaces, such as defining an abstract class, isinstance can be used for determination without inheritance.
+ """
+ mro = C.__mro__
+ for method in methods:
+ for B in mro:
+ if method in B.__dict__:
+ if B.__dict__[method] is None:
+ return NotImplemented
+ break
+ else:
+ return NotImplemented
+ return True
diff --git a/metagpt/utils/repair_llm_raw_output.py b/metagpt/utils/repair_llm_raw_output.py
index 06484f71d..17e095c5f 100644
--- a/metagpt/utils/repair_llm_raw_output.py
+++ b/metagpt/utils/repair_llm_raw_output.py
@@ -119,6 +119,7 @@ def repair_json_format(output: str) -> str:
logger.info(f"repair_json_format: {'}]'}")
elif output.startswith("{") and output.endswith("]"):
output = output[:-1] + "}"
+
# remove comments in output json string, after json value content, maybe start with #, maybe start with //
arr = output.split("\n")
new_arr = []
@@ -208,6 +209,17 @@ def repair_invalid_json(output: str, error: str) -> str:
elif (rline[col_no] in ["'", '"']) and (line.startswith('"') or line.startswith("'")) and "," not in line:
# problem, `"""` or `'''` without `,`
new_line = f",{line}"
+ elif col_no - 1 >= 0 and rline[col_no - 1] in ['"', "'"]:
+ # backslash problem like \" in the output
+ char = rline[col_no - 1]
+ nearest_char_idx = rline[col_no:].find(char)
+ new_line = (
+ rline[: col_no - 1]
+ + "\\"
+ + rline[col_no - 1 : col_no + nearest_char_idx]
+ + "\\"
+ + rline[col_no + nearest_char_idx :]
+ )
elif '",' not in line and "," not in line and '"' not in line:
new_line = f'{line}",'
elif not line.endswith(","):
@@ -328,7 +340,9 @@ def extract_state_value_from_output(content: str) -> str:
content (str): llm's output from `Role._think`
"""
content = content.strip() # deal the output cases like " 0", "0\n" and so on.
- pattern = r"([0-9])" # TODO find the number using a more proper method not just extract from content using pattern
+ pattern = (
+ r"(? 0 else "-1"
diff --git a/metagpt/utils/repo_to_markdown.py b/metagpt/utils/repo_to_markdown.py
new file mode 100644
index 000000000..76dfe1b82
--- /dev/null
+++ b/metagpt/utils/repo_to_markdown.py
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+This file provides functionality to convert a local repository into a markdown representation.
+"""
+from __future__ import annotations
+
+import mimetypes
+from pathlib import Path
+
+from gitignore_parser import parse_gitignore
+
+from metagpt.logs import logger
+from metagpt.utils.common import aread, awrite, get_markdown_codeblock_type, list_files
+from metagpt.utils.tree import tree
+
+
+async def repo_to_markdown(repo_path: str | Path, output: str | Path = None, gitignore: str | Path = None) -> str:
+ """
+ Convert a local repository into a markdown representation.
+
+ This function takes a path to a local repository and generates a markdown representation of the repository structure,
+ including directory trees and file listings.
+
+ Args:
+ repo_path (str | Path): The path to the local repository.
+ output (str | Path, optional): The path to save the generated markdown file. Defaults to None.
+ gitignore (str | Path, optional): The path to the .gitignore file. Defaults to None.
+
+ Returns:
+ str: The markdown representation of the repository.
+ """
+ repo_path = Path(repo_path)
+ gitignore = Path(gitignore or Path(__file__).parent / "../../.gitignore").resolve()
+
+ markdown = await _write_dir_tree(repo_path=repo_path, gitignore=gitignore)
+
+ gitignore_rules = parse_gitignore(full_path=str(gitignore))
+ markdown += await _write_files(repo_path=repo_path, gitignore_rules=gitignore_rules)
+
+ if output:
+ await awrite(filename=str(output), data=markdown, encoding="utf-8")
+ return markdown
+
+
+async def _write_dir_tree(repo_path: Path, gitignore: Path) -> str:
+ try:
+ content = tree(repo_path, gitignore, run_command=True)
+ except Exception as e:
+ logger.info(f"{e}, using safe mode.")
+ content = tree(repo_path, gitignore, run_command=False)
+
+ doc = f"## Directory Tree\n```text\n{content}\n```\n---\n\n"
+ return doc
+
+
+async def _write_files(repo_path, gitignore_rules) -> str:
+ filenames = list_files(repo_path)
+ markdown = ""
+ for filename in filenames:
+ if gitignore_rules(str(filename)):
+ continue
+ markdown += await _write_file(filename=filename, repo_path=repo_path)
+ return markdown
+
+
+async def _write_file(filename: Path, repo_path: Path) -> str:
+ relative_path = filename.relative_to(repo_path)
+ markdown = f"## {relative_path}\n"
+
+ mime_type, _ = mimetypes.guess_type(filename.name)
+ if "text/" not in mime_type:
+ logger.info(f"Ignore content: {filename}")
+ markdown += "\n---\n\n"
+ return markdown
+ content = await aread(filename, encoding="utf-8")
+ content = content.replace("```", "\\`\\`\\`").replace("---", "\\-\\-\\-")
+ code_block_type = get_markdown_codeblock_type(filename.name)
+ markdown += f"```{code_block_type}\n{content}\n```\n---\n\n"
+ return markdown
diff --git a/metagpt/utils/text.py b/metagpt/utils/text.py
index dd9678438..fb8b94232 100644
--- a/metagpt/utils/text.py
+++ b/metagpt/utils/text.py
@@ -25,7 +25,7 @@ def reduce_message_length(
"""
max_token = TOKEN_MAX.get(model_name, 2048) - count_string_tokens(system_text, model_name) - reserved
for msg in msgs:
- if count_string_tokens(msg, model_name) < max_token:
+ if count_string_tokens(msg, model_name) < max_token or model_name not in TOKEN_MAX:
return msg
raise RuntimeError("fail to reduce message length")
@@ -93,7 +93,7 @@ def split_paragraph(paragraph: str, sep: str = ".,", count: int = 2) -> list[str
continue
ret = ["".join(j) for j in _split_by_count(sentences, count)]
return ret
- return _split_by_count(paragraph, count)
+ return list(_split_by_count(paragraph, count))
def decode_unicode_escape(text: str) -> str:
diff --git a/metagpt/utils/token_counter.py b/metagpt/utils/token_counter.py
index a0fb3b70d..0ba2daa89 100644
--- a/metagpt/utils/token_counter.py
+++ b/metagpt/utils/token_counter.py
@@ -21,6 +21,7 @@ TOKEN_COSTS = {
"gpt-35-turbo": {"prompt": 0.0015, "completion": 0.002},
"gpt-35-turbo-16k": {"prompt": 0.003, "completion": 0.004},
"gpt-3.5-turbo-1106": {"prompt": 0.001, "completion": 0.002},
+ "gpt-3.5-turbo-0125": {"prompt": 0.001, "completion": 0.002},
"gpt-4-0314": {"prompt": 0.03, "completion": 0.06},
"gpt-4": {"prompt": 0.03, "completion": 0.06},
"gpt-4-32k": {"prompt": 0.06, "completion": 0.12},
@@ -32,38 +33,157 @@ TOKEN_COSTS = {
"gpt-4-vision-preview": {"prompt": 0.01, "completion": 0.03}, # TODO add extra image price calculator
"gpt-4-1106-vision-preview": {"prompt": 0.01, "completion": 0.03},
"text-embedding-ada-002": {"prompt": 0.0004, "completion": 0.0},
- "glm-3-turbo": {"prompt": 0.0, "completion": 0.0007}, # 128k version, prompt + completion tokens=0.005¥/k-tokens
- "glm-4": {"prompt": 0.0, "completion": 0.014}, # 128k version, prompt + completion tokens=0.1¥/k-tokens
+ "glm-3-turbo": {"prompt": 0.0007, "completion": 0.0007}, # 128k version, prompt + completion tokens=0.005¥/k-tokens
+ "glm-4": {"prompt": 0.014, "completion": 0.014}, # 128k version, prompt + completion tokens=0.1¥/k-tokens
"gemini-pro": {"prompt": 0.00025, "completion": 0.0005},
+ "moonshot-v1-8k": {"prompt": 0.012, "completion": 0.012}, # prompt + completion tokens=0.012¥/k-tokens
+ "moonshot-v1-32k": {"prompt": 0.024, "completion": 0.024},
+ "moonshot-v1-128k": {"prompt": 0.06, "completion": 0.06},
+ "open-mistral-7b": {"prompt": 0.00025, "completion": 0.00025},
+ "open-mixtral-8x7b": {"prompt": 0.0007, "completion": 0.0007},
+ "mistral-small-latest": {"prompt": 0.002, "completion": 0.006},
+ "mistral-medium-latest": {"prompt": 0.0027, "completion": 0.0081},
+ "mistral-large-latest": {"prompt": 0.008, "completion": 0.024},
+ "claude-instant-1.2": {"prompt": 0.0008, "completion": 0.0024},
+ "claude-2.0": {"prompt": 0.008, "completion": 0.024},
+ "claude-2.1": {"prompt": 0.008, "completion": 0.024},
+ "claude-3-sonnet-20240229": {"prompt": 0.003, "completion": 0.015},
+ "claude-3-opus-20240229": {"prompt": 0.015, "completion": 0.075},
+ "yi-34b-chat-0205": {"prompt": 0.0003, "completion": 0.0003},
+ "yi-34b-chat-200k": {"prompt": 0.0017, "completion": 0.0017},
}
+"""
+QianFan Token Price https://cloud.baidu.com/doc/WENXINWORKSHOP/s/hlrk4akp7#tokens%E5%90%8E%E4%BB%98%E8%B4%B9
+Due to QianFan has multi price strategies, we unify `Tokens post-payment` as a statistical method.
+"""
+QIANFAN_MODEL_TOKEN_COSTS = {
+ "ERNIE-Bot-4": {"prompt": 0.017, "completion": 0.017},
+ "ERNIE-Bot-8k": {"prompt": 0.0034, "completion": 0.0067},
+ "ERNIE-Bot": {"prompt": 0.0017, "completion": 0.0017},
+ "ERNIE-Bot-turbo": {"prompt": 0.0011, "completion": 0.0011},
+ "EB-turbo-AppBuilder": {"prompt": 0.0011, "completion": 0.0011},
+ "ERNIE-Speed": {"prompt": 0.00056, "completion": 0.0011},
+ "BLOOMZ-7B": {"prompt": 0.00056, "completion": 0.00056},
+ "Llama-2-7B-Chat": {"prompt": 0.00056, "completion": 0.00056},
+ "Llama-2-13B-Chat": {"prompt": 0.00084, "completion": 0.00084},
+ "Llama-2-70B-Chat": {"prompt": 0.0049, "completion": 0.0049},
+ "ChatGLM2-6B-32K": {"prompt": 0.00056, "completion": 0.00056},
+ "AquilaChat-7B": {"prompt": 0.00056, "completion": 0.00056},
+ "Mixtral-8x7B-Instruct": {"prompt": 0.0049, "completion": 0.0049},
+ "SQLCoder-7B": {"prompt": 0.00056, "completion": 0.00056},
+ "CodeLlama-7B-Instruct": {"prompt": 0.00056, "completion": 0.00056},
+ "XuanYuan-70B-Chat-4bit": {"prompt": 0.0049, "completion": 0.0049},
+ "Qianfan-BLOOMZ-7B-compressed": {"prompt": 0.00056, "completion": 0.00056},
+ "Qianfan-Chinese-Llama-2-7B": {"prompt": 0.00056, "completion": 0.00056},
+ "Qianfan-Chinese-Llama-2-13B": {"prompt": 0.00084, "completion": 0.00084},
+ "ChatLaw": {"prompt": 0.0011, "completion": 0.0011},
+ "Yi-34B-Chat": {"prompt": 0.0, "completion": 0.0},
+}
+
+QIANFAN_ENDPOINT_TOKEN_COSTS = {
+ "completions_pro": QIANFAN_MODEL_TOKEN_COSTS["ERNIE-Bot-4"],
+ "ernie_bot_8k": QIANFAN_MODEL_TOKEN_COSTS["ERNIE-Bot-8k"],
+ "completions": QIANFAN_MODEL_TOKEN_COSTS["ERNIE-Bot"],
+ "eb-instant": QIANFAN_MODEL_TOKEN_COSTS["ERNIE-Bot-turbo"],
+ "ai_apaas": QIANFAN_MODEL_TOKEN_COSTS["EB-turbo-AppBuilder"],
+ "ernie_speed": QIANFAN_MODEL_TOKEN_COSTS["ERNIE-Speed"],
+ "bloomz_7b1": QIANFAN_MODEL_TOKEN_COSTS["BLOOMZ-7B"],
+ "llama_2_7b": QIANFAN_MODEL_TOKEN_COSTS["Llama-2-7B-Chat"],
+ "llama_2_13b": QIANFAN_MODEL_TOKEN_COSTS["Llama-2-13B-Chat"],
+ "llama_2_70b": QIANFAN_MODEL_TOKEN_COSTS["Llama-2-70B-Chat"],
+ "chatglm2_6b_32k": QIANFAN_MODEL_TOKEN_COSTS["ChatGLM2-6B-32K"],
+ "aquilachat_7b": QIANFAN_MODEL_TOKEN_COSTS["AquilaChat-7B"],
+ "mixtral_8x7b_instruct": QIANFAN_MODEL_TOKEN_COSTS["Mixtral-8x7B-Instruct"],
+ "sqlcoder_7b": QIANFAN_MODEL_TOKEN_COSTS["SQLCoder-7B"],
+ "codellama_7b_instruct": QIANFAN_MODEL_TOKEN_COSTS["CodeLlama-7B-Instruct"],
+ "xuanyuan_70b_chat": QIANFAN_MODEL_TOKEN_COSTS["XuanYuan-70B-Chat-4bit"],
+ "qianfan_bloomz_7b_compressed": QIANFAN_MODEL_TOKEN_COSTS["Qianfan-BLOOMZ-7B-compressed"],
+ "qianfan_chinese_llama_2_7b": QIANFAN_MODEL_TOKEN_COSTS["Qianfan-Chinese-Llama-2-7B"],
+ "qianfan_chinese_llama_2_13b": QIANFAN_MODEL_TOKEN_COSTS["Qianfan-Chinese-Llama-2-13B"],
+ "chatlaw": QIANFAN_MODEL_TOKEN_COSTS["ChatLaw"],
+ "yi_34b_chat": QIANFAN_MODEL_TOKEN_COSTS["Yi-34B-Chat"],
+}
+
+"""
+DashScope Token price https://help.aliyun.com/zh/dashscope/developer-reference/tongyi-thousand-questions-metering-and-billing
+Different model has different detail page. Attention, some model are free for a limited time.
+"""
+DASHSCOPE_TOKEN_COSTS = {
+ "qwen-turbo": {"prompt": 0.0011, "completion": 0.0011},
+ "qwen-plus": {"prompt": 0.0028, "completion": 0.0028},
+ "qwen-max": {"prompt": 0.0, "completion": 0.0},
+ "qwen-max-1201": {"prompt": 0.0, "completion": 0.0},
+ "qwen-max-longcontext": {"prompt": 0.0, "completion": 0.0},
+ "llama2-7b-chat-v2": {"prompt": 0.0, "completion": 0.0},
+ "llama2-13b-chat-v2": {"prompt": 0.0, "completion": 0.0},
+ "qwen-72b-chat": {"prompt": 0.0, "completion": 0.0},
+ "qwen-14b-chat": {"prompt": 0.0011, "completion": 0.0011},
+ "qwen-7b-chat": {"prompt": 0.00084, "completion": 0.00084},
+ "qwen-1.8b-chat": {"prompt": 0.0, "completion": 0.0},
+ "baichuan2-13b-chat-v1": {"prompt": 0.0011, "completion": 0.0011},
+ "baichuan2-7b-chat-v1": {"prompt": 0.00084, "completion": 0.00084},
+ "baichuan-7b-v1": {"prompt": 0.0, "completion": 0.0},
+ "chatglm-6b-v2": {"prompt": 0.0011, "completion": 0.0011},
+ "chatglm3-6b": {"prompt": 0.0, "completion": 0.0},
+ "ziya-llama-13b-v1": {"prompt": 0.0, "completion": 0.0}, # no price page, judge it as free
+ "dolly-12b-v2": {"prompt": 0.0, "completion": 0.0},
+ "belle-llama-13b-2m-v1": {"prompt": 0.0, "completion": 0.0},
+ "moss-moon-003-sft-v1": {"prompt": 0.0, "completion": 0.0},
+ "chatyuan-large-v2": {"prompt": 0.0, "completion": 0.0},
+ "billa-7b-sft-v1": {"prompt": 0.0, "completion": 0.0},
+}
+
+
+FIREWORKS_GRADE_TOKEN_COSTS = {
+ "-1": {"prompt": 0.0, "completion": 0.0}, # abnormal condition
+ "16": {"prompt": 0.2, "completion": 0.8}, # 16 means model size <= 16B; 0.2 means $0.2/1M tokens
+ "80": {"prompt": 0.7, "completion": 2.8}, # 80 means 16B < model size <= 80B
+ "mixtral-8x7b": {"prompt": 0.4, "completion": 1.6},
+}
+
+# https://platform.openai.com/docs/models/gpt-4-and-gpt-4-turbo
TOKEN_MAX = {
- "gpt-3.5-turbo": 4096,
- "gpt-3.5-turbo-0301": 4096,
- "gpt-3.5-turbo-0613": 4096,
- "gpt-3.5-turbo-16k": 16384,
- "gpt-3.5-turbo-16k-0613": 16384,
- "gpt-35-turbo": 4096,
- "gpt-35-turbo-16k": 16384,
- "gpt-3.5-turbo-1106": 16384,
- "gpt-4-0314": 8192,
- "gpt-4": 8192,
- "gpt-4-32k": 32768,
- "gpt-4-32k-0314": 32768,
- "gpt-4-0613": 8192,
- "gpt-4-turbo-preview": 128000,
"gpt-4-0125-preview": 128000,
+ "gpt-4-turbo-preview": 128000,
"gpt-4-1106-preview": 128000,
"gpt-4-vision-preview": 128000,
"gpt-4-1106-vision-preview": 128000,
+ "gpt-4": 8192,
+ "gpt-4-0613": 8192,
+ "gpt-4-32k": 32768,
+ "gpt-4-32k-0613": 32768,
+ "gpt-3.5-turbo-0125": 16385,
+ "gpt-3.5-turbo": 16385,
+ "gpt-3.5-turbo-1106": 16385,
+ "gpt-3.5-turbo-instruct": 4096,
+ "gpt-3.5-turbo-16k": 16385,
+ "gpt-3.5-turbo-0613": 4096,
+ "gpt-3.5-turbo-16k-0613": 16385,
"text-embedding-ada-002": 8192,
- "chatglm_turbo": 32768,
+ "glm-3-turbo": 128000,
+ "glm-4": 128000,
"gemini-pro": 32768,
+ "moonshot-v1-8k": 8192,
+ "moonshot-v1-32k": 32768,
+ "moonshot-v1-128k": 128000,
+ "open-mistral-7b": 8192,
+ "open-mixtral-8x7b": 32768,
+ "mistral-small-latest": 32768,
+ "mistral-medium-latest": 32768,
+ "mistral-large-latest": 32768,
+ "claude-instant-1.2": 100000,
+ "claude-2.0": 100000,
+ "claude-2.1": 200000,
+ "claude-3-sonnet-20240229": 200000,
+ "claude-3-opus-20240229": 200000,
+ "yi-34b-chat-0205": 4000,
+ "yi-34b-chat-200k": 200000,
}
-def count_message_tokens(messages, model="gpt-3.5-turbo-0613"):
+def count_message_tokens(messages, model="gpt-3.5-turbo-0125"):
"""Return the number of tokens used by a list of messages."""
try:
encoding = tiktoken.encoding_for_model(model)
@@ -77,6 +197,7 @@ def count_message_tokens(messages, model="gpt-3.5-turbo-0613"):
"gpt-35-turbo-16k",
"gpt-3.5-turbo-16k",
"gpt-3.5-turbo-1106",
+ "gpt-3.5-turbo-0125",
"gpt-4-0314",
"gpt-4-32k-0314",
"gpt-4-0613",
@@ -93,8 +214,8 @@ def count_message_tokens(messages, model="gpt-3.5-turbo-0613"):
tokens_per_message = 4 # every message follows <|start|>{role/name}\n{content}<|end|>\n
tokens_per_name = -1 # if there's a name, the role is omitted
elif "gpt-3.5-turbo" == model:
- print("Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0613.")
- return count_message_tokens(messages, model="gpt-3.5-turbo-0613")
+ print("Warning: gpt-3.5-turbo may update over time. Returning num tokens assuming gpt-3.5-turbo-0125.")
+ return count_message_tokens(messages, model="gpt-3.5-turbo-0125")
elif "gpt-4" == model:
print("Warning: gpt-4 may update over time. Returning num tokens assuming gpt-4-0613.")
return count_message_tokens(messages, model="gpt-4-0613")
@@ -108,7 +229,7 @@ def count_message_tokens(messages, model="gpt-3.5-turbo-0613"):
else:
raise NotImplementedError(
f"num_tokens_from_messages() is not implemented for model {model}. "
- f"See https://github.com/openai/openai-python/blob/main/chatml.md "
+ f"See https://cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken "
f"for information on how messages are converted to tokens."
)
num_tokens = 0
diff --git a/metagpt/utils/tree.py b/metagpt/utils/tree.py
new file mode 100644
index 000000000..bd7922290
--- /dev/null
+++ b/metagpt/utils/tree.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@Time : 2024/3/11
+@Author : mashenquan
+@File : tree.py
+@Desc : Implement the same functionality as the `tree` command.
+ Example:
+ >>> print_tree(".")
+ utils
+ +-- serialize.py
+ +-- project_repo.py
+ +-- tree.py
+ +-- mmdc_playwright.py
+ +-- cost_manager.py
+ +-- __pycache__
+ | +-- __init__.cpython-39.pyc
+ | +-- redis.cpython-39.pyc
+ | +-- singleton.cpython-39.pyc
+ | +-- embedding.cpython-39.pyc
+ | +-- make_sk_kernel.cpython-39.pyc
+ | +-- file_repository.cpython-39.pyc
+ +-- file.py
+ +-- save_code.py
+ +-- common.py
+ +-- redis.py
+"""
+from __future__ import annotations
+
+import subprocess
+from pathlib import Path
+from typing import Callable, Dict, List
+
+from gitignore_parser import parse_gitignore
+
+
+def tree(root: str | Path, gitignore: str | Path = None, run_command: bool = False) -> str:
+ """
+ Recursively traverses the directory structure and prints it out in a tree-like format.
+
+ Args:
+ root (str or Path): The root directory from which to start traversing.
+ gitignore (str or Path): The filename of gitignore file.
+ run_command (bool): Whether to execute `tree` command. Execute the `tree` command and return the result if True,
+ otherwise execute python code instead.
+
+ Returns:
+ str: A string representation of the directory tree.
+
+ Example:
+ >>> tree(".")
+ utils
+ +-- serialize.py
+ +-- project_repo.py
+ +-- tree.py
+ +-- mmdc_playwright.py
+ +-- __pycache__
+ | +-- __init__.cpython-39.pyc
+ | +-- redis.cpython-39.pyc
+ | +-- singleton.cpython-39.pyc
+ +-- parse_docstring.py
+
+ >>> tree(".", gitignore="../../.gitignore")
+ utils
+ +-- serialize.py
+ +-- project_repo.py
+ +-- tree.py
+ +-- mmdc_playwright.py
+ +-- parse_docstring.py
+
+ >>> tree(".", gitignore="../../.gitignore", run_command=True)
+ utils
+ ├── serialize.py
+ ├── project_repo.py
+ ├── tree.py
+ ├── mmdc_playwright.py
+ └── parse_docstring.py
+
+
+ """
+ root = Path(root).resolve()
+ if run_command:
+ return _execute_tree(root, gitignore)
+
+ git_ignore_rules = parse_gitignore(gitignore) if gitignore else None
+ dir_ = {root.name: _list_children(root=root, git_ignore_rules=git_ignore_rules)}
+ v = _print_tree(dir_)
+ return "\n".join(v)
+
+
+def _list_children(root: Path, git_ignore_rules: Callable) -> Dict[str, Dict]:
+ dir_ = {}
+ for i in root.iterdir():
+ if git_ignore_rules and git_ignore_rules(str(i)):
+ continue
+ try:
+ if i.is_file():
+ dir_[i.name] = {}
+ else:
+ dir_[i.name] = _list_children(root=i, git_ignore_rules=git_ignore_rules)
+ except (FileNotFoundError, PermissionError, OSError):
+ dir_[i.name] = {}
+ return dir_
+
+
+def _print_tree(dir_: Dict[str:Dict]) -> List[str]:
+ ret = []
+ for name, children in dir_.items():
+ ret.append(name)
+ if not children:
+ continue
+ lines = _print_tree(children)
+ for j, v in enumerate(lines):
+ if v[0] not in ["+", " ", "|"]:
+ ret = _add_line(ret)
+ row = f"+-- {v}"
+ else:
+ row = f" {v}"
+ ret.append(row)
+ return ret
+
+
+def _add_line(rows: List[str]) -> List[str]:
+ for i in range(len(rows) - 1, -1, -1):
+ v = rows[i]
+ if v[0] != " ":
+ return rows
+ rows[i] = "|" + v[1:]
+ return rows
+
+
+def _execute_tree(root: Path, gitignore: str | Path) -> str:
+ args = ["--gitfile", str(gitignore)] if gitignore else []
+ try:
+ result = subprocess.run(["tree"] + args + [str(root)], capture_output=True, text=True, check=True)
+ if result.returncode != 0:
+ raise ValueError(f"tree exits with code {result.returncode}")
+ return result.stdout
+ except subprocess.CalledProcessError as e:
+ raise e
diff --git a/metagpt/utils/visual_graph_repo.py b/metagpt/utils/visual_graph_repo.py
new file mode 100644
index 000000000..86b50df21
--- /dev/null
+++ b/metagpt/utils/visual_graph_repo.py
@@ -0,0 +1,162 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@Time : 2023/12/19
+@Author : mashenquan
+@File : visualize_graph.py
+@Desc : Visualization tool to visualize the class diagrams or sequence diagrams of the graph repository.
+"""
+from __future__ import annotations
+
+import re
+from abc import ABC
+from pathlib import Path
+from typing import List, Optional
+
+from pydantic import BaseModel, Field
+
+from metagpt.const import AGGREGATION, COMPOSITION, GENERALIZATION
+from metagpt.schema import UMLClassView
+from metagpt.utils.common import split_namespace
+from metagpt.utils.di_graph_repository import DiGraphRepository
+from metagpt.utils.graph_repository import GraphKeyword, GraphRepository
+
+
+class _VisualClassView(BaseModel):
+ """Protected class used by VisualGraphRepo internally.
+
+ Attributes:
+ package (str): The package associated with the class.
+ uml (Optional[UMLClassView]): Optional UMLClassView associated with the class.
+ generalizations (List[str]): List of generalizations for the class.
+ compositions (List[str]): List of compositions for the class.
+ aggregations (List[str]): List of aggregations for the class.
+ """
+
+ package: str
+ uml: Optional[UMLClassView] = None
+ generalizations: List[str] = Field(default_factory=list)
+ compositions: List[str] = Field(default_factory=list)
+ aggregations: List[str] = Field(default_factory=list)
+
+ def get_mermaid(self, align: int = 1) -> str:
+ """Creates a Markdown Mermaid class diagram text.
+
+ Args:
+ align (int): Indent count used for alignment.
+
+ Returns:
+ str: The Markdown text representing the Mermaid class diagram.
+ """
+ if not self.uml:
+ return ""
+ prefix = "\t" * align
+
+ mermaid_txt = self.uml.get_mermaid(align=align)
+ for i in self.generalizations:
+ mermaid_txt += f"{prefix}{i} <|-- {self.name}\n"
+ for i in self.compositions:
+ mermaid_txt += f"{prefix}{i} *-- {self.name}\n"
+ for i in self.aggregations:
+ mermaid_txt += f"{prefix}{i} o-- {self.name}\n"
+ return mermaid_txt
+
+ @property
+ def name(self) -> str:
+ """Returns the class name without the namespace prefix."""
+ return split_namespace(self.package)[-1]
+
+
+class VisualGraphRepo(ABC):
+ """Abstract base class for VisualGraphRepo."""
+
+ graph_db: GraphRepository
+
+ def __init__(self, graph_db):
+ self.graph_db = graph_db
+
+
+class VisualDiGraphRepo(VisualGraphRepo):
+ """Implementation of VisualGraphRepo for DiGraph graph repository.
+
+ This class extends VisualGraphRepo to provide specific functionality for a graph repository using DiGraph.
+ """
+
+ @classmethod
+ async def load_from(cls, filename: str | Path):
+ """Load a VisualDiGraphRepo instance from a file."""
+ graph_db = await DiGraphRepository.load_from(str(filename))
+ return cls(graph_db=graph_db)
+
+ async def get_mermaid_class_view(self) -> str:
+ """
+ Returns a Markdown Mermaid class diagram code block object.
+ """
+ rows = await self.graph_db.select(predicate=GraphKeyword.IS, object_=GraphKeyword.CLASS)
+ mermaid_txt = "classDiagram\n"
+ for r in rows:
+ v = await self._get_class_view(ns_class_name=r.subject)
+ mermaid_txt += v.get_mermaid()
+ return mermaid_txt
+
+ async def _get_class_view(self, ns_class_name: str) -> _VisualClassView:
+ """Returns the Markdown Mermaid class diagram code block object for the specified class."""
+ rows = await self.graph_db.select(subject=ns_class_name)
+ class_view = _VisualClassView(package=ns_class_name)
+ for r in rows:
+ if r.predicate == GraphKeyword.HAS_CLASS_VIEW:
+ class_view.uml = UMLClassView.model_validate_json(r.object_)
+ elif r.predicate == GraphKeyword.IS + GENERALIZATION + GraphKeyword.OF:
+ name = split_namespace(r.object_)[-1]
+ name = self._refine_name(name)
+ if name:
+ class_view.generalizations.append(name)
+ elif r.predicate == GraphKeyword.IS + COMPOSITION + GraphKeyword.OF:
+ name = split_namespace(r.object_)[-1]
+ name = self._refine_name(name)
+ if name:
+ class_view.compositions.append(name)
+ elif r.predicate == GraphKeyword.IS + AGGREGATION + GraphKeyword.OF:
+ name = split_namespace(r.object_)[-1]
+ name = self._refine_name(name)
+ if name:
+ class_view.aggregations.append(name)
+ return class_view
+
+ async def get_mermaid_sequence_views(self) -> List[(str, str)]:
+ """Returns all Markdown sequence diagrams with their corresponding graph repository keys."""
+ sequence_views = []
+ rows = await self.graph_db.select(predicate=GraphKeyword.HAS_SEQUENCE_VIEW)
+ for r in rows:
+ sequence_views.append((r.subject, r.object_))
+ return sequence_views
+
+ @staticmethod
+ def _refine_name(name: str) -> str:
+ """Removes impurity content from the given name.
+
+ Example:
+ >>> _refine_name("int")
+ ""
+
+ >>> _refine_name('"Class1"')
+ 'Class1'
+
+ >>> _refine_name("pkg.Class1")
+ "Class1"
+ """
+ name = re.sub(r'^[\'"\\\(\)]+|[\'"\\\(\)]+$', "", name)
+ if name in ["int", "float", "bool", "str", "list", "tuple", "set", "dict", "None"]:
+ return ""
+ if "." in name:
+ name = name.split(".")[-1]
+
+ return name
+
+ async def get_mermaid_sequence_view_versions(self) -> List[(str, str)]:
+ """Returns all versioned Markdown sequence diagrams with their corresponding graph repository keys."""
+ sequence_views = []
+ rows = await self.graph_db.select(predicate=GraphKeyword.HAS_SEQUENCE_VIEW_VER)
+ for r in rows:
+ sequence_views.append((r.subject, r.object_))
+ return sequence_views
diff --git a/requirements.txt b/requirements.txt
index 6cb25d52b..a0ce1d1ac 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,6 @@
-aiohttp==3.8.4
+aiohttp==3.8.6
#azure_storage==0.37.0
channels==4.0.0
-# chromadb
# Django==4.1.5
# docx==0.2.4
#faiss==1.5.3
@@ -11,14 +10,13 @@ typer==0.9.0
# godot==0.1.1
# google_api_python_client==2.93.0 # Used by search_engine.py
lancedb==0.4.0
-langchain==0.0.352
loguru==0.6.0
meilisearch==0.21.0
-numpy>=1.24.3
-openai==1.6.0
+numpy==1.24.3
+openai==1.6.1
openpyxl
-beautifulsoup4==4.12.2
-pandas==2.0.3
+beautifulsoup4==4.12.3
+pandas==2.1.1
pydantic==2.5.3
#pygame==2.1.3
#pymilvus==2.2.8
@@ -27,13 +25,13 @@ python_docx==0.8.11
PyYAML==6.0.1
# sentence_transformers==2.2.2
setuptools==65.6.3
-tenacity==8.2.2
-tiktoken==0.5.2
-tqdm==4.65.0
+tenacity==8.2.3
+tiktoken==0.6.0
+tqdm==4.66.2
#unstructured[local-inference]
# selenium>4
# webdriver_manager<3.9
-anthropic==0.8.1
+anthropic==0.18.1
typing-inspect==0.8.0
libcst==1.0.1
qdrant-client==1.7.0
@@ -54,16 +52,21 @@ rich==13.6.0
nbclient==0.9.0
nbformat==5.9.2
ipython==8.17.2
-ipykernel==6.27.0
+ipykernel==6.27.1
scikit_learn==1.3.2
typing-extensions==4.9.0
socksio~=1.0.0
gitignore-parser==0.1.9
# connexion[uvicorn]~=3.0.5 # Used by metagpt/tools/openapi_v3_hello.py
-websockets~=12.0
+websockets~=11.0
networkx~=3.2.1
google-generativeai==0.3.2
-# playwright==1.40.0 # playwright extras require
+playwright>=1.26 # used at metagpt/tools/libs/web_scraping.py
anytree
ipywidgets==8.1.1
Pillow
+imap_tools==1.5.0 # Used by metagpt/tools/libs/email_login.py
+qianfan==0.3.2
+dashscope==1.14.1
+rank-bm25==0.2.2 # for tool recommendation
+jieba==0.42.1 # for tool recommendation
\ No newline at end of file
diff --git a/setup.py b/setup.py
index b16d978cf..f834b4c44 100644
--- a/setup.py
+++ b/setup.py
@@ -24,11 +24,20 @@ requirements = (here / "requirements.txt").read_text(encoding="utf-8").splitline
extras_require = {
- "playwright": ["playwright>=1.26", "beautifulsoup4"],
"selenium": ["selenium>4", "webdriver_manager", "beautifulsoup4"],
"search-google": ["google-api-python-client==2.94.0"],
"search-ddg": ["duckduckgo-search~=4.1.1"],
"ocr": ["paddlepaddle==2.4.2", "paddleocr>=2.0.1", "tabulate==0.9.0"],
+ "rag": [
+ "llama-index-core==0.10.15",
+ "llama-index-embeddings-azure-openai==0.1.6",
+ "llama-index-embeddings-openai==0.1.5",
+ "llama-index-llms-azure-openai==0.1.4",
+ "llama-index-readers-file==0.1.4",
+ "llama-index-retrievers-bm25==0.1.3",
+ "llama-index-vector-stores-faiss==0.1.1",
+ "chromadb==0.4.23",
+ ],
}
extras_require["test"] = [
@@ -43,7 +52,6 @@ extras_require["test"] = [
"connexion[uvicorn]~=3.0.5",
"azure-cognitiveservices-speech~=1.31.0",
"aioboto3~=11.3.0",
- "chromadb==0.4.14",
"gradio==3.0.0",
"grpcio-status==1.48.2",
"pylint==3.0.3",
@@ -58,7 +66,7 @@ extras_require["dev"] = (["pylint~=3.0.3", "black~=23.3.0", "isort~=5.12.0", "pr
setup(
name="metagpt",
- version="0.7.0",
+ version="0.7.6",
description="The Multi-Agent Framework",
long_description=long_description,
long_description_content_type="text/markdown",
diff --git a/tests/conftest.py b/tests/conftest.py
index c69fca15e..8603c752a 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -12,8 +12,10 @@ import logging
import os
import re
import uuid
+from pathlib import Path
from typing import Callable
+import aiohttp.web
import pytest
from metagpt.const import DEFAULT_WORKSPACE_ROOT, TEST_DATA_PATH
@@ -111,12 +113,13 @@ def proxy():
while not reader.at_eof():
writer.write(await reader.read(2048))
writer.close()
+ await writer.wait_closed()
async def handle_client(reader, writer):
data = await reader.readuntil(b"\r\n\r\n")
- print(f"Proxy: {data}") # checking with capfd fixture
infos = pattern.match(data)
host, port = infos.group("host"), infos.group("port")
+ print(f"Proxy: {host}") # checking with capfd fixture
port = int(port) if port else 80
remote_reader, remote_writer = await asyncio.open_connection(host, port)
if data.startswith(b"CONNECT"):
@@ -171,9 +174,8 @@ def new_filename(mocker):
yield mocker
-@pytest.fixture(scope="session")
-def search_rsp_cache():
- rsp_cache_file_path = TEST_DATA_PATH / "search_rsp_cache.json" # read repo-provided
+def _rsp_cache(name):
+ rsp_cache_file_path = TEST_DATA_PATH / f"{name}.json" # read repo-provided
if os.path.exists(rsp_cache_file_path):
with open(rsp_cache_file_path, "r") as f1:
rsp_cache_json = json.load(f1)
@@ -184,6 +186,16 @@ def search_rsp_cache():
json.dump(rsp_cache_json, f2, indent=4, ensure_ascii=False)
+@pytest.fixture(scope="session")
+def search_rsp_cache():
+ yield from _rsp_cache("search_rsp_cache")
+
+
+@pytest.fixture(scope="session")
+def mermaid_rsp_cache():
+ yield from _rsp_cache("mermaid_rsp_cache")
+
+
@pytest.fixture
def aiohttp_mocker(mocker):
MockResponse = type("MockResponse", (MockAioResponse,), {})
@@ -231,3 +243,40 @@ def search_engine_mocker(aiohttp_mocker, curl_cffi_mocker, httplib2_mocker, sear
aiohttp_mocker.rsp_cache = httplib2_mocker.rsp_cache = curl_cffi_mocker.rsp_cache = search_rsp_cache
aiohttp_mocker.check_funcs = httplib2_mocker.check_funcs = curl_cffi_mocker.check_funcs = check_funcs
yield check_funcs
+
+
+@pytest.fixture
+def http_server():
+ async def handler(request):
+ return aiohttp.web.Response(
+ text="""
+ MetaGPT MetaGPT """,
+ content_type="text/html",
+ )
+
+ async def start():
+ server = aiohttp.web.Server(handler)
+ runner = aiohttp.web.ServerRunner(server)
+ await runner.setup()
+ site = aiohttp.web.TCPSite(runner, "127.0.0.1", 0)
+ await site.start()
+ _, port, *_ = site._server.sockets[0].getsockname()
+ return site, f"http://127.0.0.1:{port}"
+
+ return start
+
+
+@pytest.fixture
+def mermaid_mocker(aiohttp_mocker, mermaid_rsp_cache):
+ check_funcs: dict[tuple[str, str], Callable[[dict], str]] = {}
+ aiohttp_mocker.rsp_cache = mermaid_rsp_cache
+ aiohttp_mocker.check_funcs = check_funcs
+ yield check_funcs
+
+
+@pytest.fixture
+def git_dir():
+ """Fixture to get the unittest directory."""
+ git_dir = Path(__file__).parent / f"unittest/{uuid.uuid4().hex}"
+ git_dir.mkdir(parents=True, exist_ok=True)
+ return git_dir
diff --git a/tests/data/graph_db/networkx.class_view.json b/tests/data/graph_db/networkx.class_view.json
new file mode 100644
index 000000000..ad464e79a
--- /dev/null
+++ b/tests/data/graph_db/networkx.class_view.json
@@ -0,0 +1 @@
+{"directed": true, "multigraph": false, "graph": {}, "nodes": [{"id": "metagpt/schema.py"}, {"id": "source_code"}, {"id": "python"}, {"id": "metagpt/schema.py:AIMessage"}, {"id": "class"}, {"id": "{\"name\":\"AIMessage\",\"package\":\"metagpt/schema.py:AIMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor"}, {"id": "{\"name\":\"APIRequestor\",\"package\":\"metagpt/provider/general_api_base.py:APIRequestor\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version : NoneType\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}},\"methods\":{\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]},\"arequest_raw\":{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]},\"request\":{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]},\"request_headers\":{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]},\"request_raw\":{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}},\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"],\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\",\"aiohttp.ClientResponse\",\"requests.Response\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_key"}, {"id": "class_property"}, {"id": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_type"}, {"id": "{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_version"}, {"id": "{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:base_url"}, {"id": "{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:organization"}, {"id": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest"}, {"id": "class_method"}, {"id": "{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw"}, {"id": "{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request"}, {"id": "{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request_headers"}, {"id": "{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request_raw"}, {"id": "{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}"}, {"id": "?:AZURE_AD"}, {"id": "?:OPEN_AI"}, {"id": "?:OpenAIResponse"}, {"id": "?:AsyncGenerator"}, {"id": "?:aiohttp.ClientResponse"}, {"id": "?:requests.Response"}, {"id": "metagpt/actions/action.py"}, {"id": "metagpt/actions/action.py:Action"}, {"id": "{\"name\":\"Action\",\"package\":\"metagpt/actions/action.py:Action\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"node\":{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},\"prefix\":{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"set_name_if_empty\":{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]},\"set_prefix\":{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}},\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:desc"}, {"id": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]}"}, {"id": "metagpt/actions/action.py:Action:model_config"}, {"id": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:name"}, {"id": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:node"}, {"id": "{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:prefix"}, {"id": "{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:project_name"}, {"id": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:project_path"}, {"id": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:prompt_schema"}, {"id": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:repo"}, {"id": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:set_name_if_empty"}, {"id": "{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:set_prefix"}, {"id": "{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}"}, {"id": "?:CodePlanAndChangeContext"}, {"id": "?:CodeSummarizeContext"}, {"id": "?:CodingContext"}, {"id": "?:RunCodeContext"}, {"id": "?:TestingContext"}, {"id": "metagpt/actions/action_graph.py"}, {"id": "metagpt/actions/action_graph.py:ActionGraph"}, {"id": "{\"name\":\"ActionGraph\",\"package\":\"metagpt/actions/action_graph.py:ActionGraph\",\"attributes\":{\"edges\":{\"name\":\"edges\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"edges : dict\",\"compositions\":[]},\"execution_order\":{\"name\":\"execution_order\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"execution_order : list\",\"compositions\":[]},\"nodes\":{\"name\":\"nodes\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"nodes : dict\",\"compositions\":[]}},\"methods\":{\"add_edge\":{\"name\":\"add_edge\",\"args\":[{\"name\":\"from_node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"from_node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]},{\"name\":\"to_node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"to_node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_edge(from_node: 'ActionNode', to_node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_node\":{\"name\":\"add_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_node(node)\",\"aggregations\":[]},\"topological_sort\":{\"name\":\"topological_sort\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"topological_sort()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_graph.py:ActionGraph:edges"}, {"id": "{\"name\":\"edges\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"edges : dict\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_graph.py:ActionGraph:execution_order"}, {"id": "{\"name\":\"execution_order\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"execution_order : list\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_graph.py:ActionGraph:nodes"}, {"id": "{\"name\":\"nodes\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"nodes : dict\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_graph.py:ActionGraph:add_edge"}, {"id": "{\"name\":\"add_edge\",\"args\":[{\"name\":\"from_node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"from_node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]},{\"name\":\"to_node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"to_node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_edge(from_node: 'ActionNode', to_node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_graph.py:ActionGraph:add_node"}, {"id": "{\"name\":\"add_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_node(node)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_graph.py:ActionGraph:topological_sort"}, {"id": "{\"name\":\"topological_sort\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"topological_sort()\",\"aggregations\":[]}"}, {"id": "?:ActionNode"}, {"id": "metagpt/actions/action_node.py"}, {"id": "metagpt/actions/action_node.py:ActionNode"}, {"id": "{\"name\":\"ActionNode\",\"package\":\"metagpt/actions/action_node.py:ActionNode\",\"attributes\":{\"children\":{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"example\":{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]},\"expected_type\":{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]},\"func\":{\"name\":\"func\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"func : Callable\",\"compositions\":[\"Callable\"]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]},\"instruction\":{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]},\"key\":{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"nexts\":{\"name\":\"nexts\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nexts : List['ActionNode']\",\"compositions\":[\"ActionNode\"]},\"params\":{\"name\":\"params\",\"type_\":\"Dict[str,Type]\",\"default_\":\"\",\"description\":\"params : Dict[str, Type]\",\"compositions\":[\"Type\"]},\"prevs\":{\"name\":\"prevs\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"prevs : List['ActionNode']\",\"compositions\":[\"ActionNode\"]},\"schema\":{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}},\"methods\":{\"add_child\":{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_children\":{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"add_next\":{\"name\":\"add_next\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_next(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_prev\":{\"name\":\"add_prev\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_prev(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"auto_review\":{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]},\"auto_revise\":{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"compile\":{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]},\"compile_example\":{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_instruction\":{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_to\":{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]},\"create_class\":{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]},\"create_model_class\":{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]},\"fill\":{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, images: Optional[Union[str, list[str]]], timeout, exclude)\",\"aggregations\":[]},\"from_children\":{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"from_pydantic\":{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]},\"get_child\":{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]},\"get_mapping\":{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"human_review\":{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]},\"human_revise\":{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]},\"keys\":{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]},\"review\":{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"revise\":{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]},\"set_recursive\":{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]},\"simple_fill\":{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, images: Optional[Union[str, list[str]]], timeout, exclude)\",\"aggregations\":[]},\"simple_review\":{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"simple_revise\":{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"tagging\":{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]},\"update_instruct_content\":{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}},\"compositions\":[\"ActionNode\",\"Type\",\"Callable\",\"BaseModel\"],\"aggregations\":[\"ReviseMode\",\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:children"}, {"id": "{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:content"}, {"id": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:context"}, {"id": "{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:example"}, {"id": "{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:expected_type"}, {"id": "{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:func"}, {"id": "{\"name\":\"func\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"func : Callable\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:instruct_content"}, {"id": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:instruction"}, {"id": "{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:key"}, {"id": "{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:llm"}, {"id": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:nexts"}, {"id": "{\"name\":\"nexts\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nexts : List['ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:params"}, {"id": "{\"name\":\"params\",\"type_\":\"Dict[str,Type]\",\"default_\":\"\",\"description\":\"params : Dict[str, Type]\",\"compositions\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:prevs"}, {"id": "{\"name\":\"prevs\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"prevs : List['ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:schema"}, {"id": "{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_child"}, {"id": "{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_children"}, {"id": "{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_next"}, {"id": "{\"name\":\"add_next\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_next(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_prev"}, {"id": "{\"name\":\"add_prev\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_prev(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:auto_review"}, {"id": "{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:auto_revise"}, {"id": "{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile"}, {"id": "{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_example"}, {"id": "{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_instruction"}, {"id": "{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_to"}, {"id": "{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_class"}, {"id": "{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_model_class"}, {"id": "{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:fill"}, {"id": "{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, images: Optional[Union[str, list[str]]], timeout, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:from_children"}, {"id": "{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:from_pydantic"}, {"id": "{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_child"}, {"id": "{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_mapping"}, {"id": "{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:human_review"}, {"id": "{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:human_revise"}, {"id": "{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:keys"}, {"id": "{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:review"}, {"id": "{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:revise"}, {"id": "{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_context"}, {"id": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_llm"}, {"id": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_recursive"}, {"id": "{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_fill"}, {"id": "{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, images: Optional[Union[str, list[str]]], timeout, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_review"}, {"id": "{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_revise"}, {"id": "{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:tagging"}, {"id": "{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:to_dict"}, {"id": "{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:update_instruct_content"}, {"id": "{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}"}, {"id": "?:Type"}, {"id": "?:Callable"}, {"id": "?:BaseModel"}, {"id": "?:ReviseMode"}, {"id": "?:ReviewMode"}, {"id": "metagpt/actions/action_output.py"}, {"id": "metagpt/actions/action_output.py:ActionOutput"}, {"id": "{\"name\":\"ActionOutput\",\"package\":\"metagpt/actions/action_output.py:ActionOutput\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}},\"methods\":{},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_output.py:ActionOutput:content"}, {"id": "metagpt/actions/action_output.py:ActionOutput:instruct_content"}, {"id": "metagpt/actions"}, {"id": ""}, {"id": "metagpt/actions:ActionType"}, {"id": "{\"name\":\"ActionType\",\"package\":\"metagpt/actions:ActionType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions:ActionType:name"}, {"id": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_env.py"}, {"id": "metagpt/environment/android_env/android_env.py:AndroidEnv"}, {"id": "{\"name\":\"AndroidEnv\",\"package\":\"metagpt/environment/android_env/android_env.py:AndroidEnv\",\"attributes\":{\"cols\":{\"name\":\"cols\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"cols : int\",\"compositions\":[]},\"rows\":{\"name\":\"rows\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"rows : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/environment/android_env/android_env.py:AndroidEnv:cols"}, {"id": "{\"name\":\"cols\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"cols : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_env.py:AndroidEnv:rows"}, {"id": "{\"name\":\"rows\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"rows : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv"}, {"id": "{\"name\":\"AndroidExtEnv\",\"package\":\"metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv\",\"attributes\":{\"adb_prefix\":{\"name\":\"adb_prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix\",\"compositions\":[]},\"adb_prefix_shell\":{\"name\":\"adb_prefix_shell\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix_shell\",\"compositions\":[]},\"adb_prefix_si\":{\"name\":\"adb_prefix_si\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix_si\",\"compositions\":[]},\"device_id\":{\"name\":\"device_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"device_id : Optional[str]\",\"compositions\":[]},\"device_shape\":{\"name\":\"device_shape\",\"type_\":\"\",\"default_\":\"\",\"description\":\"device_shape\",\"compositions\":[]},\"height\":{\"name\":\"height\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"height : int\",\"compositions\":[]},\"screenshot_dir\":{\"name\":\"screenshot_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"screenshot_dir : Optional[Path]\",\"compositions\":[\"Path\"]},\"width\":{\"name\":\"width\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"width : int\",\"compositions\":[]},\"xml_dir\":{\"name\":\"xml_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"xml_dir : Optional[Path]\",\"compositions\":[\"Path\"]}},\"methods\":{\"execute_adb_with_cmd\":{\"name\":\"execute_adb_with_cmd\",\"args\":[{\"name\":\"adb_cmd\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"adb_cmd: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"execute_adb_with_cmd(adb_cmd: str): str\",\"aggregations\":[]},\"get_screenshot\":{\"name\":\"get_screenshot\",\"args\":[{\"name\":\"ss_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ss_name: str\",\"compositions\":[]},{\"name\":\"local_save_dir\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_save_dir: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"get_screenshot(ss_name: str, local_save_dir: Path): Path\",\"aggregations\":[\"Path\"]},\"get_xml\":{\"name\":\"get_xml\",\"args\":[{\"name\":\"xml_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"xml_name: str\",\"compositions\":[]},{\"name\":\"local_save_dir\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_save_dir: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"get_xml(xml_name: str, local_save_dir: Path): Path\",\"aggregations\":[\"Path\"]},\"list_devices\":{\"name\":\"list_devices\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"list_devices()\",\"aggregations\":[]},\"system_back\":{\"name\":\"system_back\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"system_back(): str\",\"aggregations\":[]},\"system_tap\":{\"name\":\"system_tap\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"system_tap(x: int, y: int): str\",\"aggregations\":[]},\"user_input\":{\"name\":\"user_input\",\"args\":[{\"name\":\"input_txt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_txt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_input(input_txt: str): str\",\"aggregations\":[]},\"user_longpress\":{\"name\":\"user_longpress\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]},{\"name\":\"duration\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"duration: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_longpress(x: int, y: int, duration: int): str\",\"aggregations\":[]},\"user_swipe\":{\"name\":\"user_swipe\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]},{\"name\":\"orient\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"orient: str\",\"compositions\":[]},{\"name\":\"dist\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dist: str\",\"compositions\":[]},{\"name\":\"if_quick\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"if_quick: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_swipe(x: int, y: int, orient: str, dist: str, if_quick: bool): str\",\"aggregations\":[]},\"user_swipe_to\":{\"name\":\"user_swipe_to\",\"args\":[{\"name\":\"start\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"start: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"end\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"end: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"duration\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"duration: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"user_swipe_to(start: tuple[int, int], end: tuple[int, int], duration: int)\",\"aggregations\":[\"tuple\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix"}, {"id": "{\"name\":\"adb_prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_shell"}, {"id": "{\"name\":\"adb_prefix_shell\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix_shell\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_si"}, {"id": "{\"name\":\"adb_prefix_si\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix_si\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_id"}, {"id": "{\"name\":\"device_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"device_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_shape"}, {"id": "{\"name\":\"device_shape\",\"type_\":\"\",\"default_\":\"\",\"description\":\"device_shape\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:height"}, {"id": "{\"name\":\"height\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"height : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:screenshot_dir"}, {"id": "{\"name\":\"screenshot_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"screenshot_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:width"}, {"id": "{\"name\":\"width\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"width : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:xml_dir"}, {"id": "{\"name\":\"xml_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"xml_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:execute_adb_with_cmd"}, {"id": "{\"name\":\"execute_adb_with_cmd\",\"args\":[{\"name\":\"adb_cmd\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"adb_cmd: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"execute_adb_with_cmd(adb_cmd: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:get_screenshot"}, {"id": "{\"name\":\"get_screenshot\",\"args\":[{\"name\":\"ss_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ss_name: str\",\"compositions\":[]},{\"name\":\"local_save_dir\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_save_dir: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"get_screenshot(ss_name: str, local_save_dir: Path): Path\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:get_xml"}, {"id": "{\"name\":\"get_xml\",\"args\":[{\"name\":\"xml_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"xml_name: str\",\"compositions\":[]},{\"name\":\"local_save_dir\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_save_dir: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"get_xml(xml_name: str, local_save_dir: Path): Path\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:list_devices"}, {"id": "{\"name\":\"list_devices\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"list_devices()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:system_back"}, {"id": "{\"name\":\"system_back\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"system_back(): str\",\"aggregations\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:system_tap"}, {"id": "{\"name\":\"system_tap\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"system_tap(x: int, y: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_input"}, {"id": "{\"name\":\"user_input\",\"args\":[{\"name\":\"input_txt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_txt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_input(input_txt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_longpress"}, {"id": "{\"name\":\"user_longpress\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]},{\"name\":\"duration\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"duration: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_longpress(x: int, y: int, duration: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_swipe"}, {"id": "{\"name\":\"user_swipe\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]},{\"name\":\"orient\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"orient: str\",\"compositions\":[]},{\"name\":\"dist\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dist: str\",\"compositions\":[]},{\"name\":\"if_quick\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"if_quick: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_swipe(x: int, y: int, orient: str, dist: str, if_quick: bool): str\",\"aggregations\":[]}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_swipe_to"}, {"id": "{\"name\":\"user_swipe_to\",\"args\":[{\"name\":\"start\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"start: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"end\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"end: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"duration\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"duration: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"user_swipe_to(start: tuple[int, int], end: tuple[int, int], duration: int)\",\"aggregations\":[\"tuple\"]}"}, {"id": "?:Path"}, {"id": "?:tuple"}, {"id": "metagpt/provider/general_api_base.py:ApiType"}, {"id": "{\"name\":\"ApiType\",\"package\":\"metagpt/provider/general_api_base.py:ApiType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"from_str\":{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:ApiType:name"}, {"id": "metagpt/provider/general_api_base.py:ApiType:from_str"}, {"id": "{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/architect.py"}, {"id": "metagpt/roles/architect.py:Architect"}, {"id": "{\"name\":\"Architect\",\"package\":\"metagpt/roles/architect.py:Architect\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:constraints"}, {"id": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:goal"}, {"id": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:name"}, {"id": "metagpt/roles/architect.py:Architect:profile"}, {"id": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"id": "{\"name\":\"ArgumentsParingAction\",\"package\":\"metagpt/actions/skill_action.py:ArgumentsParingAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"parse_arguments\":{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:args"}, {"id": "{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask"}, {"id": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt"}, {"id": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"id": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"id": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments"}, {"id": "{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "?:Message"}, {"id": "metagpt/roles/assistant.py"}, {"id": "metagpt/roles/assistant.py:Assistant"}, {"id": "{\"name\":\"Assistant\",\"package\":\"metagpt/roles/assistant.py:Assistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]},\"get_memory\":{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]},\"load_memory\":{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]},\"refine_memory\":{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]},\"skill_handler\":{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]},\"talk\":{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]},\"talk_handler\":{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}},\"compositions\":[\"SkillsDeclaration\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:constraints"}, {"id": "metagpt/roles/assistant.py:Assistant:desc"}, {"id": "metagpt/roles/assistant.py:Assistant:goal"}, {"id": "metagpt/roles/assistant.py:Assistant:memory"}, {"id": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:name"}, {"id": "metagpt/roles/assistant.py:Assistant:profile"}, {"id": "metagpt/roles/assistant.py:Assistant:skills"}, {"id": "{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:act"}, {"id": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:get_memory"}, {"id": "{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:load_memory"}, {"id": "{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:refine_memory"}, {"id": "{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:skill_handler"}, {"id": "{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:talk"}, {"id": "{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:talk_handler"}, {"id": "{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:think"}, {"id": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}"}, {"id": "?:SkillsDeclaration"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient"}, {"id": "{\"name\":\"AsyncSSEClient\",\"package\":\"metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient\",\"attributes\":{},\"methods\":{\"stream\":{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream"}, {"id": "{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/context.py"}, {"id": "metagpt/context.py:AttrDict"}, {"id": "{\"name\":\"AttrDict\",\"package\":\"metagpt/context.py:AttrDict\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]},\"remove\":{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:model_config"}, {"id": "metagpt/context.py:AttrDict:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:remove"}, {"id": "{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData"}, {"id": "{\"name\":\"AudioData\",\"package\":\"metagpt/tools/iflytek_tts.py:AudioData\",\"attributes\":{\"audio\":{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]},\"ced\":{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:audio"}, {"id": "{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:ced"}, {"id": "{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:status"}, {"id": "{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}"}, {"id": "metagpt/provider/azure_openai_api.py"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM"}, {"id": "{\"name\":\"AzureOpenAILLM\",\"package\":\"metagpt/provider/azure_openai_api.py:AzureOpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AsyncAzureOpenAI\"],\"aggregations\":[]}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:pricing_plan"}, {"id": "{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}"}, {"id": "?:AsyncAzureOpenAI"}, {"id": "metagpt/tools/azure_tts.py"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS"}, {"id": "{\"name\":\"AzureTTS\",\"package\":\"metagpt/tools/azure_tts.py:AzureTTS\",\"attributes\":{\"region\":{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]},\"subscription_key\":{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}},\"methods\":{\"role_style_text\":{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]},\"role_text\":{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]},\"style_text\":{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]},\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:region"}, {"id": "{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key"}, {"id": "{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text"}, {"id": "{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:role_text"}, {"id": "{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:style_text"}, {"id": "{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech"}, {"id": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate"}, {"id": "{\"name\":\"BEAGECTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:BEAGECTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py"}, {"id": "metagpt/strategy/tot.py:BFSSolver"}, {"id": "{\"name\":\"BFSSolver\",\"package\":\"metagpt/strategy/tot.py:BFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"generate_and_evaluate_nodes\":{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"id": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes"}, {"id": "{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:BaseContext"}, {"id": "{\"name\":\"BaseContext\",\"package\":\"metagpt/schema.py:BaseContext\",\"attributes\":{},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}},\"compositions\":[],\"aggregations\":[\"T\"]}"}, {"id": "metagpt/schema.py:BaseContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}"}, {"id": "?:T"}, {"id": "metagpt/strategy/base.py"}, {"id": "metagpt/strategy/base.py:BaseEvaluator"}, {"id": "{\"name\":\"BaseEvaluator\",\"package\":\"metagpt/strategy/base.py:BaseEvaluator\",\"attributes\":{},\"methods\":{\"status_verify\":{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:status_verify"}, {"id": "{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify ()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py"}, {"id": "metagpt/provider/base_llm.py:BaseLLM"}, {"id": "{\"name\":\"BaseLLM\",\"package\":\"metagpt/provider/base_llm.py:BaseLLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"pricing_plan : Optional[str]\",\"compositions\":[]},\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], images: Optional[Union[str, list[str]]], timeout, stream): str\",\"aggregations\":[]},\"aask_batch\":{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]},\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code (messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion (messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text (messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"get_choice_delta_text\":{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]},\"get_choice_function\":{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]},\"messages_to_dict\":{\"name\":\"messages_to_dict\",\"args\":[{\"name\":\"messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"messages_to_dict(messages)\",\"aggregations\":[]},\"messages_to_prompt\":{\"name\":\"messages_to_prompt\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"messages_to_prompt(messages: list[dict])\",\"aggregations\":[]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"id": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:cost_manager"}, {"id": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:pricing_plan"}, {"id": "{\"name\":\"pricing_plan\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"pricing_plan : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:system_prompt"}, {"id": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt"}, {"id": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], images: Optional[Union[str, list[str]]], timeout, stream): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask_batch"}, {"id": "{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask_code"}, {"id": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code (messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion (messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text (messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text"}, {"id": "{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function"}, {"id": "{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments"}, {"id": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:messages_to_dict"}, {"id": "{\"name\":\"messages_to_dict\",\"args\":[{\"name\":\"messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"messages_to_dict(messages)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:messages_to_prompt"}, {"id": "{\"name\":\"messages_to_prompt\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"messages_to_prompt(messages: list[dict])\",\"aggregations\":[]}"}, {"id": "?:AsyncOpenAI"}, {"id": "?:CostManager"}, {"id": "metagpt/strategy/base.py:BaseParser"}, {"id": "{\"name\":\"BaseParser\",\"package\":\"metagpt/strategy/base.py:BaseParser\",\"attributes\":{},\"methods\":{\"propose\":{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose (current_state: str): str\",\"aggregations\":[]},\"sample\":{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample (current_state: str): str\",\"aggregations\":[]},\"value\":{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value (input: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:propose"}, {"id": "{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose (current_state: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:sample"}, {"id": "{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample (current_state: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:value"}, {"id": "{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value (input: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin"}, {"id": "{\"name\":\"BasePostProcessPlugin\",\"package\":\"metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin\",\"attributes\":{\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_extract_content_from_output\":{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]},\"run_repair_llm_output\":{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_repair_llm_raw_output\":{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]},\"run_retry_parse_json_text\":{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model"}, {"id": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output"}, {"id": "{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output"}, {"id": "{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output"}, {"id": "{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text"}, {"id": "{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py"}, {"id": "metagpt/strategy/solver.py:BaseSolver"}, {"id": "{\"name\":\"BaseSolver\",\"package\":\"metagpt/strategy/solver.py:BaseSolver\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"graph\":{\"name\":\"graph\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"search_space\":{\"name\":\"search_space\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_space\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:BaseSolver:context"}, {"id": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"id": "metagpt/strategy/solver.py:BaseSolver:graph"}, {"id": "{\"name\":\"graph\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph\",\"compositions\":[]}"}, {"id": "metagpt/strategy/solver.py:BaseSolver:llm"}, {"id": "metagpt/strategy/solver.py:BaseSolver:search_space"}, {"id": "{\"name\":\"search_space\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_space\",\"compositions\":[]}"}, {"id": "metagpt/strategy/solver.py:BaseSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py"}, {"id": "metagpt/document_store/base_store.py:BaseStore"}, {"id": "{\"name\":\"BaseStore\",\"package\":\"metagpt/document_store/base_store.py:BaseStore\",\"attributes\":{},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search ()\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:add"}, {"id": "{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:search"}, {"id": "{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:write"}, {"id": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory"}, {"id": "{\"name\":\"BrainMemory\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory\",\"attributes\":{\"cacheable\":{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]},\"historical_summary\":{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]},\"history_text\":{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]},\"is_dirty\":{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]},\"is_history_available\":{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]},\"last_history_id\":{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]},\"last_talk\":{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"add_answer\":{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_history\":{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_talk\":{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]},\"dumps\":{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]},\"exists\":{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]},\"extract_info\":{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]},\"get_knowledge\":{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]},\"get_title\":{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]},\"is_related\":{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]},\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]},\"pop_last_talk\":{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]},\"rewrite\":{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]},\"set_history_summary\":{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]},\"split_texts\":{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]},\"summarize\":{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]},\"to_int\":{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]},\"to_metagpt_history_format\":{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]},\"to_redis_key\":{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"BaseLLM\"],\"aggregations\":[\"BrainMemory\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:cacheable"}, {"id": "{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary"}, {"id": "{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:history"}, {"id": "{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:history_text"}, {"id": "{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty"}, {"id": "{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available"}, {"id": "{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:knowledge"}, {"id": "{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id"}, {"id": "{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:last_talk"}, {"id": "{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:llm"}, {"id": "{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_answer"}, {"id": "{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_history"}, {"id": "{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_talk"}, {"id": "{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:dumps"}, {"id": "{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:exists"}, {"id": "{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:extract_info"}, {"id": "{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge"}, {"id": "{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:get_title"}, {"id": "{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_related"}, {"id": "{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk"}, {"id": "{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:rewrite"}, {"id": "{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary"}, {"id": "{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:split_texts"}, {"id": "{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:summarize"}, {"id": "{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_int"}, {"id": "{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format"}, {"id": "{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key"}, {"id": "{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}"}, {"id": "?:BaseLLM"}, {"id": "?:BrainMemory"}, {"id": "metagpt/configs/browser_config.py"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig"}, {"id": "{\"name\":\"BrowserConfig\",\"package\":\"metagpt/configs/browser_config.py:BrowserConfig\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit','chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit', 'chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:browser_type"}, {"id": "{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit','chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit', 'chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"id": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:BugFixContext"}, {"id": "{\"name\":\"BugFixContext\",\"package\":\"metagpt/schema.py:BugFixContext\",\"attributes\":{\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:BugFixContext:filename"}, {"id": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py"}, {"id": "metagpt/config2.py:CLIParams"}, {"id": "{\"name\":\"CLIParams\",\"package\":\"metagpt/config2.py:CLIParams\",\"attributes\":{\"git_reinit\":{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}},\"methods\":{\"check_project_path\":{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/config2.py:CLIParams:git_reinit"}, {"id": "{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:inc"}, {"id": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:max_auto_summarize_code"}, {"id": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:project_name"}, {"id": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:project_path"}, {"id": "{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:reqa_file"}, {"id": "{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:check_project_path"}, {"id": "{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:COTSolver"}, {"id": "{\"name\":\"COTSolver\",\"package\":\"metagpt/strategy/solver.py:COTSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:COTSolver:solve"}, {"id": "metagpt/tools/libs/feature_engineering.py"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCount"}, {"id": "{\"name\":\"CatCount\",\"package\":\"metagpt/tools/libs/feature_engineering.py:CatCount\",\"attributes\":{\"col\":{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]},\"encoder_dict\":{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCount:col"}, {"id": "{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCount:encoder_dict"}, {"id": "{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCount:fit"}, {"id": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCount:transform"}, {"id": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "?:pd.DataFrame"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross"}, {"id": "{\"name\":\"CatCross\",\"package\":\"metagpt/tools/libs/feature_engineering.py:CatCross\",\"attributes\":{\"cols\":{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]},\"combs\":{\"name\":\"combs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"combs : list\",\"compositions\":[]},\"combs_map\":{\"name\":\"combs_map\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"combs_map : dict\",\"compositions\":[]},\"max_cat_num\":{\"name\":\"max_cat_num\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_cat_num : int\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross:cols"}, {"id": "{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross:combs"}, {"id": "{\"name\":\"combs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"combs : list\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross:combs_map"}, {"id": "{\"name\":\"combs_map\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"combs_map : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross:max_cat_num"}, {"id": "{\"name\":\"max_cat_num\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_cat_num : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross:transform"}, {"id": "metagpt/utils/git_repository.py"}, {"id": "metagpt/utils/git_repository.py:ChangeType"}, {"id": "{\"name\":\"ChangeType\",\"package\":\"metagpt/utils/git_repository.py:ChangeType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:ChangeType:name"}, {"id": "metagpt/document_store/chromadb_store.py"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore"}, {"id": "{\"name\":\"ChromaStore\",\"package\":\"metagpt/document_store/chromadb_store.py:ChromaStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"collection\":{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:client"}, {"id": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:collection"}, {"id": "{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:persist"}, {"id": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py"}, {"id": "metagpt/provider/anthropic_api.py:Claude2"}, {"id": "{\"name\":\"Claude2\",\"package\":\"metagpt/provider/anthropic_api.py:Claude2\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:ask"}, {"id": "{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo"}, {"id": "{\"name\":\"CodeBlockInfo\",\"package\":\"metagpt/repo_parser.py:CodeBlockInfo\",\"attributes\":{\"end_lineno\":{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]},\"lineno\":{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]},\"properties\":{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]},\"tokens\":{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]},\"type_name\":{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno"}, {"id": "{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:lineno"}, {"id": "{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:properties"}, {"id": "{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:tokens"}, {"id": "{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:type_name"}, {"id": "{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}"}, {"id": "metagpt/strategy/solver.py:CodeInterpreterSolver"}, {"id": "{\"name\":\"CodeInterpreterSolver\",\"package\":\"metagpt/strategy/solver.py:CodeInterpreterSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:CodeInterpreterSolver:solve"}, {"id": "metagpt/utils/common.py"}, {"id": "metagpt/utils/common.py:CodeParser"}, {"id": "{\"name\":\"CodeParser\",\"package\":\"metagpt/utils/common.py:CodeParser\",\"attributes\":{},\"methods\":{\"parse_block\":{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_block"}, {"id": "{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_blocks"}, {"id": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_code"}, {"id": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_file_list"}, {"id": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_str"}, {"id": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext"}, {"id": "{\"name\":\"CodePlanAndChangeContext\",\"package\":\"metagpt/schema.py:CodePlanAndChangeContext\",\"attributes\":{\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"prd_filename\":{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:design_filename"}, {"id": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename"}, {"id": "{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:requirement"}, {"id": "{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:task_filename"}, {"id": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext"}, {"id": "{\"name\":\"CodeSummarizeContext\",\"package\":\"metagpt/schema.py:CodeSummarizeContext\",\"attributes\":{\"codes_filenames\":{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]},\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:codes_filenames"}, {"id": "{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:design_filename"}, {"id": "metagpt/schema.py:CodeSummarizeContext:reason"}, {"id": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:task_filename"}, {"id": "metagpt/schema.py:CodeSummarizeContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"id": "metagpt/schema.py:CodingContext"}, {"id": "{\"name\":\"CodingContext\",\"package\":\"metagpt/schema.py:CodingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"code_plan_and_change_doc\":{\"name\":\"code_plan_and_change_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_plan_and_change_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"design_doc\":{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"task_doc\":{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:CodingContext:code_doc"}, {"id": "{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:CodingContext:code_plan_and_change_doc"}, {"id": "{\"name\":\"code_plan_and_change_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_plan_and_change_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:CodingContext:design_doc"}, {"id": "{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:CodingContext:filename"}, {"id": "metagpt/schema.py:CodingContext:task_doc"}, {"id": "{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "?:Document"}, {"id": "metagpt/actions/research.py"}, {"id": "metagpt/actions/research.py:CollectLinks"}, {"id": "{\"name\":\"CollectLinks\",\"package\":\"metagpt/actions/research.py:CollectLinks\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"rank_func\":{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]},\"search_func\":{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]},\"validate_engine_and_run_func\":{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"SearchEngine\"],\"aggregations\":[\"str\\\\\"]}"}, {"id": "metagpt/actions/research.py:CollectLinks:desc"}, {"id": "metagpt/actions/research.py:CollectLinks:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/research.py:CollectLinks:name"}, {"id": "metagpt/actions/research.py:CollectLinks:rank_func"}, {"id": "{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"id": "{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}"}, {"id": "metagpt/actions/research.py:CollectLinks:search_func"}, {"id": "{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}"}, {"id": "metagpt/actions/research.py:CollectLinks:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}"}, {"id": "metagpt/actions/research.py:CollectLinks:validate_engine_and_run_func"}, {"id": "{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}"}, {"id": "?:SearchEngine"}, {"id": "?:str\\"}, {"id": "metagpt/learn/skill_loader.py"}, {"id": "metagpt/learn/skill_loader.py:Components"}, {"id": "{\"name\":\"Components\",\"package\":\"metagpt/learn/skill_loader.py:Components\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:ConductResearch"}, {"id": "{\"name\":\"ConductResearch\",\"package\":\"metagpt/actions/research.py:ConductResearch\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:ConductResearch:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/config2.py:Config\",\"attributes\":{\"azure_tts_region\":{\"name\":\"azure_tts_region\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"azure_tts_region : str\",\"compositions\":[]},\"azure_tts_subscription_key\":{\"name\":\"azure_tts_subscription_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"azure_tts_subscription_key : str\",\"compositions\":[]},\"browser\":{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]},\"code_review_k_times\":{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]},\"enable_longterm_memory\":{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]},\"iflytek_api_key\":{\"name\":\"iflytek_api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_api_key : str\",\"compositions\":[]},\"iflytek_api_secret\":{\"name\":\"iflytek_api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_api_secret : str\",\"compositions\":[]},\"iflytek_app_id\":{\"name\":\"iflytek_app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_app_id : str\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]},\"mermaid\":{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]},\"metagpt_tti_url\":{\"name\":\"metagpt_tti_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"metagpt_tti_url : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]},\"redis\":{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]},\"redis_key\":{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]},\"repair_llm_output\":{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},\"s3\":{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]},\"search\":{\"name\":\"search\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search\",\"compositions\":[]},\"workspace\":{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}},\"methods\":{\"default\":{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]},\"from_home\":{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]},\"get_azure_llm\":{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"get_openai_llm\":{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"update_via_cli\":{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\",\"S3Config\"],\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:azure_tts_region"}, {"id": "{\"name\":\"azure_tts_region\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"azure_tts_region : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:azure_tts_subscription_key"}, {"id": "{\"name\":\"azure_tts_subscription_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"azure_tts_subscription_key : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:browser"}, {"id": "{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:code_review_k_times"}, {"id": "{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:enable_longterm_memory"}, {"id": "{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:iflytek_api_key"}, {"id": "{\"name\":\"iflytek_api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_api_key : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:iflytek_api_secret"}, {"id": "{\"name\":\"iflytek_api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_api_secret : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:iflytek_app_id"}, {"id": "{\"name\":\"iflytek_app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_app_id : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:inc"}, {"id": "metagpt/config2.py:Config:language"}, {"id": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:llm"}, {"id": "metagpt/config2.py:Config:max_auto_summarize_code"}, {"id": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:mermaid"}, {"id": "{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:metagpt_tti_url"}, {"id": "{\"name\":\"metagpt_tti_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"metagpt_tti_url : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:project_name"}, {"id": "metagpt/config2.py:Config:project_path"}, {"id": "metagpt/config2.py:Config:prompt_schema"}, {"id": "{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:proxy"}, {"id": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:redis"}, {"id": "{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"id": "metagpt/config2.py:Config:redis_key"}, {"id": "{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:repair_llm_output"}, {"id": "{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:reqa_file"}, {"id": "{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:s3"}, {"id": "{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]}"}, {"id": "metagpt/config2.py:Config:search"}, {"id": "{\"name\":\"search\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:workspace"}, {"id": "{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:default"}, {"id": "{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config:from_home"}, {"id": "{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config:get_azure_llm"}, {"id": "{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:get_openai_llm"}, {"id": "{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:update_via_cli"}, {"id": "{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}"}, {"id": "?:RedisConfig"}, {"id": "?:S3Config"}, {"id": "?:LLMConfig"}, {"id": "metagpt/tools/openai_text_to_embedding.py"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config\",\"attributes\":{\"alias\":{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias"}, {"id": "{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed"}, {"id": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/strategy/tot.py:TreeofThought:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed"}, {"id": "metagpt/context.py:Context"}, {"id": "{\"name\":\"Context\",\"package\":\"metagpt/context.py:Context\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]},\"kwargs\":{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}},\"methods\":{\"llm\":{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]},\"llm_with_cost_manager_from_llm_config\":{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"LLMConfig\",\"BaseLLM\"]},\"new_environ\":{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}},\"compositions\":[\"GitRepository\",\"ProjectRepo\",\"Path\"],\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"id": "metagpt/context.py:Context:config"}, {"id": "metagpt/context.py:Context:cost_manager"}, {"id": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"id": "metagpt/context.py:Context:git_repo"}, {"id": "{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]}"}, {"id": "metagpt/context.py:Context:kwargs"}, {"id": "{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}"}, {"id": "metagpt/context.py:Context:model_config"}, {"id": "metagpt/context.py:Context:repo"}, {"id": "{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]}"}, {"id": "metagpt/context.py:Context:src_workspace"}, {"id": "{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/context.py:Context:llm"}, {"id": "{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]}"}, {"id": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config"}, {"id": "{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"LLMConfig\",\"BaseLLM\"]}"}, {"id": "metagpt/context.py:Context:new_environ"}, {"id": "{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}"}, {"id": "?:GitRepository"}, {"id": "?:ProjectRepo"}, {"id": "metagpt/context_mixin.py"}, {"id": "metagpt/context_mixin.py:ContextMixin"}, {"id": "{\"name\":\"ContextMixin\",\"package\":\"metagpt/context_mixin.py:ContextMixin\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"private_config\":{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]},\"private_context\":{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]},\"private_llm\":{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]},\"set_config\":{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]},\"validate_context_mixin_extra\":{\"name\":\"validate_context_mixin_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_context_mixin_extra()\",\"aggregations\":[]}},\"compositions\":[\"Config\",\"Context\",\"BaseLLM\"],\"aggregations\":[]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:config"}, {"id": "metagpt/context_mixin.py:ContextMixin:context"}, {"id": "metagpt/context_mixin.py:ContextMixin:llm"}, {"id": "metagpt/context_mixin.py:ContextMixin:model_config"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_config"}, {"id": "{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_context"}, {"id": "{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"id": "{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_config"}, {"id": "{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_context"}, {"id": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_llm"}, {"id": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:validate_context_mixin_extra"}, {"id": "{\"name\":\"validate_context_mixin_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_context_mixin_extra()\",\"aggregations\":[]}"}, {"id": "?:Config"}, {"id": "?:Context"}, {"id": "metagpt/utils/cost_manager.py"}, {"id": "metagpt/utils/cost_manager.py:CostManager"}, {"id": "{\"name\":\"CostManager\",\"package\":\"metagpt/utils/cost_manager.py:CostManager\",\"attributes\":{\"max_budget\":{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]},\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]},\"get_total_completion_tokens\":{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]},\"get_total_cost\":{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]},\"get_total_prompt_tokens\":{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:max_budget"}, {"id": "{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_budget"}, {"id": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens"}, {"id": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_cost"}, {"id": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens"}, {"id": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_costs"}, {"id": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens"}, {"id": "{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_cost"}, {"id": "{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens"}, {"id": "{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:update_cost"}, {"id": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"id": "?:Costs"}, {"id": "metagpt/utils/cost_manager.py:Costs"}, {"id": "{\"name\":\"Costs\",\"package\":\"metagpt/utils/cost_manager.py:Costs\",\"attributes\":{\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_budget"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_cost"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens"}, {"id": "metagpt/utils/custom_decoder.py"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder"}, {"id": "{\"name\":\"CustomDecoder\",\"package\":\"metagpt/utils/custom_decoder.py:CustomDecoder\",\"attributes\":{\"parse_object\":{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]},\"parse_string\":{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]},\"scan_once\":{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}},\"methods\":{\"decode\":{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object"}, {"id": "{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string"}, {"id": "{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once"}, {"id": "{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:decode"}, {"id": "{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/customer_service.py"}, {"id": "metagpt/roles/customer_service.py:CustomerService"}, {"id": "{\"name\":\"CustomerService\",\"package\":\"metagpt/roles/customer_service.py:CustomerService\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/customer_service.py:CustomerService:desc"}, {"id": "metagpt/roles/customer_service.py:CustomerService:name"}, {"id": "metagpt/roles/customer_service.py:CustomerService:profile"}, {"id": "metagpt/roles/customer_service.py:CustomerService:store"}, {"id": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"id": "?:BaseStore"}, {"id": "metagpt/tools/search_engine_ddg.py"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper"}, {"id": "{\"name\":\"DDGAPIWrapper\",\"package\":\"metagpt/tools/search_engine_ddg.py:DDGAPIWrapper\",\"attributes\":{\"ddgs\":{\"name\":\"ddgs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ddgs\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"\\\\\"]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs"}, {"id": "{\"name\":\"ddgs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ddgs\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor"}, {"id": "{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop"}, {"id": "{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:proxy"}, {"id": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}"}, {"id": "?:futures.Executor"}, {"id": "?:asyncio.AbstractEventLoop"}, {"id": "?:\\"}, {"id": "metagpt/strategy/tot.py:DFSSolver"}, {"id": "{\"name\":\"DFSSolver\",\"package\":\"metagpt/strategy/tot.py:DFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"id": "metagpt/strategy/tot.py:DFSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py"}, {"id": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"id": "{\"name\":\"DataPreprocessTool\",\"package\":\"metagpt/tools/libs/data_preprocess.py:DataPreprocessTool\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:features"}, {"id": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:model"}, {"id": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:fit"}, {"id": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:transform"}, {"id": "metagpt/tools/search_engine_meilisearch.py"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource"}, {"id": "{\"name\":\"DataSource\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:DataSource\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:name"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:url"}, {"id": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/debug_error.py"}, {"id": "metagpt/actions/debug_error.py:DebugError"}, {"id": "{\"name\":\"DebugError\",\"package\":\"metagpt/actions/debug_error.py:DebugError\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"id": "metagpt/actions/debug_error.py:DebugError:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile"}, {"id": "{\"name\":\"DependencyFile\",\"package\":\"metagpt/utils/dependency_file.py:DependencyFile\",\"attributes\":{\"exists\":{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}},\"methods\":{\"delete_file\":{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]},\"load\":{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]},\"update\":{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:exists"}, {"id": "{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:delete_file"}, {"id": "{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:load"}, {"id": "{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:save"}, {"id": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:update"}, {"id": "{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "?:Path\\"}, {"id": "metagpt/actions/design_api_review.py"}, {"id": "metagpt/actions/design_api_review.py:DesignReview"}, {"id": "{\"name\":\"DesignReview\",\"package\":\"metagpt/actions/design_api_review.py:DesignReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:i_context"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:name"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository"}, {"id": "{\"name\":\"DiGraphRepository\",\"package\":\"metagpt/utils/di_graph_repository.py:DiGraphRepository\",\"attributes\":{\"pathname\":{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]},\"root\":{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"json\":{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"str\\\\\",\"GraphRepository\",\"Path\"]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\",\"GraphRepository\",\"SPO\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname"}, {"id": "{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root"}, {"id": "{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert"}, {"id": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json"}, {"id": "{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from"}, {"id": "{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"str\\\\\",\"GraphRepository\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select"}, {"id": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"id": "?:GraphRepository"}, {"id": "?:SPO"}, {"id": "metagpt/utils/project_repo.py"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories"}, {"id": "{\"name\":\"DocFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:DocFileRepositories\",\"attributes\":{\"class_view\":{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]},\"task\":{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:class_view"}, {"id": "{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change"}, {"id": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary"}, {"id": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo"}, {"id": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:prd"}, {"id": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:system_design"}, {"id": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:task"}, {"id": "{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}"}, {"id": "metagpt/utils/pycst.py"}, {"id": "metagpt/utils/pycst.py:DocstringCollector"}, {"id": "{\"name\":\"DocstringCollector\",\"package\":\"metagpt/utils/pycst.py:DocstringCollector\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"bool\\\\\",\"cst.ClassDef\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.FunctionDef\",\"cst.Module\",\"bool\\\\\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:docstrings"}, {"id": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:stack"}, {"id": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef"}, {"id": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef"}, {"id": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_Module"}, {"id": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef"}, {"id": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"bool\\\\\",\"cst.ClassDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef"}, {"id": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_Module"}, {"id": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"id": "?:..."}, {"id": "?:cst.SimpleStatementLine"}, {"id": "?:cst.ClassDef"}, {"id": "?:cst.FunctionDef"}, {"id": "?:cst.Module"}, {"id": "?:bool\\"}, {"id": "metagpt/utils/parse_docstring.py"}, {"id": "metagpt/utils/parse_docstring.py:DocstringParser"}, {"id": "{\"name\":\"DocstringParser\",\"package\":\"metagpt/utils/parse_docstring.py:DocstringParser\",\"attributes\":{\"docstring\":{\"name\":\"docstring\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"docstring : str\",\"compositions\":[]}},\"methods\":{\"check_and_parse_default_value\":{\"name\":\"check_and_parse_default_value\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_default_value (param_desc: str): Tuple[bool, str]\",\"aggregations\":[]},\"check_and_parse_enum\":{\"name\":\"check_and_parse_enum\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_enum (param_desc: str): Tuple[bool, str]\",\"aggregations\":[]},\"check_and_parse_optional\":{\"name\":\"check_and_parse_optional\",\"args\":[{\"name\":\"param_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_optional (param_type: str): Tuple[bool, str]\",\"aggregations\":[]},\"parse_desc\":{\"name\":\"parse_desc\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_desc (): str\",\"aggregations\":[]},\"parse_params\":{\"name\":\"parse_params\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str,str]]\",\"description\":\"list[Tuple[str, str, str]]\",\"compositions\":[]},\"description\":\"parse_params (): list[Tuple[str, str, str]]\",\"aggregations\":[]},\"parse_returns\":{\"name\":\"parse_returns\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str]]\",\"description\":\"list[Tuple[str, str]]\",\"compositions\":[]},\"description\":\"parse_returns (): list[Tuple[str, str]]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:DocstringParser:docstring"}, {"id": "{\"name\":\"docstring\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"docstring : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_default_value"}, {"id": "{\"name\":\"check_and_parse_default_value\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_default_value (param_desc: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_enum"}, {"id": "{\"name\":\"check_and_parse_enum\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_enum (param_desc: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_optional"}, {"id": "{\"name\":\"check_and_parse_optional\",\"args\":[{\"name\":\"param_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_optional (param_type: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:DocstringParser:parse_desc"}, {"id": "{\"name\":\"parse_desc\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_desc (): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:DocstringParser:parse_params"}, {"id": "{\"name\":\"parse_params\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str,str]]\",\"description\":\"list[Tuple[str, str, str]]\",\"compositions\":[]},\"description\":\"parse_params (): list[Tuple[str, str, str]]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:DocstringParser:parse_returns"}, {"id": "{\"name\":\"parse_returns\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str]]\",\"description\":\"list[Tuple[str, str]]\",\"compositions\":[]},\"description\":\"parse_returns (): list[Tuple[str, str]]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer"}, {"id": "{\"name\":\"DocstringTransformer\",\"package\":\"metagpt/utils/pycst.py:DocstringTransformer\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.ClassDef\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"bool\\\\\",\"cst.ClassDef\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.CSTNode\",\"cst.ClassDef\",\"cst.FunctionDef\",\"Module\",\"bool\\\\\",\"cst.Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:docstrings"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:stack"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef"}, {"id": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.ClassDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef"}, {"id": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module"}, {"id": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module"}, {"id": "?:cst.CSTNode"}, {"id": "?:Module"}, {"id": "metagpt/document.py"}, {"id": "metagpt/document.py:Document"}, {"id": "{\"name\":\"Document\",\"package\":\"metagpt/document.py:Document\",\"attributes\":{\"author\":{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"reviews\":{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"from_text\":{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/document.py:Document:author"}, {"id": "{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:content"}, {"id": "metagpt/document.py:Document:name"}, {"id": "metagpt/document.py:Document:path"}, {"id": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:reviews"}, {"id": "{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:status"}, {"id": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:from_path"}, {"id": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:from_text"}, {"id": "{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:persist"}, {"id": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Document:to_path"}, {"id": "{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/schema.py:Document"}, {"id": "{\"name\":\"Document\",\"package\":\"metagpt/schema.py:Document\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]},\"root_relative_path\":{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}},\"methods\":{\"get_meta\":{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/schema.py:Document:content"}, {"id": "metagpt/schema.py:Document:filename"}, {"id": "metagpt/schema.py:Document:root_path"}, {"id": "{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Document:root_relative_path"}, {"id": "{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Document:get_meta"}, {"id": "{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:DocumentStatus"}, {"id": "{\"name\":\"DocumentStatus\",\"package\":\"metagpt/document.py:DocumentStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document.py:DocumentStatus:name"}, {"id": "metagpt/schema.py:Documents"}, {"id": "{\"name\":\"Documents\",\"package\":\"metagpt/schema.py:Documents\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}},\"methods\":{\"from_iterable\":{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Document\",\"Documents\",\"Iterable\"]},\"to_action_output\":{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}},\"compositions\":[\"Document\"],\"aggregations\":[\"Documents\",\"Iterable\",\"ActionOutput\"]}"}, {"id": "metagpt/schema.py:Documents:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:Documents:from_iterable"}, {"id": "{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Document\",\"Documents\",\"Iterable\"]}"}, {"id": "metagpt/schema.py:Documents:to_action_output"}, {"id": "{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}"}, {"id": "?:Documents"}, {"id": "?:Iterable"}, {"id": "?:ActionOutput"}, {"id": "metagpt/repo_parser.py:DotClassAttribute"}, {"id": "{\"name\":\"DotClassAttribute\",\"package\":\"metagpt/repo_parser.py:DotClassAttribute\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"default_\":{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]},\"parse_compositions\":{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:compositions"}, {"id": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:default_"}, {"id": "{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:description"}, {"id": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:name"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:type_"}, {"id": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions"}, {"id": "{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:sort"}, {"id": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"id": "?:DotClassAttribute"}, {"id": "metagpt/repo_parser.py:DotClassInfo"}, {"id": "{\"name\":\"DotClassInfo\",\"package\":\"metagpt/repo_parser.py:DotClassInfo\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"attributes\":{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"methods\":{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}},\"methods\":{\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[\"DotClassAttribute\",\"DotClassMethod\"],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:aggregations"}, {"id": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:attributes"}, {"id": "{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:compositions"}, {"id": "metagpt/repo_parser.py:DotClassInfo:methods"}, {"id": "{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:name"}, {"id": "metagpt/repo_parser.py:DotClassInfo:package"}, {"id": "{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:sort"}, {"id": "?:DotClassMethod"}, {"id": "metagpt/repo_parser.py:DotClassMethod"}, {"id": "{\"name\":\"DotClassMethod\",\"package\":\"metagpt/repo_parser.py:DotClassMethod\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"args\":{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"return_args\":{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}},\"compositions\":[\"DotClassAttribute\",\"DotReturn\"],\"aggregations\":[\"DotClassMethod\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:aggregations"}, {"id": "metagpt/repo_parser.py:DotClassMethod:args"}, {"id": "{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:description"}, {"id": "metagpt/repo_parser.py:DotClassMethod:name"}, {"id": "metagpt/repo_parser.py:DotClassMethod:return_args"}, {"id": "{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}"}, {"id": "?:DotReturn"}, {"id": "metagpt/repo_parser.py:DotClassRelationship"}, {"id": "{\"name\":\"DotClassRelationship\",\"package\":\"metagpt/repo_parser.py:DotClassRelationship\",\"attributes\":{\"dest\":{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]},\"src\":{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:dest"}, {"id": "{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:label"}, {"id": "{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:relationship"}, {"id": "{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:src"}, {"id": "{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotReturn"}, {"id": "{\"name\":\"DotReturn\",\"package\":\"metagpt/repo_parser.py:DotReturn\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotReturn\\\\\"]}"}, {"id": "metagpt/repo_parser.py:DotReturn:compositions"}, {"id": "metagpt/repo_parser.py:DotReturn:description"}, {"id": "metagpt/repo_parser.py:DotReturn:type_"}, {"id": "metagpt/repo_parser.py:DotReturn:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]}"}, {"id": "metagpt/repo_parser.py:DotReturn:sort"}, {"id": "?:DotReturn\\"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"id": "{\"name\":\"Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Embedding\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]},\"object\":{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding"}, {"id": "{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:index"}, {"id": "{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:object"}, {"id": "{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py"}, {"id": "metagpt/roles/engineer.py:Engineer"}, {"id": "{\"name\":\"Engineer\",\"package\":\"metagpt/roles/engineer.py:Engineer\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"code_todos\":{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"n_borg\":{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]},\"n_summarize\":{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"next_todo_action\":{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"summarize_todos\":{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]},\"use_code_review\":{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:action_description"}, {"id": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:code_todos"}, {"id": "{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:constraints"}, {"id": "metagpt/roles/engineer.py:Engineer:goal"}, {"id": "metagpt/roles/engineer.py:Engineer:n_borg"}, {"id": "{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:n_summarize"}, {"id": "{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:name"}, {"id": "metagpt/roles/engineer.py:Engineer:next_todo_action"}, {"id": "{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:profile"}, {"id": "metagpt/roles/engineer.py:Engineer:src_workspace"}, {"id": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:summarize_todos"}, {"id": "{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:use_code_review"}, {"id": "{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate"}, {"id": "{\"name\":\"EnronTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:EnronTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity"}, {"id": "{\"name\":\"Entity\",\"package\":\"metagpt/learn/skill_loader.py:Entity\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}},\"methods\":{},\"compositions\":[\"Skill\"],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity:name"}, {"id": "{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity:skills"}, {"id": "{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}"}, {"id": "?:Skill"}, {"id": "metagpt/environment/api/env_api.py"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIAbstract"}, {"id": "{\"name\":\"EnvAPIAbstract\",\"package\":\"metagpt/environment/api/env_api.py:EnvAPIAbstract\",\"attributes\":{\"api_name\":{\"name\":\"api_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_name : str\",\"compositions\":[]},\"args\":{\"name\":\"args\",\"type_\":\"set\",\"default_\":\"\",\"description\":\"args : set\",\"compositions\":[]},\"kwargs\":{\"name\":\"kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"kwargs : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIAbstract:api_name"}, {"id": "{\"name\":\"api_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_name : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIAbstract:args"}, {"id": "{\"name\":\"args\",\"type_\":\"set\",\"default_\":\"\",\"description\":\"args : set\",\"compositions\":[]}"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIAbstract:kwargs"}, {"id": "{\"name\":\"kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"kwargs : dict\",\"compositions\":[]}"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIRegistry"}, {"id": "{\"name\":\"EnvAPIRegistry\",\"package\":\"metagpt/environment/api/env_api.py:EnvAPIRegistry\",\"attributes\":{\"registry\":{\"name\":\"registry\",\"type_\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"default_\":\"\",\"description\":\"registry : dict[str, dict[str, Union[dict, Any, str]]]\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"api_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(api_name: str)\",\"aggregations\":[]},\"get_apis\":{\"name\":\"get_apis\",\"args\":[{\"name\":\"as_str\",\"type_\":\"\",\"default_\":\"\",\"description\":\"as_str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"description\":\"dict[str, dict[str, Union[dict, Any, str]]]\",\"compositions\":[]},\"description\":\"get_apis(as_str): dict[str, dict[str, Union[dict, Any, str]]]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIRegistry:registry"}, {"id": "{\"name\":\"registry\",\"type_\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"default_\":\"\",\"description\":\"registry : dict[str, dict[str, Union[dict, Any, str]]]\",\"compositions\":[]}"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIRegistry:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"api_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(api_name: str)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIRegistry:get_apis"}, {"id": "{\"name\":\"get_apis\",\"args\":[{\"name\":\"as_str\",\"type_\":\"\",\"default_\":\"\",\"description\":\"as_str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"description\":\"dict[str, dict[str, Union[dict, Any, str]]]\",\"compositions\":[]},\"description\":\"get_apis(as_str): dict[str, dict[str, Union[dict, Any, str]]]\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py"}, {"id": "metagpt/environment/base_env.py:EnvType"}, {"id": "{\"name\":\"EnvType\",\"package\":\"metagpt/environment/base_env.py:EnvType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:EnvType:name"}, {"id": "metagpt/environment/base_env.py:Environment"}, {"id": "{\"name\":\"Environment\",\"package\":\"metagpt/environment/base_env.py:Environment\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"member_addrs\":{\"name\":\"member_addrs\",\"type_\":\"Dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : Dict['Role', Set]\",\"compositions\":[\"Role\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"roles\":{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny['Role']]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}},\"methods\":{\"add_role\":{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: 'Role'\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: 'Role')\",\"aggregations\":[\"Role\"]},\"add_roles\":{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable['Role']\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable['Role'])\",\"aggregations\":[\"Role\",\"Iterable\"]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]},\"get_addresses\":{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]},\"get_role\":{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'Role'\",\"description\":\"'Role'\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): 'Role'\",\"aggregations\":[\"Role\"]},\"get_roles\":{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,'Role']\",\"description\":\"dict[str, 'Role']\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, 'Role']\",\"aggregations\":[\"Role\"]},\"init_roles\":{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]},\"model_rebuild\":{\"name\":\"model_rebuild\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"model_rebuild()\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]},\"role_names\":{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}},\"compositions\":[\"Role\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\",\"Message\"]}"}, {"id": "metagpt/environment/base_env.py:Environment:context"}, {"id": "metagpt/environment/base_env.py:Environment:desc"}, {"id": "metagpt/environment/base_env.py:Environment:history"}, {"id": "{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/base_env.py:Environment:is_idle"}, {"id": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"id": "metagpt/environment/base_env.py:Environment:member_addrs"}, {"id": "{\"name\":\"member_addrs\",\"type_\":\"Dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : Dict['Role', Set]\",\"compositions\":[\"Role\"]}"}, {"id": "metagpt/environment/base_env.py:Environment:model_config"}, {"id": "metagpt/environment/base_env.py:Environment:roles"}, {"id": "{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny['Role']]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}"}, {"id": "metagpt/environment/base_env.py:Environment:add_role"}, {"id": "{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: 'Role'\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: 'Role')\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment/base_env.py:Environment:add_roles"}, {"id": "{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable['Role']\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable['Role'])\",\"aggregations\":[\"Role\",\"Iterable\"]}"}, {"id": "metagpt/environment/base_env.py:Environment:archive"}, {"id": "{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:Environment:get_addresses"}, {"id": "{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:Environment:get_role"}, {"id": "{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'Role'\",\"description\":\"'Role'\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): 'Role'\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment/base_env.py:Environment:get_roles"}, {"id": "{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,'Role']\",\"description\":\"dict[str, 'Role']\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, 'Role']\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment/base_env.py:Environment:init_roles"}, {"id": "{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:Environment:model_rebuild"}, {"id": "{\"name\":\"model_rebuild\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"model_rebuild()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:Environment:publish_message"}, {"id": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/environment/base_env.py:Environment:role_names"}, {"id": "{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:Environment:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:Environment:set_addresses"}, {"id": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}"}, {"id": "?:Role"}, {"id": "?:SerializeAsAny"}, {"id": "metagpt/learn/skill_loader.py:Example"}, {"id": "{\"name\":\"Example\",\"package\":\"metagpt/learn/skill_loader.py:Example\",\"attributes\":{\"answer\":{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Example:answer"}, {"id": "{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Example:ask"}, {"id": "metagpt/actions/execute_task.py"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask"}, {"id": "{\"name\":\"ExecuteTask\",\"package\":\"metagpt/actions/execute_task.py:ExecuteTask\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run ()\",\"aggregations\":[]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:name"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run ()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:ExtEnv"}, {"id": "{\"name\":\"ExtEnv\",\"package\":\"metagpt/environment/base_env.py:ExtEnv\",\"attributes\":{},\"methods\":{\"get_all_available_apis\":{\"name\":\"get_all_available_apis\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Any]\",\"description\":\"list[Any]\",\"compositions\":[]},\"description\":\"get_all_available_apis(mode: str): list[Any]\",\"aggregations\":[]},\"observe\":{\"name\":\"observe\",\"args\":[{\"name\":\"env_action\",\"type_\":\"Union[str,EnvAPIAbstract]\",\"default_\":\"\",\"description\":\"env_action: Union[str, EnvAPIAbstract]\",\"compositions\":[\"EnvAPIAbstract\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"observe(env_action: Union[str, EnvAPIAbstract])\",\"aggregations\":[\"EnvAPIAbstract\"]},\"step\":{\"name\":\"step\",\"args\":[{\"name\":\"env_action\",\"type_\":\"Union[str,Message,EnvAPIAbstract,list[EnvAPIAbstract]]\",\"default_\":\"\",\"description\":\"env_action: Union[str, Message, EnvAPIAbstract, list[EnvAPIAbstract]]\",\"compositions\":[\"EnvAPIAbstract\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"step(env_action: Union[str, Message, EnvAPIAbstract, list[EnvAPIAbstract]])\",\"aggregations\":[\"Message\",\"EnvAPIAbstract\"]}},\"compositions\":[],\"aggregations\":[\"EnvAPIAbstract\",\"Message\"]}"}, {"id": "metagpt/environment/base_env.py:ExtEnv:get_all_available_apis"}, {"id": "{\"name\":\"get_all_available_apis\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Any]\",\"description\":\"list[Any]\",\"compositions\":[]},\"description\":\"get_all_available_apis(mode: str): list[Any]\",\"aggregations\":[]}"}, {"id": "metagpt/environment/base_env.py:ExtEnv:observe"}, {"id": "{\"name\":\"observe\",\"args\":[{\"name\":\"env_action\",\"type_\":\"Union[str,EnvAPIAbstract]\",\"default_\":\"\",\"description\":\"env_action: Union[str, EnvAPIAbstract]\",\"compositions\":[\"EnvAPIAbstract\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"observe(env_action: Union[str, EnvAPIAbstract])\",\"aggregations\":[\"EnvAPIAbstract\"]}"}, {"id": "metagpt/environment/base_env.py:ExtEnv:step"}, {"id": "{\"name\":\"step\",\"args\":[{\"name\":\"env_action\",\"type_\":\"Union[str,Message,EnvAPIAbstract,list[EnvAPIAbstract]]\",\"default_\":\"\",\"description\":\"env_action: Union[str, Message, EnvAPIAbstract, list[EnvAPIAbstract]]\",\"compositions\":[\"EnvAPIAbstract\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"step(env_action: Union[str, Message, EnvAPIAbstract, list[EnvAPIAbstract]])\",\"aggregations\":[\"Message\",\"EnvAPIAbstract\"]}"}, {"id": "?:EnvAPIAbstract"}, {"id": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps"}, {"id": "{\"name\":\"ExtractTimeComps\",\"package\":\"metagpt/tools/libs/feature_engineering.py:ExtractTimeComps\",\"attributes\":{\"time_col\":{\"name\":\"time_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"time_col : str\",\"compositions\":[]},\"time_comps\":{\"name\":\"time_comps\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"time_comps : list\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit (df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:time_col"}, {"id": "{\"name\":\"time_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"time_col : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:time_comps"}, {"id": "{\"name\":\"time_comps\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"time_comps : list\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:fit"}, {"id": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit (df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:transform"}, {"id": "metagpt/document_store/faiss_store.py"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore"}, {"id": "{\"name\":\"FaissStore\",\"package\":\"metagpt/document_store/faiss_store.py:FaissStore\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]},\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]},\"asearch\":{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete ()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[\"OpenAIEmbeddings\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:content_col"}, {"id": "{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:embedding"}, {"id": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:meta_col"}, {"id": "{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:store"}, {"id": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:asearch"}, {"id": "{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:delete"}, {"id": "{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:persist"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:write"}, {"id": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"id": "?:OpenAIEmbeddings"}, {"id": "metagpt/utils/file.py"}, {"id": "metagpt/utils/file.py:File"}, {"id": "{\"name\":\"File\",\"package\":\"metagpt/utils/file.py:File\",\"attributes\":{\"CHUNK_SIZE\":{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}},\"methods\":{\"read\":{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"Path\",\"bytes\"]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"Path\",\"bytes\"]}},\"compositions\":[],\"aggregations\":[\"Path\",\"bytes\"]}"}, {"id": "metagpt/utils/file.py:File:CHUNK_SIZE"}, {"id": "{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/file.py:File:read"}, {"id": "{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"Path\",\"bytes\"]}"}, {"id": "metagpt/utils/file.py:File:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"Path\",\"bytes\"]}"}, {"id": "?:bytes"}, {"id": "metagpt/utils/file_repository.py"}, {"id": "metagpt/utils/file_repository.py:FileRepository"}, {"id": "{\"name\":\"FileRepository\",\"package\":\"metagpt/utils/file_repository.py:FileRepository\",\"attributes\":{\"all_files\":{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]},\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]},\"get_all\":{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]},\"get_change_dir_files\":{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]},\"get_changed_dependency\":{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"new_filename\":{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Document\",\"Path\\\\\"]},\"save_doc\":{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]},\"save_pdf\":{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"Document\\\\\",\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:all_files"}, {"id": "{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:changed_files"}, {"id": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:root_path"}, {"id": "{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:workdir"}, {"id": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_all"}, {"id": "{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files"}, {"id": "{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency"}, {"id": "{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_dependency"}, {"id": "{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:new_filename"}, {"id": "{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Document\",\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_doc"}, {"id": "{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_pdf"}, {"id": "{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"id": "?:Document\\"}, {"id": "metagpt/tools/libs/data_preprocess.py:FillMissingValue"}, {"id": "{\"name\":\"FillMissingValue\",\"package\":\"metagpt/tools/libs/data_preprocess.py:FillMissingValue\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"SimpleImputer\",\"default_\":\"\",\"description\":\"model : SimpleImputer\",\"compositions\":[\"SimpleImputer\"]}},\"methods\":{},\"compositions\":[\"SimpleImputer\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:features"}, {"id": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:model"}, {"id": "{\"name\":\"model\",\"type_\":\"SimpleImputer\",\"default_\":\"\",\"description\":\"model : SimpleImputer\",\"compositions\":[\"SimpleImputer\"]}"}, {"id": "?:SimpleImputer"}, {"id": "metagpt/provider/fireworks_api.py"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager"}, {"id": "{\"name\":\"FireworksCostManager\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"model_grade_token_costs\":{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost"}, {"id": "{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs"}, {"id": "{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost"}, {"id": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"id": "{\"name\":\"FireworksLLM\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksLLM\",\"attributes\":{\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}},\"methods\":{\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens"}, {"id": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs"}, {"id": "metagpt/actions/fix_bug.py"}, {"id": "metagpt/actions/fix_bug.py:FixBug"}, {"id": "{\"name\":\"FixBug\",\"package\":\"metagpt/actions/fix_bug.py:FixBug\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/fix_bug.py:FixBug:name"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator"}, {"id": "{\"name\":\"GPTPromptGenerator\",\"package\":\"metagpt/tools/prompt_writer.py:GPTPromptGenerator\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]},\"gen_chatbot_style\":{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]},\"gen_instruction_style\":{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]},\"gen_query_style\":{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style"}, {"id": "{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style"}, {"id": "{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style"}, {"id": "{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator"}, {"id": "{\"name\":\"GPTvGenerator\",\"package\":\"metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"analyze_layout\":{\"name\":\"analyze_layout\",\"args\":[{\"name\":\"image_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"image_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"analyze_layout(image_path: Path): str\",\"aggregations\":[\"Path\"]},\"generate_webpages\":{\"name\":\"generate_webpages\",\"args\":[{\"name\":\"image_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"image_path: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_webpages(image_path: str): str\",\"aggregations\":[]},\"save_webpages\":{\"name\":\"save_webpages\",\"args\":[{\"name\":\"image_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"image_path: str\",\"compositions\":[]},{\"name\":\"webpages\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"webpages: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"save_webpages(image_path: str, webpages: str): Path\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:llm"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:analyze_layout"}, {"id": "{\"name\":\"analyze_layout\",\"args\":[{\"name\":\"image_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"image_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"analyze_layout(image_path: Path): str\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:generate_webpages"}, {"id": "{\"name\":\"generate_webpages\",\"args\":[{\"name\":\"image_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"image_path: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_webpages(image_path: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:save_webpages"}, {"id": "{\"name\":\"save_webpages\",\"args\":[{\"name\":\"image_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"image_path: str\",\"compositions\":[]},{\"name\":\"webpages\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"webpages: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"save_webpages(image_path: str, webpages: str): Path\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/provider/google_gemini_api.py"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel"}, {"id": "{\"name\":\"GeminiGenerativeModel\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiGenerativeModel\",\"attributes\":{},\"methods\":{\"count_tokens\":{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]},\"count_tokens_async\":{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]}},\"compositions\":[],\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens"}, {"id": "{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async"}, {"id": "{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]}"}, {"id": "?:glm.CountTokensResponse"}, {"id": "?:content_types.ContentsType"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"id": "{\"name\":\"GeminiLLM\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"aget_usage\":{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:pricing_plan"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage"}, {"id": "{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion"}, {"id": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage"}, {"id": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"id": "?:GenerateContentResponse"}, {"id": "metagpt/provider/general_api_requestor.py"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor"}, {"id": "{\"name\":\"GeneralAPIRequestor\",\"package\":\"metagpt/provider/general_api_requestor.py:GeneralAPIRequestor\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GeneralSelection"}, {"id": "{\"name\":\"GeneralSelection\",\"package\":\"metagpt/tools/libs/feature_engineering.py:GeneralSelection\",\"attributes\":{\"feats\":{\"name\":\"feats\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"feats : list\",\"compositions\":[]},\"label_col\":{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:feats"}, {"id": "{\"name\":\"feats\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"feats : list\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:label_col"}, {"id": "{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:transform"}, {"id": "metagpt/actions/generate_questions.py"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions"}, {"id": "{\"name\":\"GenerateQuestions\",\"package\":\"metagpt/actions/generate_questions.py:GenerateQuestions\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}},\"compositions\":[],\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions:name"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/invoice_ocr.py"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"id": "{\"name\":\"GenerateTable\",\"package\":\"metagpt/actions/invoice_ocr.py:GenerateTable\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:language"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:name"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb"}, {"id": "{\"name\":\"GetMessageFromWeb\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb\",\"attributes\":{\"domain\":{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]},\"ret\":{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]},\"spark_api_key\":{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]},\"spark_api_secret\":{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]},\"spark_appid\":{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]},\"text\":{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}},\"methods\":{\"gen_params\":{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]},\"on_close\":{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close (ws, one, two)\",\"aggregations\":[]},\"on_error\":{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]},\"on_message\":{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]},\"on_open\":{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"send\":{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain"}, {"id": "{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret"}, {"id": "{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key"}, {"id": "{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret"}, {"id": "{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid"}, {"id": "{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url"}, {"id": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:text"}, {"id": "{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params"}, {"id": "{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close"}, {"id": "{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close (ws, one, two)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error"}, {"id": "{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message"}, {"id": "{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open"}, {"id": "{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:run"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:send"}, {"id": "{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository"}, {"id": "{\"name\":\"GitRepository\",\"package\":\"metagpt/utils/git_repository.py:GitRepository\",\"attributes\":{\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"is_valid\":{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"add_change\":{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]},\"commit\":{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]},\"delete_repository\":{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]},\"filter_gitignore\":{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]},\"get_files\":{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]},\"is_git_dir\":{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]},\"new_file_repository\":{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"FileRepository\",\"Path\\\\\"]},\"open\":{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]},\"rename_root\":{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"DependencyFile\",\"FileRepository\",\"Path\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:changed_files"}, {"id": "metagpt/utils/git_repository.py:GitRepository:is_valid"}, {"id": "{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:status"}, {"id": "metagpt/utils/git_repository.py:GitRepository:workdir"}, {"id": "metagpt/utils/git_repository.py:GitRepository:add_change"}, {"id": "{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:archive"}, {"id": "{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:commit"}, {"id": "{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:delete_repository"}, {"id": "{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore"}, {"id": "{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:get_dependency"}, {"id": "{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:get_files"}, {"id": "{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:is_git_dir"}, {"id": "{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:new_file_repository"}, {"id": "{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"FileRepository\",\"Path\\\\\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:open"}, {"id": "{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:rename_root"}, {"id": "{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}"}, {"id": "?:DependencyFile"}, {"id": "?:FileRepository"}, {"id": "metagpt/tools/search_engine_googleapi.py"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper"}, {"id": "{\"name\":\"GoogleAPIWrapper\",\"package\":\"metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"cse_id\":{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"google_api_client\":{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]},\"validate_google\":{\"name\":\"validate_google\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_google(values: dict): dict\",\"aggregations\":[]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:cse_id"}, {"id": "{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client"}, {"id": "{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:proxy"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:validate_google"}, {"id": "{\"name\":\"validate_google\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_google(values: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:GoogleDocstringParser"}, {"id": "{\"name\":\"GoogleDocstringParser\",\"package\":\"metagpt/utils/parse_docstring.py:GoogleDocstringParser\",\"attributes\":{\"docstring\":{\"name\":\"docstring\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"docstring : str\",\"compositions\":[]}},\"methods\":{\"check_and_parse_default_value\":{\"name\":\"check_and_parse_default_value\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_default_value(param_desc: str): Tuple[bool, str]\",\"aggregations\":[]},\"check_and_parse_enum\":{\"name\":\"check_and_parse_enum\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_enum(param_desc: str): Tuple[bool, str]\",\"aggregations\":[]},\"check_and_parse_optional\":{\"name\":\"check_and_parse_optional\",\"args\":[{\"name\":\"param_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_optional(param_type: str): Tuple[bool, str]\",\"aggregations\":[]},\"parse_desc\":{\"name\":\"parse_desc\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_desc(): str\",\"aggregations\":[]},\"parse_params\":{\"name\":\"parse_params\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str,str]]\",\"description\":\"list[Tuple[str, str, str]]\",\"compositions\":[]},\"description\":\"parse_params(): list[Tuple[str, str, str]]\",\"aggregations\":[]},\"parse_returns\":{\"name\":\"parse_returns\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str]]\",\"description\":\"list[Tuple[str, str]]\",\"compositions\":[]},\"description\":\"parse_returns(): list[Tuple[str, str]]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:docstring"}, {"id": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_default_value"}, {"id": "{\"name\":\"check_and_parse_default_value\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_default_value(param_desc: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_enum"}, {"id": "{\"name\":\"check_and_parse_enum\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_enum(param_desc: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_optional"}, {"id": "{\"name\":\"check_and_parse_optional\",\"args\":[{\"name\":\"param_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_optional(param_type: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_desc"}, {"id": "{\"name\":\"parse_desc\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_desc(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_params"}, {"id": "{\"name\":\"parse_params\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str,str]]\",\"description\":\"list[Tuple[str, str, str]]\",\"compositions\":[]},\"description\":\"parse_params(): list[Tuple[str, str, str]]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_returns"}, {"id": "{\"name\":\"parse_returns\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str]]\",\"description\":\"list[Tuple[str, str]]\",\"compositions\":[]},\"description\":\"parse_returns(): list[Tuple[str, str]]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword"}, {"id": "{\"name\":\"GraphKeyword\",\"package\":\"metagpt/utils/graph_repository.py:GraphKeyword\",\"attributes\":{\"CLASS\":{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]},\"CLASS_METHOD\":{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]},\"CLASS_PROPERTY\":{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]},\"FUNCTION\":{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]},\"GLOBAL_VARIABLE\":{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]},\"HAS_CLASS\":{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]},\"HAS_CLASS_METHOD\":{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]},\"HAS_CLASS_PROPERTY\":{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]},\"HAS_CLASS_USE_CASE\":{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]},\"HAS_CLASS_VIEW\":{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]},\"HAS_DETAIL\":{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]},\"HAS_FUNCTION\":{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]},\"HAS_PAGE_INFO\":{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]},\"HAS_PARTICIPANT\":{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]},\"HAS_SEQUENCE_VIEW\":{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]},\"HAS_SEQUENCE_VIEW_VER\":{\"name\":\"HAS_SEQUENCE_VIEW_VER\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW_VER : str\",\"compositions\":[]},\"IS\":{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]},\"IS_AGGREGATE_OF\":{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]},\"IS_COMPOSITE_OF\":{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]},\"NULL\":{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]},\"OF\":{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]},\"ON\":{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]},\"SOURCE_CODE\":{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS"}, {"id": "{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD"}, {"id": "{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY"}, {"id": "{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION"}, {"id": "{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE"}, {"id": "{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS"}, {"id": "{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD"}, {"id": "{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY"}, {"id": "{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE"}, {"id": "{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW"}, {"id": "{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL"}, {"id": "{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION"}, {"id": "{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO"}, {"id": "{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT"}, {"id": "{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW"}, {"id": "{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW_VER"}, {"id": "{\"name\":\"HAS_SEQUENCE_VIEW_VER\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW_VER : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS"}, {"id": "{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF"}, {"id": "{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF"}, {"id": "{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:NULL"}, {"id": "{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:OF"}, {"id": "{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:ON"}, {"id": "{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE"}, {"id": "{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository"}, {"id": "{\"name\":\"GraphRepository\",\"package\":\"metagpt/utils/graph_repository.py:GraphRepository\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete (subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert (subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"rebuild_composition_relationship\":{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save ()\",\"aggregations\":[]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select (subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]},\"update_graph_db_with_class_relationship_views\":{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]},\"update_graph_db_with_class_views\":{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]},\"update_graph_db_with_file_info\":{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}},\"compositions\":[],\"aggregations\":[\"GraphRepository\",\"SPO\",\"DotClassRelationship\",\"DotClassInfo\",\"RepoFileInfo\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:name"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete (subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:insert"}, {"id": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert (subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship"}, {"id": "{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save ()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:select"}, {"id": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select (subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views"}, {"id": "{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views"}, {"id": "{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info"}, {"id": "{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}"}, {"id": "?:DotClassRelationship"}, {"id": "?:DotClassInfo"}, {"id": "?:RepoFileInfo"}, {"id": "metagpt/tools/libs/feature_engineering.py:GroupStat"}, {"id": "{\"name\":\"GroupStat\",\"package\":\"metagpt/tools/libs/feature_engineering.py:GroupStat\",\"attributes\":{\"agg_col\":{\"name\":\"agg_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"agg_col : str\",\"compositions\":[]},\"agg_funcs\":{\"name\":\"agg_funcs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"agg_funcs : list\",\"compositions\":[]},\"group_col\":{\"name\":\"group_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"group_col : str\",\"compositions\":[]},\"group_df\":{\"name\":\"group_df\",\"type_\":\"\",\"default_\":\"\",\"description\":\"group_df : NoneType\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GroupStat:agg_col"}, {"id": "{\"name\":\"agg_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"agg_col : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GroupStat:agg_funcs"}, {"id": "{\"name\":\"agg_funcs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"agg_funcs : list\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GroupStat:group_col"}, {"id": "{\"name\":\"group_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"group_col : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GroupStat:group_df"}, {"id": "{\"name\":\"group_df\",\"type_\":\"\",\"default_\":\"\",\"description\":\"group_df : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:GroupStat:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:GroupStat:transform"}, {"id": "metagpt/utils/human_interaction.py"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction"}, {"id": "{\"name\":\"HumanInteraction\",\"package\":\"metagpt/utils/human_interaction.py:HumanInteraction\",\"attributes\":{\"stop_list\":{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}},\"methods\":{\"check_input_type\":{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]},\"input_num_until_valid\":{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]},\"input_until_valid\":{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]},\"interact_with_instruct_content\":{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]},\"multilines_input\":{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[\"tuple\"],\"aggregations\":[\"Type\",\"BaseModel\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list"}, {"id": "{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type"}, {"id": "{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid"}, {"id": "{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid"}, {"id": "{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content"}, {"id": "{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input"}, {"id": "{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py"}, {"id": "metagpt/provider/human_provider.py:HumanProvider"}, {"id": "{\"name\":\"HumanProvider\",\"package\":\"metagpt/provider/human_provider.py:HumanProvider\",\"attributes\":{\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:system_prompt"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:ask"}, {"id": "{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS"}, {"id": "{\"name\":\"IFlyTekTTS\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTS\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}},\"methods\":{\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech"}, {"id": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse"}, {"id": "{\"name\":\"IFlyTekTTSResponse\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]},\"sid\":{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AudioData\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code"}, {"id": "{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data"}, {"id": "{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message"}, {"id": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid"}, {"id": "{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}"}, {"id": "?:AudioData"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus"}, {"id": "{\"name\":\"IFlyTekTTSStatus\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name"}, {"id": "metagpt/strategy/solver.py:IOSolver"}, {"id": "{\"name\":\"IOSolver\",\"package\":\"metagpt/strategy/solver.py:IOSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:IOSolver:solve"}, {"id": "metagpt/tools/metagpt_text_to_image.py"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult"}, {"id": "{\"name\":\"ImageResult\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult\",\"attributes\":{\"images\":{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images"}, {"id": "{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters"}, {"id": "{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument"}, {"id": "{\"name\":\"IndexableDocument\",\"package\":\"metagpt/document.py:IndexableDocument\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]},\"get_docs_and_metadatas\":{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}},\"compositions\":[\"pd.DataFrame\"],\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:IndexableDocument:content_col"}, {"id": "{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument:data"}, {"id": "{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/document.py:IndexableDocument:meta_col"}, {"id": "{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument:model_config"}, {"id": "metagpt/document.py:IndexableDocument:from_path"}, {"id": "{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas"}, {"id": "{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData"}, {"id": "{\"name\":\"InvoiceData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceData\",\"attributes\":{\"invoice_data\":{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data"}, {"id": "{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR"}, {"id": "{\"name\":\"InvoiceOCR\",\"package\":\"metagpt/actions/invoice_ocr.py:InvoiceOCR\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant"}, {"id": "{\"name\":\"InvoiceOCRAssistant\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"orc_data\":{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]},\"origin_query\":{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data"}, {"id": "{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query"}, {"id": "{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath"}, {"id": "{\"name\":\"InvoicePath\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoicePath\",\"attributes\":{\"file_path\":{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path"}, {"id": "{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder"}, {"id": "{\"name\":\"KFoldTargetMeanEncoder\",\"package\":\"metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder\",\"attributes\":{\"col\":{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]},\"encoder_dict\":{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label : str\",\"compositions\":[]},\"n_splits\":{\"name\":\"n_splits\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_splits : int\",\"compositions\":[]},\"random_state\":{\"name\":\"random_state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"random_state : int\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:col"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:encoder_dict"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:label"}, {"id": "{\"name\":\"label\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:n_splits"}, {"id": "{\"name\":\"n_splits\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_splits : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:random_state"}, {"id": "{\"name\":\"random_state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"random_state : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:transform"}, {"id": "metagpt/configs/llm_config.py"}, {"id": "metagpt/configs/llm_config.py:LLMConfig"}, {"id": "{\"name\":\"LLMConfig\",\"package\":\"metagpt/configs/llm_config.py:LLMConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]},\"best_of\":{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]},\"calc_usage\":{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]},\"domain\":{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]},\"frequency_penalty\":{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]},\"logprobs\":{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]},\"max_token\":{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"n\":{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]},\"presence_penalty\":{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"pricing_plan : Optional[str]\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"repetition_penalty\":{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]},\"stop\":{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]},\"stream\":{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]},\"temperature\":{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]},\"timeout\":{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]},\"top_k\":{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]},\"top_logprobs\":{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]},\"top_p\":{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}},\"methods\":{\"check_llm_key\":{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_key"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"id": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_version"}, {"id": "{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:base_url"}, {"id": "{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:best_of"}, {"id": "{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:calc_usage"}, {"id": "{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:domain"}, {"id": "{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty"}, {"id": "{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:logprobs"}, {"id": "{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:max_token"}, {"id": "{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:model"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:n"}, {"id": "{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty"}, {"id": "{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:pricing_plan"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:proxy"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty"}, {"id": "{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:stop"}, {"id": "{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:stream"}, {"id": "{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:temperature"}, {"id": "{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:timeout"}, {"id": "{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_k"}, {"id": "{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs"}, {"id": "{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_p"}, {"id": "{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key"}, {"id": "{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/llm_provider_registry.py"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry"}, {"id": "{\"name\":\"LLMProviderRegistry\",\"package\":\"metagpt/provider/llm_provider_registry.py:LLMProviderRegistry\",\"attributes\":{\"providers\":{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}},\"methods\":{\"get_provider\":{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]},\"register\":{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"LLMType\"]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers"}, {"id": "{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider"}, {"id": "{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register"}, {"id": "{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}"}, {"id": "?:LLMType"}, {"id": "metagpt/configs/llm_config.py:LLMType"}, {"id": "{\"name\":\"LLMType\",\"package\":\"metagpt/configs/llm_config.py:LLMType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMType:name"}, {"id": "metagpt/tools/libs/data_preprocess.py:LabelEncode"}, {"id": "{\"name\":\"LabelEncode\",\"package\":\"metagpt/tools/libs/data_preprocess.py:LabelEncode\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"le_encoders\":{\"name\":\"le_encoders\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"le_encoders : list\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:LabelEncode:features"}, {"id": "metagpt/tools/libs/data_preprocess.py:LabelEncode:le_encoders"}, {"id": "{\"name\":\"le_encoders\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"le_encoders : list\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:LabelEncode:fit"}, {"id": "metagpt/tools/libs/data_preprocess.py:LabelEncode:transform"}, {"id": "metagpt/document_store/lancedb_store.py"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore"}, {"id": "{\"name\":\"LanceStore\",\"package\":\"metagpt/document_store/lancedb_store.py:LanceStore\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"table\":{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"drop\":{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\",\"LanceTable\",\"RemoteTable\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:db"}, {"id": "{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:name"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:table"}, {"id": "{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:delete"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:drop"}, {"id": "{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:persist"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}"}, {"id": "?:LanceDBConnection"}, {"id": "?:RemoteDBConnection"}, {"id": "?:LanceTable"}, {"id": "?:RemoteTable"}, {"id": "metagpt/document_store/base_store.py:LocalStore"}, {"id": "{\"name\":\"LocalStore\",\"package\":\"metagpt/document_store/base_store.py:LocalStore\",\"attributes\":{\"cache_dir\":{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]},\"fname\":{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]},\"raw_data_path\":{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:cache_dir"}, {"id": "{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:fname"}, {"id": "{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:raw_data_path"}, {"id": "{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:store"}, {"id": "metagpt/memory/longterm_memory.py"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"id": "{\"name\":\"LongTermMemory\",\"package\":\"metagpt/memory/longterm_memory.py:LongTermMemory\",\"attributes\":{\"memory_storage\":{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_from_recover\":{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}},\"compositions\":[\"RoleContext\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"id": "{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover"}, {"id": "{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"id": "{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:clear"}, {"id": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news"}, {"id": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory"}, {"id": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}"}, {"id": "?:RoleContext"}, {"id": "metagpt/strategy/tot.py:MCTSSolver"}, {"id": "{\"name\":\"MCTSSolver\",\"package\":\"metagpt/strategy/tot.py:MCTSSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:MCTSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"id": "{\"name\":\"MLProcess\",\"package\":\"metagpt/tools/libs/data_preprocess.py:MLProcess\",\"attributes\":{},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit (df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"fit_transform\":{\"name\":\"fit_transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"fit_transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform (df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:MLProcess:fit"}, {"id": "metagpt/tools/libs/data_preprocess.py:MLProcess:fit_transform"}, {"id": "{\"name\":\"fit_transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"fit_transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:MLProcess:transform"}, {"id": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform (df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale"}, {"id": "{\"name\":\"MaxAbsScale\",\"package\":\"metagpt/tools/libs/data_preprocess.py:MaxAbsScale\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"MaxAbsScaler\",\"default_\":\"\",\"description\":\"model : MaxAbsScaler\",\"compositions\":[\"MaxAbsScaler\"]}},\"methods\":{},\"compositions\":[\"MaxAbsScaler\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:features"}, {"id": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:model"}, {"id": "{\"name\":\"model\",\"type_\":\"MaxAbsScaler\",\"default_\":\"\",\"description\":\"model : MaxAbsScaler\",\"compositions\":[\"MaxAbsScaler\"]}"}, {"id": "?:MaxAbsScaler"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine"}, {"id": "{\"name\":\"MeilisearchEngine\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}},\"methods\":{\"add_documents\":{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]},\"set_index\":{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}},\"compositions\":[\"Client\"],\"aggregations\":[\"DataSource\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client"}, {"id": "{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents"}, {"id": "{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index"}, {"id": "{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}"}, {"id": "?:Client"}, {"id": "?:DataSource"}, {"id": "metagpt/memory/memory.py"}, {"id": "metagpt/memory/memory.py:Memory"}, {"id": "{\"name\":\"Memory\",\"package\":\"metagpt/memory/memory.py:Memory\",\"attributes\":{\"ignore_id\":{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]},\"storage\":{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"add_batch\":{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"count\":{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"delete_newest\":{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_action\":{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_actions\":{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_content\":{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_role\":{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]},\"try_remember\":{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\"]}"}, {"id": "metagpt/memory/memory.py:Memory:ignore_id"}, {"id": "{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory.py:Memory:index"}, {"id": "{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]}"}, {"id": "metagpt/memory/memory.py:Memory:storage"}, {"id": "{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}"}, {"id": "metagpt/memory/memory.py:Memory:add"}, {"id": "metagpt/memory/memory.py:Memory:add_batch"}, {"id": "{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]}"}, {"id": "metagpt/memory/memory.py:Memory:clear"}, {"id": "metagpt/memory/memory.py:Memory:count"}, {"id": "{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]}"}, {"id": "metagpt/memory/memory.py:Memory:delete"}, {"id": "metagpt/memory/memory.py:Memory:delete_newest"}, {"id": "{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:find_news"}, {"id": "metagpt/memory/memory.py:Memory:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_action"}, {"id": "{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_actions"}, {"id": "{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_content"}, {"id": "{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_role"}, {"id": "{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:try_remember"}, {"id": "{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "?:DefaultDict"}, {"id": "metagpt/memory/memory_storage.py"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage"}, {"id": "{\"name\":\"MemoryStorage\",\"package\":\"metagpt/memory/memory_storage.py:MemoryStorage\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"is_initialized\":{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]},\"mem_ttl\":{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]},\"role_mem_path\":{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]},\"threshold\":{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]},\"clean\":{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]},\"search_dissimilar\":{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"OpenAIEmbeddings\",\"Path\",\"FAISS\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:embedding"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized"}, {"id": "{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl"}, {"id": "{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:role_id"}, {"id": "{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path"}, {"id": "{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:store"}, {"id": "{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:threshold"}, {"id": "{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:clean"}, {"id": "{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:persist"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory"}, {"id": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar"}, {"id": "{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "?:FAISS"}, {"id": "metagpt/configs/mermaid_config.py"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig"}, {"id": "{\"name\":\"MermaidConfig\",\"package\":\"metagpt/configs/mermaid_config.py:MermaidConfig\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]},\"pyppeteer_path\":{\"name\":\"pyppeteer_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_path : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:engine"}, {"id": "{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]}"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:path"}, {"id": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config"}, {"id": "{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:pyppeteer_path"}, {"id": "{\"name\":\"pyppeteer_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_path : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message"}, {"id": "{\"name\":\"Message\",\"package\":\"metagpt/schema.py:Message\",\"attributes\":{\"cause_by\":{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"id\":{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]},\"send_to\":{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]},\"sent_from\":{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}},\"methods\":{\"check_cause_by\":{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]},\"check_id\":{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]},\"check_instruct_content\":{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]},\"check_send_to\":{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]},\"check_sent_from\":{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]},\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]},\"ser_instruct_content\":{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:cause_by"}, {"id": "{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:content"}, {"id": "metagpt/schema.py:Message:id"}, {"id": "{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:instruct_content"}, {"id": "{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:role"}, {"id": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:send_to"}, {"id": "{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:sent_from"}, {"id": "{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:check_cause_by"}, {"id": "{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_id"}, {"id": "{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_instruct_content"}, {"id": "{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:check_send_to"}, {"id": "{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_sent_from"}, {"id": "{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:dump"}, {"id": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:ser_instruct_content"}, {"id": "{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:to_dict"}, {"id": "{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:MessageQueue"}, {"id": "{\"name\":\"MessageQueue\",\"package\":\"metagpt/schema.py:MessageQueue\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"empty\":{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]},\"pop\":{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"pop_all\":{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]},\"push\":{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"MessageQueue\",\"Message\\\\\",\"Message\"]}"}, {"id": "metagpt/schema.py:MessageQueue:model_config"}, {"id": "metagpt/schema.py:MessageQueue:dump"}, {"id": "metagpt/schema.py:MessageQueue:empty"}, {"id": "{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:MessageQueue:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]}"}, {"id": "metagpt/schema.py:MessageQueue:pop"}, {"id": "{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"id": "metagpt/schema.py:MessageQueue:pop_all"}, {"id": "{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/schema.py:MessageQueue:push"}, {"id": "{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "?:MessageQueue"}, {"id": "?:Message\\"}, {"id": "metagpt/roles/assistant.py:MessageType"}, {"id": "{\"name\":\"MessageType\",\"package\":\"metagpt/roles/assistant.py:MessageType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:MessageType:name"}, {"id": "metagpt/provider/metagpt_api.py"}, {"id": "metagpt/provider/metagpt_api.py:MetaGPTLLM"}, {"id": "{\"name\":\"MetaGPTLLM\",\"package\":\"metagpt/provider/metagpt_api.py:MetaGPTLLM\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image"}, {"id": "{\"name\":\"MetaGPTText2Image\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image\",\"attributes\":{\"model_url\":{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}},\"methods\":{\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url"}, {"id": "{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image"}, {"id": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py"}, {"id": "metagpt/strategy/tot_schema.py:MethodSelect"}, {"id": "{\"name\":\"MethodSelect\",\"package\":\"metagpt/strategy/tot_schema.py:MethodSelect\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:MethodSelect:name"}, {"id": "metagpt/tools/libs/data_preprocess.py:MinMaxScale"}, {"id": "{\"name\":\"MinMaxScale\",\"package\":\"metagpt/tools/libs/data_preprocess.py:MinMaxScale\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"MinMaxScaler\",\"default_\":\"\",\"description\":\"model : MinMaxScaler\",\"compositions\":[\"MinMaxScaler\"]}},\"methods\":{},\"compositions\":[\"MinMaxScaler\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:features"}, {"id": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:model"}, {"id": "{\"name\":\"model\",\"type_\":\"MinMaxScaler\",\"default_\":\"\",\"description\":\"model : MinMaxScaler\",\"compositions\":[\"MinMaxScaler\"]}"}, {"id": "?:MinMaxScaler"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv"}, {"id": "{\"name\":\"MincraftEnv\",\"package\":\"metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv\",\"attributes\":{\"chest_memory\":{\"name\":\"chest_memory\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"chest_memory : dict[str, Any]\",\"compositions\":[]},\"chest_observation\":{\"name\":\"chest_observation\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chest_observation : str\",\"compositions\":[]},\"code\":{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]},\"completed_tasks\":{\"name\":\"completed_tasks\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"completed_tasks : list[str]\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"critique\":{\"name\":\"critique\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"critique : str\",\"compositions\":[]},\"current_task\":{\"name\":\"current_task\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_task : str\",\"compositions\":[]},\"event\":{\"name\":\"event\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"event : dict[str, Any]\",\"compositions\":[]},\"event_summary\":{\"name\":\"event_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"event_summary : str\",\"compositions\":[]},\"failed_tasks\":{\"name\":\"failed_tasks\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"failed_tasks : list[str]\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"program_code\":{\"name\":\"program_code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_code : str\",\"compositions\":[]},\"program_name\":{\"name\":\"program_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_name : str\",\"compositions\":[]},\"programs\":{\"name\":\"programs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"programs\",\"compositions\":[]},\"progress\":{\"name\":\"progress\",\"type_\":\"\",\"default_\":\"\",\"description\":\"progress\",\"compositions\":[]},\"qa_cache\":{\"name\":\"qa_cache\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"qa_cache : dict[str, str]\",\"compositions\":[]},\"qa_cache_questions_vectordb\":{\"name\":\"qa_cache_questions_vectordb\",\"type_\":\"\",\"default_\":\"\",\"description\":\"qa_cache_questions_vectordb\",\"compositions\":[]},\"retrieve_skills\":{\"name\":\"retrieve_skills\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"retrieve_skills : list[str]\",\"compositions\":[]},\"runtime_status\":{\"name\":\"runtime_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"runtime_status : bool\",\"compositions\":[]},\"skill_desp\":{\"name\":\"skill_desp\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_desp : str\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"skills : dict\",\"compositions\":[]},\"task_execution_time\":{\"name\":\"task_execution_time\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"task_execution_time : float\",\"compositions\":[]},\"vectordb\":{\"name\":\"vectordb\",\"type_\":\"\",\"default_\":\"\",\"description\":\"vectordb\",\"compositions\":[]}},\"methods\":{\"append_skill\":{\"name\":\"append_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"skill: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"append_skill(skill: dict)\",\"aggregations\":[]},\"on_event_execute\":{\"name\":\"on_event_execute\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_event_execute()\",\"aggregations\":[]},\"on_event_retrieve\":{\"name\":\"on_event_retrieve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_event_retrieve()\",\"aggregations\":[]},\"register_roles\":{\"name\":\"register_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Minecraft]\",\"default_\":\"\",\"description\":\"roles: Iterable['Minecraft']\",\"compositions\":[\"Iterable\",\"Minecraft\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register_roles(roles: Iterable['Minecraft'])\",\"aggregations\":[\"Minecraft\",\"Iterable\"]},\"reset_block_info\":{\"name\":\"reset_block_info\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset_block_info ()\",\"aggregations\":[]},\"save_sorted_tasks\":{\"name\":\"save_sorted_tasks\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_sorted_tasks()\",\"aggregations\":[]},\"set_mc_port\":{\"name\":\"set_mc_port\",\"args\":[{\"name\":\"mc_port\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mc_port\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_port(mc_port)\",\"aggregations\":[]},\"set_mc_resume\":{\"name\":\"set_mc_resume\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_resume()\",\"aggregations\":[]},\"summarize_chatlog\":{\"name\":\"summarize_chatlog\",\"args\":[{\"name\":\"events\",\"type_\":\"\",\"default_\":\"\",\"description\":\"events\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_chatlog(events)\",\"aggregations\":[]},\"update_chest_memory\":{\"name\":\"update_chest_memory\",\"args\":[{\"name\":\"events\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"events: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_chest_memory(events: dict)\",\"aggregations\":[]},\"update_chest_observation\":{\"name\":\"update_chest_observation\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_chest_observation()\",\"aggregations\":[]},\"update_code\":{\"name\":\"update_code\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_code(code: str)\",\"aggregations\":[]},\"update_context\":{\"name\":\"update_context\",\"args\":[{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_context(context: str)\",\"aggregations\":[]},\"update_critique\":{\"name\":\"update_critique\",\"args\":[{\"name\":\"critique\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"critique: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_critique(critique: str)\",\"aggregations\":[]},\"update_event\":{\"name\":\"update_event\",\"args\":[{\"name\":\"event\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"event: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_event(event: dict)\",\"aggregations\":[]},\"update_exploration_progress\":{\"name\":\"update_exploration_progress\",\"args\":[{\"name\":\"success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"success: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_exploration_progress(success: bool)\",\"aggregations\":[]},\"update_program_code\":{\"name\":\"update_program_code\",\"args\":[{\"name\":\"program_code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_code: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_program_code(program_code: str)\",\"aggregations\":[]},\"update_program_name\":{\"name\":\"update_program_name\",\"args\":[{\"name\":\"program_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_program_name(program_name: str)\",\"aggregations\":[]},\"update_qa_cache\":{\"name\":\"update_qa_cache\",\"args\":[{\"name\":\"qa_cache\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"qa_cache: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_qa_cache(qa_cache: dict)\",\"aggregations\":[]},\"update_retrieve_skills\":{\"name\":\"update_retrieve_skills\",\"args\":[{\"name\":\"retrieve_skills\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"retrieve_skills: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_retrieve_skills(retrieve_skills: list)\",\"aggregations\":[]},\"update_skill_desp\":{\"name\":\"update_skill_desp\",\"args\":[{\"name\":\"skill_desp\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_desp: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_skill_desp(skill_desp: str)\",\"aggregations\":[]},\"update_task\":{\"name\":\"update_task\",\"args\":[{\"name\":\"task\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_task(task: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Minecraft\",\"Iterable\"]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:chest_memory"}, {"id": "{\"name\":\"chest_memory\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"chest_memory : dict[str, Any]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:chest_observation"}, {"id": "{\"name\":\"chest_observation\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chest_observation : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:code"}, {"id": "{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:completed_tasks"}, {"id": "{\"name\":\"completed_tasks\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"completed_tasks : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:context"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:critique"}, {"id": "{\"name\":\"critique\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"critique : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:current_task"}, {"id": "{\"name\":\"current_task\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_task : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:event"}, {"id": "{\"name\":\"event\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"event : dict[str, Any]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:event_summary"}, {"id": "{\"name\":\"event_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"event_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:failed_tasks"}, {"id": "{\"name\":\"failed_tasks\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"failed_tasks : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:model_config"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:program_code"}, {"id": "{\"name\":\"program_code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_code : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:program_name"}, {"id": "{\"name\":\"program_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_name : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:programs"}, {"id": "{\"name\":\"programs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"programs\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:progress"}, {"id": "{\"name\":\"progress\",\"type_\":\"\",\"default_\":\"\",\"description\":\"progress\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:qa_cache"}, {"id": "{\"name\":\"qa_cache\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"qa_cache : dict[str, str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:qa_cache_questions_vectordb"}, {"id": "{\"name\":\"qa_cache_questions_vectordb\",\"type_\":\"\",\"default_\":\"\",\"description\":\"qa_cache_questions_vectordb\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:retrieve_skills"}, {"id": "{\"name\":\"retrieve_skills\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"retrieve_skills : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:runtime_status"}, {"id": "{\"name\":\"runtime_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"runtime_status : bool\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:skill_desp"}, {"id": "{\"name\":\"skill_desp\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_desp : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:skills"}, {"id": "{\"name\":\"skills\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"skills : dict\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:task_execution_time"}, {"id": "{\"name\":\"task_execution_time\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"task_execution_time : float\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:vectordb"}, {"id": "{\"name\":\"vectordb\",\"type_\":\"\",\"default_\":\"\",\"description\":\"vectordb\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:append_skill"}, {"id": "{\"name\":\"append_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"skill: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"append_skill(skill: dict)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:on_event_execute"}, {"id": "{\"name\":\"on_event_execute\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_event_execute()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:on_event_retrieve"}, {"id": "{\"name\":\"on_event_retrieve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_event_retrieve()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:register_roles"}, {"id": "{\"name\":\"register_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Minecraft]\",\"default_\":\"\",\"description\":\"roles: Iterable['Minecraft']\",\"compositions\":[\"Iterable\",\"Minecraft\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register_roles(roles: Iterable['Minecraft'])\",\"aggregations\":[\"Minecraft\",\"Iterable\"]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:reset_block_info"}, {"id": "{\"name\":\"reset_block_info\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset_block_info ()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:save_sorted_tasks"}, {"id": "{\"name\":\"save_sorted_tasks\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_sorted_tasks()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:set_mc_port"}, {"id": "{\"name\":\"set_mc_port\",\"args\":[{\"name\":\"mc_port\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mc_port\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_port(mc_port)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:set_mc_resume"}, {"id": "{\"name\":\"set_mc_resume\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_resume()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:summarize_chatlog"}, {"id": "{\"name\":\"summarize_chatlog\",\"args\":[{\"name\":\"events\",\"type_\":\"\",\"default_\":\"\",\"description\":\"events\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_chatlog(events)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_chest_memory"}, {"id": "{\"name\":\"update_chest_memory\",\"args\":[{\"name\":\"events\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"events: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_chest_memory(events: dict)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_chest_observation"}, {"id": "{\"name\":\"update_chest_observation\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_chest_observation()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_code"}, {"id": "{\"name\":\"update_code\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_code(code: str)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_context"}, {"id": "{\"name\":\"update_context\",\"args\":[{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_context(context: str)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_critique"}, {"id": "{\"name\":\"update_critique\",\"args\":[{\"name\":\"critique\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"critique: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_critique(critique: str)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_event"}, {"id": "{\"name\":\"update_event\",\"args\":[{\"name\":\"event\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"event: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_event(event: dict)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_exploration_progress"}, {"id": "{\"name\":\"update_exploration_progress\",\"args\":[{\"name\":\"success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"success: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_exploration_progress(success: bool)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_program_code"}, {"id": "{\"name\":\"update_program_code\",\"args\":[{\"name\":\"program_code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_code: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_program_code(program_code: str)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_program_name"}, {"id": "{\"name\":\"update_program_name\",\"args\":[{\"name\":\"program_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_program_name(program_name: str)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_qa_cache"}, {"id": "{\"name\":\"update_qa_cache\",\"args\":[{\"name\":\"qa_cache\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"qa_cache: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_qa_cache(qa_cache: dict)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_retrieve_skills"}, {"id": "{\"name\":\"update_retrieve_skills\",\"args\":[{\"name\":\"retrieve_skills\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"retrieve_skills: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_retrieve_skills(retrieve_skills: list)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_skill_desp"}, {"id": "{\"name\":\"update_skill_desp\",\"args\":[{\"name\":\"skill_desp\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_desp: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_skill_desp(skill_desp: str)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_task"}, {"id": "{\"name\":\"update_task\",\"args\":[{\"name\":\"task\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_task(task: str)\",\"aggregations\":[]}"}, {"id": "?:Minecraft"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv"}, {"id": "{\"name\":\"MincraftExtEnv\",\"package\":\"metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv\",\"attributes\":{\"connected\":{\"name\":\"connected\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"connected : bool\",\"compositions\":[]},\"has_reset\":{\"name\":\"has_reset\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"has_reset : bool\",\"compositions\":[]},\"mc_port\":{\"name\":\"mc_port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"mc_port : Optional[int]\",\"compositions\":[]},\"mineflayer\":{\"name\":\"mineflayer\",\"type_\":\"Optional[SubprocessMonitor]\",\"default_\":\"\",\"description\":\"mineflayer : Optional[SubprocessMonitor]\",\"compositions\":[\"SubprocessMonitor\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"request_timeout\":{\"name\":\"request_timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"request_timeout : int\",\"compositions\":[]},\"reset_options\":{\"name\":\"reset_options\",\"type_\":\"Optional[dict]\",\"default_\":\"\",\"description\":\"reset_options : Optional[dict]\",\"compositions\":[]},\"server\":{\"name\":\"server\",\"type_\":\"\",\"default_\":\"\",\"description\":\"server\",\"compositions\":[]},\"server_host\":{\"name\":\"server_host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"server_host : str\",\"compositions\":[]},\"server_paused\":{\"name\":\"server_paused\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"server_paused : bool\",\"compositions\":[]},\"server_port\":{\"name\":\"server_port\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"server_port : str\",\"compositions\":[]},\"warm_up\":{\"name\":\"warm_up\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"warm_up : dict\",\"compositions\":[]}},\"methods\":{\"check_process\":{\"name\":\"check_process\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"check_process(): dict\",\"aggregations\":[]},\"close\":{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"close(): bool\",\"aggregations\":[]},\"pause\":{\"name\":\"pause\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"pause(): bool\",\"aggregations\":[]},\"reset\":{\"name\":\"reset\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"reset(): dict\",\"aggregations\":[]},\"set_mc_port\":{\"name\":\"set_mc_port\",\"args\":[{\"name\":\"mc_port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mc_port: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_port(mc_port: int)\",\"aggregations\":[]},\"step\":{\"name\":\"step\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"programs\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"programs: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"step(code: str, programs: str): dict\",\"aggregations\":[]},\"unpause\":{\"name\":\"unpause\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"unpause(): bool\",\"aggregations\":[]}},\"compositions\":[\"SubprocessMonitor\"],\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:connected"}, {"id": "{\"name\":\"connected\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"connected : bool\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:has_reset"}, {"id": "{\"name\":\"has_reset\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"has_reset : bool\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mc_port"}, {"id": "{\"name\":\"mc_port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"mc_port : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mineflayer"}, {"id": "{\"name\":\"mineflayer\",\"type_\":\"Optional[SubprocessMonitor]\",\"default_\":\"\",\"description\":\"mineflayer : Optional[SubprocessMonitor]\",\"compositions\":[\"SubprocessMonitor\"]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:model_config"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:request_timeout"}, {"id": "{\"name\":\"request_timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"request_timeout : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:reset_options"}, {"id": "{\"name\":\"reset_options\",\"type_\":\"Optional[dict]\",\"default_\":\"\",\"description\":\"reset_options : Optional[dict]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server"}, {"id": "{\"name\":\"server\",\"type_\":\"\",\"default_\":\"\",\"description\":\"server\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_host"}, {"id": "{\"name\":\"server_host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"server_host : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_paused"}, {"id": "{\"name\":\"server_paused\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"server_paused : bool\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_port"}, {"id": "{\"name\":\"server_port\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"server_port : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:warm_up"}, {"id": "{\"name\":\"warm_up\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"warm_up : dict\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:check_process"}, {"id": "{\"name\":\"check_process\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"check_process(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:close"}, {"id": "{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"close(): bool\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:pause"}, {"id": "{\"name\":\"pause\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"pause(): bool\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:reset"}, {"id": "{\"name\":\"reset\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"reset(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:set_mc_port"}, {"id": "{\"name\":\"set_mc_port\",\"args\":[{\"name\":\"mc_port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mc_port: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_port(mc_port: int)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:step"}, {"id": "{\"name\":\"step\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"programs\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"programs: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"step(code: str, programs: str): dict\",\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:unpause"}, {"id": "{\"name\":\"unpause\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"unpause(): bool\",\"aggregations\":[]}"}, {"id": "?:SubprocessMonitor"}, {"id": "metagpt/tools/moderation.py"}, {"id": "metagpt/tools/moderation.py:Moderation"}, {"id": "{\"name\":\"Moderation\",\"package\":\"metagpt/tools/moderation.py:Moderation\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"amoderation_with_categories\":{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]},\"handle_moderation_results\":{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:llm"}, {"id": "metagpt/tools/moderation.py:Moderation:amoderation"}, {"id": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories"}, {"id": "{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:handle_moderation_results"}, {"id": "{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:NaiveSolver"}, {"id": "{\"name\":\"NaiveSolver\",\"package\":\"metagpt/strategy/solver.py:NaiveSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:NaiveSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException"}, {"id": "{\"name\":\"NoMoneyException\",\"package\":\"metagpt/utils/common.py:NoMoneyException\",\"attributes\":{\"amount\":{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException:amount"}, {"id": "{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException:message"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:OCRResults"}, {"id": "{\"name\":\"OCRResults\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:OCRResults\",\"attributes\":{\"ocr_result\":{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result"}, {"id": "{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"id": "{\"name\":\"OllamaLLM\",\"package\":\"metagpt/provider/ollama_api.py:OllamaLLM\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"http_method\":{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]},\"suffix_url\":{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:cost_manager"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:http_method"}, {"id": "{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:model"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:pricing_plan"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url"}, {"id": "{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage"}, {"id": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:OneHotEncode"}, {"id": "{\"name\":\"OneHotEncode\",\"package\":\"metagpt/tools/libs/data_preprocess.py:OneHotEncode\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"OneHotEncoder\",\"default_\":\"\",\"description\":\"model : OneHotEncoder\",\"compositions\":[\"OneHotEncoder\"]}},\"methods\":{\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[\"OneHotEncoder\"],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:features"}, {"id": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:model"}, {"id": "{\"name\":\"model\",\"type_\":\"OneHotEncoder\",\"default_\":\"\",\"description\":\"model : OneHotEncoder\",\"compositions\":[\"OneHotEncoder\"]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:transform"}, {"id": "?:OneHotEncoder"}, {"id": "metagpt/provider/openai_api.py"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM"}, {"id": "{\"name\":\"OpenAILLM\",\"package\":\"metagpt/provider/openai_api.py:OpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]},\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}},\"methods\":{\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: list[dict]): dict\",\"aggregations\":[]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"aspeech_to_text\":{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]},\"atext_to_speech\":{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]},\"gen_image\":{\"name\":\"gen_image\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"size\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"size: str\",\"compositions\":[]},{\"name\":\"quality\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"quality: str\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]},{\"name\":\"resp_format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list['Image']\",\"description\":\"list['Image']\",\"compositions\":[\"Image\"]},\"description\":\"gen_image(prompt: str, size: str, quality: str, model: str, resp_format: str): list['Image']\",\"aggregations\":[\"Image\"]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"ChatCompletion\",\"Image\",\"Costs\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:model"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:pricing_plan"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aask_code"}, {"id": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: list[dict]): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:amoderation"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text"}, {"id": "{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech"}, {"id": "{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:gen_image"}, {"id": "{\"name\":\"gen_image\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"size\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"size: str\",\"compositions\":[]},{\"name\":\"quality\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"quality: str\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]},{\"name\":\"resp_format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list['Image']\",\"description\":\"list['Image']\",\"compositions\":[\"Image\"]},\"description\":\"gen_image(prompt: str, size: str, quality: str, model: str, resp_format: str): list['Image']\",\"aggregations\":[\"Image\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments"}, {"id": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_costs"}, {"id": "?:ChatCompletion"}, {"id": "?:Image"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse"}, {"id": "{\"name\":\"OpenAIResponse\",\"package\":\"metagpt/provider/general_api_base.py:OpenAIResponse\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},\"operation_location\":{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]},\"request_id\":{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]},\"response_ms\":{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]},\"retry_after\":{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:data"}, {"id": "{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location"}, {"id": "{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:organization"}, {"id": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id"}, {"id": "{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms"}, {"id": "{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after"}, {"id": "{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding"}, {"id": "{\"name\":\"OpenAIText2Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}},\"methods\":{\"text_2_embedding\":{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding"}, {"id": "{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"id": "{\"name\":\"OpenAIText2Image\",\"package\":\"metagpt/tools/openai_text_to_image.py:OpenAIText2Image\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"get_image_data\":{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]},\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data"}, {"id": "{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image"}, {"id": "metagpt/provider/open_llm_api.py"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"id": "{\"name\":\"OpenLLM\",\"package\":\"metagpt/provider/open_llm_api.py:OpenLLM\",\"attributes\":{\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:cost_manager"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs"}, {"id": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode"}, {"id": "{\"name\":\"OrdinalEncode\",\"package\":\"metagpt/tools/libs/data_preprocess.py:OrdinalEncode\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"OrdinalEncoder\",\"default_\":\"\",\"description\":\"model : OrdinalEncoder\",\"compositions\":[\"OrdinalEncoder\"]}},\"methods\":{},\"compositions\":[\"OrdinalEncoder\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:features"}, {"id": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:model"}, {"id": "{\"name\":\"model\",\"type_\":\"OrdinalEncoder\",\"default_\":\"\",\"description\":\"model : OrdinalEncoder\",\"compositions\":[\"OrdinalEncoder\"]}"}, {"id": "?:OrdinalEncoder"}, {"id": "metagpt/utils/common.py:OutputParser"}, {"id": "{\"name\":\"OutputParser\",\"package\":\"metagpt/utils/common.py:OutputParser\",\"attributes\":{},\"methods\":{\"extract_content\":{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]},\"extract_struct\":{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]},\"parse_data\":{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]},\"parse_data_with_mapping\":{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]},\"parse_python_code\":{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"type\"]}"}, {"id": "metagpt/utils/common.py:OutputParser:extract_content"}, {"id": "{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:extract_struct"}, {"id": "{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_blocks"}, {"id": "metagpt/utils/common.py:OutputParser:parse_code"}, {"id": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_data"}, {"id": "{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping"}, {"id": "{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_file_list"}, {"id": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_python_code"}, {"id": "{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_str"}, {"id": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}"}, {"id": "?:type"}, {"id": "metagpt/learn/skill_loader.py:Parameter"}, {"id": "{\"name\":\"Parameter\",\"package\":\"metagpt/learn/skill_loader.py:Parameter\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Parameter:description"}, {"id": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Parameter:type"}, {"id": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Plan"}, {"id": "{\"name\":\"Plan\",\"package\":\"metagpt/schema.py:Plan\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"current_task\":{\"name\":\"current_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task\",\"compositions\":[]},\"current_task_id\":{\"name\":\"current_task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_task_id : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"task_map\":{\"name\":\"task_map\",\"type_\":\"dict[str,Task]\",\"default_\":\"\",\"description\":\"task_map : dict[str, Task]\",\"compositions\":[\"Task\"]},\"tasks\":{\"name\":\"tasks\",\"type_\":\"list[Task]\",\"default_\":\"\",\"description\":\"tasks : list[Task]\",\"compositions\":[\"Task\"]}},\"methods\":{\"add_tasks\":{\"name\":\"add_tasks\",\"args\":[{\"name\":\"tasks\",\"type_\":\"list[Task]\",\"default_\":\"\",\"description\":\"tasks: list[Task]\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_tasks(tasks: list[Task])\",\"aggregations\":[\"Task\"]},\"append_task\":{\"name\":\"append_task\",\"args\":[{\"name\":\"new_task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"new_task: Task\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"append_task(new_task: Task)\",\"aggregations\":[\"Task\"]},\"finish_current_task\":{\"name\":\"finish_current_task\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"finish_current_task()\",\"aggregations\":[]},\"get_finished_tasks\":{\"name\":\"get_finished_tasks\",\"args\":[],\"return_args\":{\"type_\":\"list[Task]\",\"description\":\"list[Task]\",\"compositions\":[\"Task\"]},\"description\":\"get_finished_tasks(): list[Task]\",\"aggregations\":[\"Task\"]},\"has_task_id\":{\"name\":\"has_task_id\",\"args\":[{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"has_task_id(task_id: str): bool\",\"aggregations\":[]},\"replace_task\":{\"name\":\"replace_task\",\"args\":[{\"name\":\"new_task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"new_task: Task\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"replace_task(new_task: Task)\",\"aggregations\":[\"Task\"]},\"reset_task\":{\"name\":\"reset_task\",\"args\":[{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset_task(task_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Task\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Plan:context"}, {"id": "metagpt/schema.py:Plan:current_task"}, {"id": "{\"name\":\"current_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Plan:current_task_id"}, {"id": "{\"name\":\"current_task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_task_id : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Plan:goal"}, {"id": "metagpt/schema.py:Plan:task_map"}, {"id": "{\"name\":\"task_map\",\"type_\":\"dict[str,Task]\",\"default_\":\"\",\"description\":\"task_map : dict[str, Task]\",\"compositions\":[\"Task\"]}"}, {"id": "metagpt/schema.py:Plan:tasks"}, {"id": "{\"name\":\"tasks\",\"type_\":\"list[Task]\",\"default_\":\"\",\"description\":\"tasks : list[Task]\",\"compositions\":[\"Task\"]}"}, {"id": "metagpt/schema.py:Plan:add_tasks"}, {"id": "{\"name\":\"add_tasks\",\"args\":[{\"name\":\"tasks\",\"type_\":\"list[Task]\",\"default_\":\"\",\"description\":\"tasks: list[Task]\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_tasks(tasks: list[Task])\",\"aggregations\":[\"Task\"]}"}, {"id": "metagpt/schema.py:Plan:append_task"}, {"id": "{\"name\":\"append_task\",\"args\":[{\"name\":\"new_task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"new_task: Task\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"append_task(new_task: Task)\",\"aggregations\":[\"Task\"]}"}, {"id": "metagpt/schema.py:Plan:finish_current_task"}, {"id": "{\"name\":\"finish_current_task\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"finish_current_task()\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Plan:get_finished_tasks"}, {"id": "{\"name\":\"get_finished_tasks\",\"args\":[],\"return_args\":{\"type_\":\"list[Task]\",\"description\":\"list[Task]\",\"compositions\":[\"Task\"]},\"description\":\"get_finished_tasks(): list[Task]\",\"aggregations\":[\"Task\"]}"}, {"id": "metagpt/schema.py:Plan:has_task_id"}, {"id": "{\"name\":\"has_task_id\",\"args\":[{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"has_task_id(task_id: str): bool\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Plan:replace_task"}, {"id": "{\"name\":\"replace_task\",\"args\":[{\"name\":\"new_task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"new_task: Task\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"replace_task(new_task: Task)\",\"aggregations\":[\"Task\"]}"}, {"id": "metagpt/schema.py:Plan:reset_task"}, {"id": "{\"name\":\"reset_task\",\"args\":[{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset_task(task_id: str)\",\"aggregations\":[]}"}, {"id": "?:Task"}, {"id": "metagpt/strategy/planner.py"}, {"id": "metagpt/strategy/planner.py:Planner"}, {"id": "{\"name\":\"Planner\",\"package\":\"metagpt/strategy/planner.py:Planner\",\"attributes\":{\"auto_run\":{\"name\":\"auto_run\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_run : bool\",\"compositions\":[]},\"current_task\":{\"name\":\"current_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task\",\"compositions\":[]},\"current_task_id\":{\"name\":\"current_task_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task_id\",\"compositions\":[]},\"plan\":{\"name\":\"plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"plan\",\"compositions\":[]},\"use_tools\":{\"name\":\"use_tools\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_tools : bool\",\"compositions\":[]},\"working_memory\":{\"name\":\"working_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_memory\",\"compositions\":[]}},\"methods\":{\"ask_review\":{\"name\":\"ask_review\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]},{\"name\":\"auto_run\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_run: bool\",\"compositions\":[]},{\"name\":\"trigger\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"trigger: str\",\"compositions\":[]},{\"name\":\"review_context_len\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"review_context_len: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_review(task_result: TaskResult, auto_run: bool, trigger: str, review_context_len: int)\",\"aggregations\":[\"TaskResult\"]},\"confirm_task\":{\"name\":\"confirm_task\",\"args\":[{\"name\":\"task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"task: Task\",\"compositions\":[\"Task\"]},{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]},{\"name\":\"review\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"review: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"confirm_task(task: Task, task_result: TaskResult, review: str)\",\"aggregations\":[\"TaskResult\",\"Task\"]},\"get_useful_memories\":{\"name\":\"get_useful_memories\",\"args\":[{\"name\":\"task_exclude_field\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task_exclude_field\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_useful_memories(task_exclude_field): list[Message]\",\"aggregations\":[\"Message\"]},\"process_task_result\":{\"name\":\"process_task_result\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"process_task_result(task_result: TaskResult)\",\"aggregations\":[\"TaskResult\"]},\"update_plan\":{\"name\":\"update_plan\",\"args\":[{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal: str\",\"compositions\":[]},{\"name\":\"max_tasks\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_tasks: int\",\"compositions\":[]},{\"name\":\"max_retries\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_retries: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_plan(goal: str, max_tasks: int, max_retries: int)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"TaskResult\",\"Task\",\"Message\"]}"}, {"id": "metagpt/strategy/planner.py:Planner:auto_run"}, {"id": "{\"name\":\"auto_run\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_run : bool\",\"compositions\":[]}"}, {"id": "metagpt/strategy/planner.py:Planner:current_task"}, {"id": "metagpt/strategy/planner.py:Planner:current_task_id"}, {"id": "{\"name\":\"current_task_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task_id\",\"compositions\":[]}"}, {"id": "metagpt/strategy/planner.py:Planner:plan"}, {"id": "{\"name\":\"plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"plan\",\"compositions\":[]}"}, {"id": "metagpt/strategy/planner.py:Planner:use_tools"}, {"id": "{\"name\":\"use_tools\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_tools : bool\",\"compositions\":[]}"}, {"id": "metagpt/strategy/planner.py:Planner:working_memory"}, {"id": "{\"name\":\"working_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_memory\",\"compositions\":[]}"}, {"id": "metagpt/strategy/planner.py:Planner:ask_review"}, {"id": "{\"name\":\"ask_review\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]},{\"name\":\"auto_run\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_run: bool\",\"compositions\":[]},{\"name\":\"trigger\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"trigger: str\",\"compositions\":[]},{\"name\":\"review_context_len\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"review_context_len: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_review(task_result: TaskResult, auto_run: bool, trigger: str, review_context_len: int)\",\"aggregations\":[\"TaskResult\"]}"}, {"id": "metagpt/strategy/planner.py:Planner:confirm_task"}, {"id": "{\"name\":\"confirm_task\",\"args\":[{\"name\":\"task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"task: Task\",\"compositions\":[\"Task\"]},{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]},{\"name\":\"review\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"review: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"confirm_task(task: Task, task_result: TaskResult, review: str)\",\"aggregations\":[\"TaskResult\",\"Task\"]}"}, {"id": "metagpt/strategy/planner.py:Planner:get_useful_memories"}, {"id": "{\"name\":\"get_useful_memories\",\"args\":[{\"name\":\"task_exclude_field\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task_exclude_field\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_useful_memories(task_exclude_field): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/strategy/planner.py:Planner:process_task_result"}, {"id": "{\"name\":\"process_task_result\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"process_task_result(task_result: TaskResult)\",\"aggregations\":[\"TaskResult\"]}"}, {"id": "metagpt/strategy/planner.py:Planner:update_plan"}, {"id": "{\"name\":\"update_plan\",\"args\":[{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal: str\",\"compositions\":[]},{\"name\":\"max_tasks\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_tasks: int\",\"compositions\":[]},{\"name\":\"max_retries\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_retries: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_plan(goal: str, max_tasks: int, max_retries: int)\",\"aggregations\":[]}"}, {"id": "?:TaskResult"}, {"id": "metagpt/tools/web_browser_engine_playwright.py"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper"}, {"id": "{\"name\":\"PlaywrightWrapper\",\"package\":\"metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]},\"context_kwargs\":{\"name\":\"context_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"context_kwargs : dict\",\"compositions\":[]},\"launch_kwargs\":{\"name\":\"launch_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"launch_kwargs : dict\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}},\"compositions\":[],\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type"}, {"id": "{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:context_kwargs"}, {"id": "{\"name\":\"context_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"context_kwargs : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs"}, {"id": "{\"name\":\"launch_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"launch_kwargs : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:proxy"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}"}, {"id": "?:WebPage"}, {"id": "?:WebPage\\"}, {"id": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion"}, {"id": "{\"name\":\"PolynomialExpansion\",\"package\":\"metagpt/tools/libs/feature_engineering.py:PolynomialExpansion\",\"attributes\":{\"cols\":{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]},\"degree\":{\"name\":\"degree\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"degree : int\",\"compositions\":[]},\"label_col\":{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]},\"poly\":{\"name\":\"poly\",\"type_\":\"PolynomialFeatures\",\"default_\":\"\",\"description\":\"poly : PolynomialFeatures\",\"compositions\":[\"PolynomialFeatures\"]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[\"PolynomialFeatures\"],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:cols"}, {"id": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:degree"}, {"id": "{\"name\":\"degree\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"degree : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:label_col"}, {"id": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:poly"}, {"id": "{\"name\":\"poly\",\"type_\":\"PolynomialFeatures\",\"default_\":\"\",\"description\":\"poly : PolynomialFeatures\",\"compositions\":[\"PolynomialFeatures\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:transform"}, {"id": "?:PolynomialFeatures"}, {"id": "metagpt/actions/prepare_documents.py"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments"}, {"id": "{\"name\":\"PrepareDocuments\",\"package\":\"metagpt/actions/prepare_documents.py:PrepareDocuments\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:config"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:name"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_interview.py"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview"}, {"id": "{\"name\":\"PrepareInterview\",\"package\":\"metagpt/actions/prepare_interview.py:PrepareInterview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview:name"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/product_manager.py"}, {"id": "metagpt/roles/product_manager.py:ProductManager"}, {"id": "{\"name\":\"ProductManager\",\"package\":\"metagpt/roles/product_manager.py:ProductManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"todo_action\":{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/product_manager.py:ProductManager:constraints"}, {"id": "metagpt/roles/product_manager.py:ProductManager:goal"}, {"id": "metagpt/roles/product_manager.py:ProductManager:name"}, {"id": "metagpt/roles/product_manager.py:ProductManager:profile"}, {"id": "metagpt/roles/product_manager.py:ProductManager:todo_action"}, {"id": "{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/project_manager.py"}, {"id": "metagpt/roles/project_manager.py:ProjectManager"}, {"id": "{\"name\":\"ProjectManager\",\"package\":\"metagpt/roles/project_manager.py:ProjectManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:constraints"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:goal"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:name"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:profile"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo"}, {"id": "{\"name\":\"ProjectRepo\",\"package\":\"metagpt/utils/project_repo.py:ProjectRepo\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]},\"resources\":{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]},\"src_relative_path\":{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]},\"srcs\":{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]},\"test_outputs\":{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]},\"tests\":{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"code_files_exists\":{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]},\"with_src_path\":{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"Path\",\"ProjectRepo\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\",\"ProjectRepo\"]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:git_repo"}, {"id": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:requirement"}, {"id": "{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"id": "{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path"}, {"id": "{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:srcs"}, {"id": "{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"id": "{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"id": "{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:workdir"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists"}, {"id": "{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path"}, {"id": "{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"Path\",\"ProjectRepo\"]}"}, {"id": "metagpt/roles/prompt.py"}, {"id": "metagpt/roles/prompt.py:PromptString"}, {"id": "{\"name\":\"PromptString\",\"package\":\"metagpt/roles/prompt.py:PromptString\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/prompt.py:PromptString:name"}, {"id": "metagpt/roles/qa_engineer.py"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer"}, {"id": "{\"name\":\"QaEngineer\",\"package\":\"metagpt/roles/qa_engineer.py:QaEngineer\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"test_round\":{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]},\"test_round_allowed\":{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:constraints"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:goal"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:name"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:profile"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:test_round"}, {"id": "{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed"}, {"id": "{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection"}, {"id": "{\"name\":\"QdrantConnection\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantConnection\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:host"}, {"id": "{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory"}, {"id": "{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:port"}, {"id": "{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:url"}, {"id": "{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore"}, {"id": "{\"name\":\"QdrantStore\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]},\"create_collection\":{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]},\"delete_collection\":{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]},\"has_collection\":{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}},\"compositions\":[\"QdrantClient\"],\"aggregations\":[\"PointStruct\",\"VectorParams\",\"Filter\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:client"}, {"id": "{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection"}, {"id": "{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection"}, {"id": "{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection"}, {"id": "{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:write"}, {"id": "?:QdrantClient"}, {"id": "?:PointStruct"}, {"id": "?:VectorParams"}, {"id": "?:Filter"}, {"id": "metagpt/strategy/solver.py:ReActSolver"}, {"id": "{\"name\":\"ReActSolver\",\"package\":\"metagpt/strategy/solver.py:ReActSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:ReActSolver:solve"}, {"id": "metagpt/environment/api/env_api.py:ReadAPIRegistry"}, {"id": "{\"name\":\"ReadAPIRegistry\",\"package\":\"metagpt/environment/api/env_api.py:ReadAPIRegistry\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_class_view.py"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView"}, {"id": "{\"name\":\"RebuildClassView\",\"package\":\"metagpt/actions/rebuild_class_view.py:RebuildClassView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db"}, {"id": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView"}, {"id": "{\"name\":\"RebuildSequenceView\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"parse_participant\":{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant"}, {"id": "{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run"}, {"id": "metagpt/utils/redis.py"}, {"id": "metagpt/utils/redis.py:Redis"}, {"id": "{\"name\":\"Redis\",\"package\":\"metagpt/utils/redis.py:Redis\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}},\"methods\":{\"close\":{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\"],\"aggregations\":[\"bytes\\\\\"]}"}, {"id": "metagpt/utils/redis.py:Redis:config"}, {"id": "{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"id": "metagpt/utils/redis.py:Redis:close"}, {"id": "{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/redis.py:Redis:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]}"}, {"id": "metagpt/utils/redis.py:Redis:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"id": "?:bytes\\"}, {"id": "metagpt/configs/redis_config.py"}, {"id": "metagpt/configs/redis_config.py:RedisConfig"}, {"id": "{\"name\":\"RedisConfig\",\"package\":\"metagpt/configs/redis_config.py:RedisConfig\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]},\"password\":{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]},\"username\":{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}},\"methods\":{\"to_kwargs\":{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]},\"to_url\":{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:db"}, {"id": "{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:host"}, {"id": "{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:password"}, {"id": "{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:port"}, {"id": "{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:username"}, {"id": "{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs"}, {"id": "{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:to_url"}, {"id": "{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/repair_llm_raw_output.py"}, {"id": "metagpt/utils/repair_llm_raw_output.py:RepairType"}, {"id": "{\"name\":\"RepairType\",\"package\":\"metagpt/utils/repair_llm_raw_output.py:RepairType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:RepairType:name"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ReplyData"}, {"id": "{\"name\":\"ReplyData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:ReplyData\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"id": "{\"name\":\"ReplyQuestion\",\"package\":\"metagpt/actions/invoice_ocr.py:ReplyQuestion\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Repo"}, {"id": "{\"name\":\"Repo\",\"package\":\"metagpt/document.py:Repo\",\"attributes\":{\"assets\":{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"codes\":{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"docs\":{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"eda\":{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]},\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]},\"get_text_documents\":{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}},\"compositions\":[\"Document\",\"Path\"],\"aggregations\":[\"RepoMetadata\"]}"}, {"id": "metagpt/document.py:Repo:assets"}, {"id": "{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:codes"}, {"id": "{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:name"}, {"id": "metagpt/document.py:Repo:path"}, {"id": "metagpt/document.py:Repo:eda"}, {"id": "{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]}"}, {"id": "metagpt/document.py:Repo:from_path"}, {"id": "metagpt/document.py:Repo:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:Repo:get_text_documents"}, {"id": "{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:Repo:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Repo:to_path"}, {"id": "{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}"}, {"id": "?:RepoMetadata"}, {"id": "metagpt/repo_parser.py:RepoFileInfo"}, {"id": "{\"name\":\"RepoFileInfo\",\"package\":\"metagpt/repo_parser.py:RepoFileInfo\",\"attributes\":{\"classes\":{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]},\"file\":{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]},\"functions\":{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]},\"globals\":{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]},\"page_info\":{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:classes"}, {"id": "{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:file"}, {"id": "{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:functions"}, {"id": "{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:globals"}, {"id": "{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:page_info"}, {"id": "{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata"}, {"id": "{\"name\":\"RepoMetadata\",\"package\":\"metagpt/document.py:RepoMetadata\",\"attributes\":{\"n_chars\":{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]},\"n_docs\":{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"symbols\":{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:n_chars"}, {"id": "{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:n_docs"}, {"id": "{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:name"}, {"id": "metagpt/document.py:RepoMetadata:symbols"}, {"id": "{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoParser"}, {"id": "{\"name\":\"RepoParser\",\"package\":\"metagpt/repo_parser.py:RepoParser\",\"attributes\":{\"base_directory\":{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"extract_class_and_function_info\":{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]},\"generate_dataframe_structure\":{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"output_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path: Path)\",\"aggregations\":[\"Path\"]},\"generate_json_structure\":{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"output_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path: Path)\",\"aggregations\":[\"Path\"]},\"generate_structure\":{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"output_path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path: str \\\\| Path, mode): Path\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"generate_symbols\":{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]},\"node_to_str\":{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]},\"rebuild_class_views\":{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"RepoFileInfo\",\"str\\\\\",\"CodeBlockInfo\\\\\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:base_directory"}, {"id": "{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info"}, {"id": "{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure"}, {"id": "{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"output_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_json_structure"}, {"id": "{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"output_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_structure"}, {"id": "{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"output_path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path: str \\\\| Path, mode): Path\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_symbols"}, {"id": "{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:node_to_str"}, {"id": "{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:rebuild_class_views"}, {"id": "{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "?:CodeBlockInfo\\"}, {"id": "metagpt/roles/researcher.py"}, {"id": "metagpt/roles/researcher.py:Report"}, {"id": "{\"name\":\"Report\",\"package\":\"metagpt/roles/researcher.py:Report\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"links\":{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]},\"summaries\":{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"tuple\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/researcher.py:Report:content"}, {"id": "metagpt/roles/researcher.py:Report:links"}, {"id": "{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]}"}, {"id": "metagpt/roles/researcher.py:Report:summaries"}, {"id": "{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]}"}, {"id": "metagpt/roles/researcher.py:Report:topic"}, {"id": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/researcher.py:Researcher"}, {"id": "{\"name\":\"Researcher\",\"package\":\"metagpt/roles/researcher.py:Researcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"research_system_text\":{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]},\"write_report\":{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Message\",\"Action\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:constraints"}, {"id": "metagpt/roles/researcher.py:Researcher:goal"}, {"id": "metagpt/roles/researcher.py:Researcher:language"}, {"id": "metagpt/roles/researcher.py:Researcher:name"}, {"id": "metagpt/roles/researcher.py:Researcher:profile"}, {"id": "metagpt/roles/researcher.py:Researcher:react"}, {"id": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:research_system_text"}, {"id": "{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:write_report"}, {"id": "{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}"}, {"id": "?:Action"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories"}, {"id": "{\"name\":\"ResourceFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:ResourceFileRepositories\",\"attributes\":{\"api_spec_and_task\":{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"competitive_analysis\":{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]},\"data_api_design\":{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"sd_output\":{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]},\"seq_flow\":{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task"}, {"id": "{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis"}, {"id": "{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design"}, {"id": "{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output"}, {"id": "{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow"}, {"id": "{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"id": "{\"name\":\"ResultEmbedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"usage\":{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Embedding\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data"}, {"id": "{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_"}, {"id": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"id": "{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}"}, {"id": "?:Embedding"}, {"id": "metagpt/learn/skill_loader.py:Returns"}, {"id": "{\"name\":\"Returns\",\"package\":\"metagpt/learn/skill_loader.py:Returns\",\"attributes\":{\"format\":{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Returns:format"}, {"id": "{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Returns:type"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase"}, {"id": "{\"name\":\"ReverseUseCase\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:ReverseUseCase\",\"attributes\":{\"actors\":{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"inputs\":{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]},\"outputs\":{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"steps\":{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:actors"}, {"id": "{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:description"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:inputs"}, {"id": "{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:outputs"}, {"id": "{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:reason"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:steps"}, {"id": "{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails"}, {"id": "{\"name\":\"ReverseUseCaseDetails\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]},\"use_cases\":{\"name\":\"use_cases\",\"type_\":\"List[ReverseUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[ReverseUseCase]\",\"compositions\":[\"ReverseUseCase\"]}},\"methods\":{},\"compositions\":[\"ReverseUseCase\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:description"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:relationship"}, {"id": "{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:use_cases"}, {"id": "{\"name\":\"use_cases\",\"type_\":\"List[ReverseUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[ReverseUseCase]\",\"compositions\":[\"ReverseUseCase\"]}"}, {"id": "?:ReverseUseCase"}, {"id": "metagpt/actions/action_node.py:ReviewMode"}, {"id": "{\"name\":\"ReviewMode\",\"package\":\"metagpt/actions/action_node.py:ReviewMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ReviewMode:name"}, {"id": "metagpt/actions/action_node.py:ReviseMode"}, {"id": "{\"name\":\"ReviseMode\",\"package\":\"metagpt/actions/action_node.py:ReviseMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ReviseMode:name"}, {"id": "metagpt/tools/libs/data_preprocess.py:RobustScale"}, {"id": "{\"name\":\"RobustScale\",\"package\":\"metagpt/tools/libs/data_preprocess.py:RobustScale\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"RobustScaler\",\"default_\":\"\",\"description\":\"model : RobustScaler\",\"compositions\":[\"RobustScaler\"]}},\"methods\":{},\"compositions\":[\"RobustScaler\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:RobustScale:features"}, {"id": "metagpt/tools/libs/data_preprocess.py:RobustScale:model"}, {"id": "{\"name\":\"model\",\"type_\":\"RobustScaler\",\"default_\":\"\",\"description\":\"model : RobustScaler\",\"compositions\":[\"RobustScaler\"]}"}, {"id": "?:RobustScaler"}, {"id": "metagpt/roles/role.py"}, {"id": "metagpt/roles/role.py:Role"}, {"id": "{\"name\":\"Role\",\"package\":\"metagpt/roles/role.py:Role\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"actions\":{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]},\"addresses\":{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"is_human\":{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"latest_observed_msg\":{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"planner\":{\"name\":\"planner\",\"type_\":\"\",\"default_\":\"\",\"description\":\"planner\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"project_repo\":{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]},\"recovered\":{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"states\":{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]},\"check_addresses\":{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]},\"get_memories\":{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]},\"is_watch\":{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]},\"put_message\":{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]},\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"set_action\":{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]},\"set_actions\":{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]},\"set_env\":{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]},\"set_todo\":{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]},\"validate_role_extra\":{\"name\":\"validate_role_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_role_extra()\",\"aggregations\":[]}},\"compositions\":[\"Action\",\"SerializeAsAny\",\"Message\"],\"aggregations\":[\"ActionOutput\",\"Message\\\\\",\"Type\",\"Environment\"]}"}, {"id": "metagpt/roles/role.py:Role:action_description"}, {"id": "metagpt/roles/role.py:Role:actions"}, {"id": "{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]}"}, {"id": "metagpt/roles/role.py:Role:addresses"}, {"id": "{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:constraints"}, {"id": "metagpt/roles/role.py:Role:desc"}, {"id": "metagpt/roles/role.py:Role:git_repo"}, {"id": "metagpt/roles/role.py:Role:goal"}, {"id": "metagpt/roles/role.py:Role:is_human"}, {"id": "{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:is_idle"}, {"id": "metagpt/roles/role.py:Role:latest_observed_msg"}, {"id": "{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/roles/role.py:Role:llm"}, {"id": "metagpt/roles/role.py:Role:model_config"}, {"id": "metagpt/roles/role.py:Role:name"}, {"id": "metagpt/roles/role.py:Role:planner"}, {"id": "{\"name\":\"planner\",\"type_\":\"\",\"default_\":\"\",\"description\":\"planner\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:profile"}, {"id": "metagpt/roles/role.py:Role:project_name"}, {"id": "metagpt/roles/role.py:Role:project_path"}, {"id": "metagpt/roles/role.py:Role:project_repo"}, {"id": "{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:prompt_schema"}, {"id": "metagpt/roles/role.py:Role:rc"}, {"id": "{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:recovered"}, {"id": "{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:role_id"}, {"id": "{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:src_workspace"}, {"id": "metagpt/roles/role.py:Role:states"}, {"id": "{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:todo"}, {"id": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:act"}, {"id": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]}"}, {"id": "metagpt/roles/role.py:Role:check_addresses"}, {"id": "{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:get_memories"}, {"id": "{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/role.py:Role:is_watch"}, {"id": "{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:publish_message"}, {"id": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:put_message"}, {"id": "{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:react"}, {"id": "metagpt/roles/role.py:Role:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"id": "metagpt/roles/role.py:Role:set_action"}, {"id": "{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/role.py:Role:set_actions"}, {"id": "{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]}"}, {"id": "metagpt/roles/role.py:Role:set_addresses"}, {"id": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:set_env"}, {"id": "{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]}"}, {"id": "metagpt/roles/role.py:Role:set_todo"}, {"id": "{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/role.py:Role:think"}, {"id": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/role.py:Role:validate_role_extra"}, {"id": "{\"name\":\"validate_role_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_role_extra()\",\"aggregations\":[]}"}, {"id": "?:Environment"}, {"id": "metagpt/roles/role.py:RoleContext"}, {"id": "{\"name\":\"RoleContext\",\"package\":\"metagpt/roles/role.py:RoleContext\",\"attributes\":{\"env\":{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]},\"important_memory\":{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]},\"max_react_loop\":{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_buffer\":{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]},\"news\":{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]},\"react_mode\":{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]},\"state\":{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]},\"watch\":{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]},\"working_memory\":{\"name\":\"working_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_memory\",\"compositions\":[]}},\"methods\":{\"check\":{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check (role_id: str)\",\"aggregations\":[]},\"model_rebuild\":{\"name\":\"model_rebuild\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"model_rebuild()\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"Type\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:env"}, {"id": "{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:history"}, {"id": "{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:important_memory"}, {"id": "{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:max_react_loop"}, {"id": "{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:memory"}, {"id": "metagpt/roles/role.py:RoleContext:model_config"}, {"id": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"id": "{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:news"}, {"id": "{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]}"}, {"id": "metagpt/roles/role.py:RoleContext:react_mode"}, {"id": "{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:state"}, {"id": "{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:todo"}, {"id": "metagpt/roles/role.py:RoleContext:watch"}, {"id": "{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:working_memory"}, {"id": "metagpt/roles/role.py:RoleContext:check"}, {"id": "{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check (role_id: str)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:model_rebuild"}, {"id": "metagpt/roles/role.py:RoleReactMode"}, {"id": "{\"name\":\"RoleReactMode\",\"package\":\"metagpt/roles/role.py:RoleReactMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"values\":{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleReactMode:name"}, {"id": "metagpt/roles/role.py:RoleReactMode:values"}, {"id": "{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState"}, {"id": "{\"name\":\"RoleState\",\"package\":\"metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState:name"}, {"id": "metagpt/actions/run_code.py"}, {"id": "metagpt/actions/run_code.py:RunCode"}, {"id": "{\"name\":\"RunCode\",\"package\":\"metagpt/actions/run_code.py:RunCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]},\"run_script\":{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]},\"run_text\":{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"RunCodeResult\"]}"}, {"id": "metagpt/actions/run_code.py:RunCode:i_context"}, {"id": "metagpt/actions/run_code.py:RunCode:name"}, {"id": "metagpt/actions/run_code.py:RunCode:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]}"}, {"id": "metagpt/actions/run_code.py:RunCode:run_script"}, {"id": "{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/run_code.py:RunCode:run_text"}, {"id": "{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}"}, {"id": "?:RunCodeResult"}, {"id": "metagpt/schema.py:RunCodeContext"}, {"id": "{\"name\":\"RunCodeContext\",\"package\":\"metagpt/schema.py:RunCodeContext\",\"attributes\":{\"additional_python_paths\":{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]},\"code\":{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]},\"code_filename\":{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]},\"command\":{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]},\"mode\":{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]},\"output\":{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]},\"output_filename\":{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]},\"test_code\":{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]},\"test_filename\":{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]},\"working_directory\":{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:additional_python_paths"}, {"id": "{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:code"}, {"id": "{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:code_filename"}, {"id": "{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:command"}, {"id": "{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:mode"}, {"id": "{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:output"}, {"id": "{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:output_filename"}, {"id": "{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:test_code"}, {"id": "{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:test_filename"}, {"id": "{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:working_directory"}, {"id": "{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult"}, {"id": "{\"name\":\"RunCodeResult\",\"package\":\"metagpt/schema.py:RunCodeResult\",\"attributes\":{\"stderr\":{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]},\"stdout\":{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]},\"summary\":{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:stderr"}, {"id": "{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:stdout"}, {"id": "{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:summary"}, {"id": "{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/s3.py"}, {"id": "metagpt/utils/s3.py:S3"}, {"id": "{\"name\":\"S3\",\"package\":\"metagpt/utils/s3.py:S3\",\"attributes\":{\"auth_config\":{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"session\":{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}},\"methods\":{\"cache\":{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]},\"download_file\":{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]},\"get_object\":{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]},\"get_object_url\":{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]},\"upload_file\":{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}},\"compositions\":[\"Session\"],\"aggregations\":[\"bytes\"]}"}, {"id": "metagpt/utils/s3.py:S3:auth_config"}, {"id": "{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]}"}, {"id": "metagpt/utils/s3.py:S3:config"}, {"id": "metagpt/utils/s3.py:S3:session"}, {"id": "{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}"}, {"id": "metagpt/utils/s3.py:S3:cache"}, {"id": "{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:download_file"}, {"id": "{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:get_object"}, {"id": "{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]}"}, {"id": "metagpt/utils/s3.py:S3:get_object_url"}, {"id": "{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:upload_file"}, {"id": "{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}"}, {"id": "?:Session"}, {"id": "metagpt/configs/s3_config.py"}, {"id": "metagpt/configs/s3_config.py:S3Config"}, {"id": "{\"name\":\"S3Config\",\"package\":\"metagpt/configs/s3_config.py:S3Config\",\"attributes\":{\"access_key\":{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]},\"bucket\":{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]},\"endpoint\":{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]},\"secret_key\":{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:access_key"}, {"id": "{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:bucket"}, {"id": "{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:endpoint"}, {"id": "{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:secret_key"}, {"id": "{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine"}, {"id": "{\"name\":\"SDEngine\",\"package\":\"metagpt/tools/libs/sd_engine.py:SDEngine\",\"attributes\":{\"payload\":{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]},\"sd_t2i_url\":{\"name\":\"sd_t2i_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_t2i_url\",\"compositions\":[]},\"sd_url\":{\"name\":\"sd_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sd_url : str\",\"compositions\":[]}},\"methods\":{\"construct_payload\":{\"name\":\"construct_payload\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},{\"name\":\"negtive_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"negtive_prompt\",\"compositions\":[]},{\"name\":\"width\",\"type_\":\"\",\"default_\":\"\",\"description\":\"width\",\"compositions\":[]},{\"name\":\"height\",\"type_\":\"\",\"default_\":\"\",\"description\":\"height\",\"compositions\":[]},{\"name\":\"sd_model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"construct_payload(prompt, negtive_prompt, width, height, sd_model)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"payload\",\"type_\":\"\",\"default_\":\"\",\"description\":\"payload\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(url, payload, session)\",\"aggregations\":[]},\"run_t2i\":{\"name\":\"run_t2i\",\"args\":[{\"name\":\"payloads\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"payloads: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_t2i(payloads: list)\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"imgs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"imgs\",\"compositions\":[]},{\"name\":\"save_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"save_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(imgs, save_name)\",\"aggregations\":[]},\"simple_run_t2i\":{\"name\":\"simple_run_t2i\",\"args\":[{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload: dict\",\"compositions\":[]},{\"name\":\"auto_save\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_save: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_run_t2i(payload: dict, auto_save: bool)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:payload"}, {"id": "{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:sd_t2i_url"}, {"id": "{\"name\":\"sd_t2i_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_t2i_url\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:sd_url"}, {"id": "{\"name\":\"sd_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sd_url : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:construct_payload"}, {"id": "{\"name\":\"construct_payload\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},{\"name\":\"negtive_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"negtive_prompt\",\"compositions\":[]},{\"name\":\"width\",\"type_\":\"\",\"default_\":\"\",\"description\":\"width\",\"compositions\":[]},{\"name\":\"height\",\"type_\":\"\",\"default_\":\"\",\"description\":\"height\",\"compositions\":[]},{\"name\":\"sd_model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"construct_payload(prompt, negtive_prompt, width, height, sd_model)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"payload\",\"type_\":\"\",\"default_\":\"\",\"description\":\"payload\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(url, payload, session)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:run_t2i"}, {"id": "{\"name\":\"run_t2i\",\"args\":[{\"name\":\"payloads\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"payloads: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_t2i(payloads: list)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"imgs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"imgs\",\"compositions\":[]},{\"name\":\"save_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"save_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(imgs, save_name)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:simple_run_t2i"}, {"id": "{\"name\":\"simple_run_t2i\",\"args\":[{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload: dict\",\"compositions\":[]},{\"name\":\"auto_save\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_save: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_run_t2i(payload: dict, auto_save: bool)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO"}, {"id": "{\"name\":\"SPO\",\"package\":\"metagpt/utils/graph_repository.py:SPO\",\"attributes\":{\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"predicate\":{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]},\"subject\":{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO:object_"}, {"id": "metagpt/utils/graph_repository.py:SPO:predicate"}, {"id": "{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO:subject"}, {"id": "{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/sales.py"}, {"id": "metagpt/roles/sales.py:Sales"}, {"id": "{\"name\":\"Sales\",\"package\":\"metagpt/roles/sales.py:Sales\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{\"validate_stroe\":{\"name\":\"validate_stroe\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_stroe()\",\"aggregations\":[]}},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/sales.py:Sales:desc"}, {"id": "metagpt/roles/sales.py:Sales:name"}, {"id": "metagpt/roles/sales.py:Sales:profile"}, {"id": "metagpt/roles/sales.py:Sales:store"}, {"id": "metagpt/roles/sales.py:Sales:validate_stroe"}, {"id": "{\"name\":\"validate_stroe\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_stroe()\",\"aggregations\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"id": "{\"name\":\"SearchAndSummarize\",\"package\":\"metagpt/actions/search_and_summarize.py:SearchAndSummarize\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]},\"validate_search_engine\":{\"name\":\"validate_search_engine\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_search_engine()\",\"aggregations\":[]}},\"compositions\":[\"SearchEngine\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content"}, {"id": "{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result"}, {"id": "{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_search_engine"}, {"id": "{\"name\":\"validate_search_engine\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_search_engine()\",\"aggregations\":[]}"}, {"id": "metagpt/configs/search_config.py"}, {"id": "metagpt/configs/search_config.py:SearchConfig"}, {"id": "{\"name\":\"SearchConfig\",\"package\":\"metagpt/configs/search_config.py:SearchConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"cse_id\":{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]},\"search_func\":{\"name\":\"search_func\",\"type_\":\"Optional[Callable]\",\"default_\":\"\",\"description\":\"search_func : Optional[Callable]\",\"compositions\":[\"Callable\"]}},\"methods\":{},\"compositions\":[\"Callable\"],\"aggregations\":[]}"}, {"id": "metagpt/configs/search_config.py:SearchConfig:api_key"}, {"id": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"id": "metagpt/configs/search_config.py:SearchConfig:cse_id"}, {"id": "metagpt/configs/search_config.py:SearchConfig:search_func"}, {"id": "{\"name\":\"search_func\",\"type_\":\"Optional[Callable]\",\"default_\":\"\",\"description\":\"search_func : Optional[Callable]\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/tools/search_engine.py"}, {"id": "metagpt/tools/search_engine.py:SearchEngine"}, {"id": "{\"name\":\"SearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SearchEngine\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}},\"methods\":{\"from_search_config\":{\"name\":\"from_search_config\",\"args\":[{\"name\":\"config\",\"type_\":\"SearchConfig\",\"default_\":\"\",\"description\":\"config: SearchConfig\",\"compositions\":[\"SearchConfig\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_search_config(config: SearchConfig)\",\"aggregations\":[\"SearchConfig\"]},\"from_search_func\":{\"name\":\"from_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]\",\"default_\":\"\",\"description\":\"search_func: Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_search_func(search_func: Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]])\",\"aggregations\":[\"Callable\",\"Coroutine\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]},\"validate_extra\":{\"name\":\"validate_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_extra()\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"Coroutine\"],\"aggregations\":[\"SearchConfig\"]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:api_key"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:model_config"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:proxy"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:run_func"}, {"id": "{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:from_search_config"}, {"id": "{\"name\":\"from_search_config\",\"args\":[{\"name\":\"config\",\"type_\":\"SearchConfig\",\"default_\":\"\",\"description\":\"config: SearchConfig\",\"compositions\":[\"SearchConfig\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_search_config(config: SearchConfig)\",\"aggregations\":[\"SearchConfig\"]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:from_search_func"}, {"id": "{\"name\":\"from_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]\",\"default_\":\"\",\"description\":\"search_func: Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_search_func(search_func: Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]])\",\"aggregations\":[\"Callable\",\"Coroutine\"]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:validate_extra"}, {"id": "{\"name\":\"validate_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_extra()\",\"aggregations\":[]}"}, {"id": "?:Coroutine"}, {"id": "?:SearchConfig"}, {"id": "metagpt/tools"}, {"id": "metagpt/tools:SearchEngineType"}, {"id": "{\"name\":\"SearchEngineType\",\"package\":\"metagpt/tools:SearchEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools:SearchEngineType:name"}, {"id": "metagpt/strategy/search_space.py"}, {"id": "metagpt/strategy/search_space.py:SearchSpace"}, {"id": "{\"name\":\"SearchSpace\",\"package\":\"metagpt/strategy/search_space.py:SearchSpace\",\"attributes\":{\"search_space\":{\"name\":\"search_space\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"search_space : dict\",\"compositions\":[]}},\"methods\":{\"add_node\":{\"name\":\"add_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_node(node)\",\"aggregations\":[]},\"get_node\":{\"name\":\"get_node\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_node(key)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/search_space.py:SearchSpace:search_space"}, {"id": "{\"name\":\"search_space\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"search_space : dict\",\"compositions\":[]}"}, {"id": "metagpt/strategy/search_space.py:SearchSpace:add_node"}, {"id": "metagpt/strategy/search_space.py:SearchSpace:get_node"}, {"id": "{\"name\":\"get_node\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_node(key)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/searcher.py"}, {"id": "metagpt/roles/searcher.py:Searcher"}, {"id": "{\"name\":\"Searcher\",\"package\":\"metagpt/roles/searcher.py:Searcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}},\"methods\":{\"post_root\":{\"name\":\"post_root\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"post_root()\",\"aggregations\":[]}},\"compositions\":[\"SearchEngine\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/searcher.py:Searcher:constraints"}, {"id": "metagpt/roles/searcher.py:Searcher:goal"}, {"id": "metagpt/roles/searcher.py:Searcher:name"}, {"id": "metagpt/roles/searcher.py:Searcher:profile"}, {"id": "metagpt/roles/searcher.py:Searcher:search_engine"}, {"id": "metagpt/roles/searcher.py:Searcher:post_root"}, {"id": "{\"name\":\"post_root\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"post_root()\",\"aggregations\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper"}, {"id": "{\"name\":\"SeleniumWrapper\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"executable_path\":{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"launch_args\":{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]},\"launch_kwargs\":{\"name\":\"launch_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"launch_kwargs : dict\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type"}, {"id": "{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path"}, {"id": "{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args"}, {"id": "{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_kwargs"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:model_config"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:proxy"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run"}, {"id": "metagpt/schema.py:SerializationMixin"}, {"id": "{\"name\":\"SerializationMixin\",\"package\":\"metagpt/schema.py:SerializationMixin\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper"}, {"id": "{\"name\":\"SerpAPIWrapper\",\"package\":\"metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"params\":{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"get_params\":{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]},\"validate_serpapi\":{\"name\":\"validate_serpapi\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_serpapi(values: dict): dict\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession"}, {"id": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:api_key"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params"}, {"id": "{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:proxy"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params"}, {"id": "{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results"}, {"id": "{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:validate_serpapi"}, {"id": "{\"name\":\"validate_serpapi\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_serpapi(values: dict): dict\",\"aggregations\":[]}"}, {"id": "?:aiohttp.ClientSession"}, {"id": "metagpt/tools/search_engine_serper.py"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper"}, {"id": "{\"name\":\"SerperWrapper\",\"package\":\"metagpt/tools/search_engine_serper.py:SerperWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"payload\":{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"get_headers\":{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]},\"get_payloads\":{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]},\"validate_serper\":{\"name\":\"validate_serper\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_serper(values: dict): dict\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:api_key"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:proxy"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers"}, {"id": "{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads"}, {"id": "{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:results"}, {"id": "{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:validate_serper"}, {"id": "{\"name\":\"validate_serper\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_serper(values: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SimpleMessage"}, {"id": "{\"name\":\"SimpleMessage\",\"package\":\"metagpt/schema.py:SimpleMessage\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SimpleMessage:content"}, {"id": "metagpt/schema.py:SimpleMessage:role"}, {"id": "metagpt/utils/singleton.py"}, {"id": "metagpt/utils/singleton.py:Singleton"}, {"id": "{\"name\":\"Singleton\",\"package\":\"metagpt/utils/singleton.py:Singleton\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/sk_agent.py"}, {"id": "metagpt/roles/sk_agent.py:SkAgent"}, {"id": "{\"name\":\"SkAgent\",\"package\":\"metagpt/roles/sk_agent.py:SkAgent\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"import_semantic_skill_from_directory\":{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]},\"import_skill\":{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]},\"kernel\":{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"plan\":{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]},\"planner\":{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]},\"planner_cls\":{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Callable\",\"Kernel\",\"Plan\",\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:constraints"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:goal"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory"}, {"id": "{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:import_skill"}, {"id": "{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:kernel"}, {"id": "{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:name"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:plan"}, {"id": "{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:planner"}, {"id": "{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:planner_cls"}, {"id": "{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:profile"}, {"id": "?:Kernel"}, {"id": "?:Plan"}, {"id": "?:ActionPlanner"}, {"id": "?:BasicPlanner"}, {"id": "?:SequentialPlanner"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"id": "{\"name\":\"SkSearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SkSearchEngine\",\"attributes\":{\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"id": "{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill"}, {"id": "{\"name\":\"Skill\",\"package\":\"metagpt/learn/skill_loader.py:Skill\",\"attributes\":{\"arguments\":{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"examples\":{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]},\"id\":{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]},\"returns\":{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]},\"x_prerequisite\":{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Example\",\"Parameter\"],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:arguments"}, {"id": "{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:description"}, {"id": "metagpt/learn/skill_loader.py:Skill:examples"}, {"id": "{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:id"}, {"id": "{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:name"}, {"id": "metagpt/learn/skill_loader.py:Skill:parameters"}, {"id": "{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:returns"}, {"id": "{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:x_prerequisite"}, {"id": "{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}"}, {"id": "?:Example"}, {"id": "?:Parameter"}, {"id": "metagpt/actions/skill_action.py:SkillAction"}, {"id": "{\"name\":\"SkillAction\",\"package\":\"metagpt/actions/skill_action.py:SkillAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"find_and_call_function\":{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:args"}, {"id": "{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"id": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"id": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function"}, {"id": "{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:run"}, {"id": "metagpt/management/skill_manager.py"}, {"id": "metagpt/management/skill_manager.py:SkillManager"}, {"id": "{\"name\":\"SkillManager\",\"package\":\"metagpt/management/skill_manager.py:SkillManager\",\"attributes\":{},\"methods\":{\"add_skill\":{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]},\"del_skill\":{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]},\"generate_skill_desc\":{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]},\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"retrieve_skill\":{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]},\"retrieve_skill_scored\":{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:add_skill"}, {"id": "{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:del_skill"}, {"id": "{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc"}, {"id": "{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:get_skill"}, {"id": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill"}, {"id": "{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored"}, {"id": "{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"id": "{\"name\":\"SkillsDeclaration\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration\",\"attributes\":{\"components\":{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]},\"entities\":{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]},\"skillapi\":{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}},\"methods\":{\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"get_skill_list\":{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}},\"compositions\":[\"Components\",\"Entity\"],\"aggregations\":[\"Skill\",\"Context\",\"SkillsDeclaration\",\"Path\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:components"}, {"id": "{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities"}, {"id": "{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi"}, {"id": "{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill"}, {"id": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list"}, {"id": "{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}"}, {"id": "?:Components"}, {"id": "?:Entity"}, {"id": "metagpt/environment/software_env/software_env.py"}, {"id": "metagpt/environment/software_env/software_env.py:SoftwareEnv"}, {"id": "{\"name\":\"SoftwareEnv\",\"package\":\"metagpt/environment/software_env/software_env.py:SoftwareEnv\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:SparkLLM"}, {"id": "{\"name\":\"SparkLLM\",\"package\":\"metagpt/provider/spark_api.py:SparkLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:acompletion"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text"}, {"id": "metagpt/tools/libs/feature_engineering.py:SplitBins"}, {"id": "{\"name\":\"SplitBins\",\"package\":\"metagpt/tools/libs/feature_engineering.py:SplitBins\",\"attributes\":{\"cols\":{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]},\"encoder\":{\"name\":\"encoder\",\"type_\":\"KBinsDiscretizer,NoneType\",\"default_\":\"\",\"description\":\"encoder : KBinsDiscretizer, NoneType\",\"compositions\":[\"KBinsDiscretizer\"]},\"strategy\":{\"name\":\"strategy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strategy : str\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[\"KBinsDiscretizer\"],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:SplitBins:cols"}, {"id": "metagpt/tools/libs/feature_engineering.py:SplitBins:encoder"}, {"id": "{\"name\":\"encoder\",\"type_\":\"KBinsDiscretizer,NoneType\",\"default_\":\"\",\"description\":\"encoder : KBinsDiscretizer, NoneType\",\"compositions\":[\"KBinsDiscretizer\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:SplitBins:strategy"}, {"id": "{\"name\":\"strategy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strategy : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:SplitBins:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:SplitBins:transform"}, {"id": "?:KBinsDiscretizer"}, {"id": "metagpt/tools/libs/data_preprocess.py:StandardScale"}, {"id": "{\"name\":\"StandardScale\",\"package\":\"metagpt/tools/libs/data_preprocess.py:StandardScale\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"StandardScaler\",\"default_\":\"\",\"description\":\"model : StandardScaler\",\"compositions\":[\"StandardScaler\"]}},\"methods\":{},\"compositions\":[\"StandardScaler\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/data_preprocess.py:StandardScale:features"}, {"id": "metagpt/tools/libs/data_preprocess.py:StandardScale:model"}, {"id": "{\"name\":\"model\",\"type_\":\"StandardScaler\",\"default_\":\"\",\"description\":\"model : StandardScaler\",\"compositions\":[\"StandardScaler\"]}"}, {"id": "?:StandardScaler"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_env.py"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv"}, {"id": "{\"name\":\"StanfordTownEnv\",\"package\":\"metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv"}, {"id": "{\"name\":\"StanfordTownExtEnv\",\"package\":\"metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv\",\"attributes\":{\"address_tiles\":{\"name\":\"address_tiles\",\"type_\":\"dict[str,set]\",\"default_\":\"\",\"description\":\"address_tiles : dict[str, set]\",\"compositions\":[]},\"collision_maze\":{\"name\":\"collision_maze\",\"type_\":\"list[list]\",\"default_\":\"\",\"description\":\"collision_maze : list[list]\",\"compositions\":[]},\"maze_asset_path\":{\"name\":\"maze_asset_path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"maze_asset_path : Optional[Path]\",\"compositions\":[\"Path\"]},\"maze_height\":{\"name\":\"maze_height\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"maze_height : int\",\"compositions\":[]},\"maze_width\":{\"name\":\"maze_width\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"maze_width : int\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"special_constraint\":{\"name\":\"special_constraint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"special_constraint : str\",\"compositions\":[]},\"sq_tile_size\":{\"name\":\"sq_tile_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"sq_tile_size : int\",\"compositions\":[]},\"tiles\":{\"name\":\"tiles\",\"type_\":\"list[list[dict]]\",\"default_\":\"\",\"description\":\"tiles : list[list[dict]]\",\"compositions\":[]}},\"methods\":{\"access_tile\":{\"name\":\"access_tile\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"access_tile(tile: tuple[int, int]): dict\",\"aggregations\":[\"tuple\"]},\"add_event_from_tile\":{\"name\":\"add_event_from_tile\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"add_event_from_tile(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]},\"add_tiles_event\":{\"name\":\"add_tiles_event\",\"args\":[{\"name\":\"pt_y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"pt_y: int\",\"compositions\":[]},{\"name\":\"pt_x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"pt_x: int\",\"compositions\":[]},{\"name\":\"event\",\"type_\":\"Tuple[str,str,str,str]\",\"default_\":\"\",\"description\":\"event: Tuple[str, str, str, str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_tiles_event(pt_y: int, pt_x: int, event: Tuple[str, str, str, str])\",\"aggregations\":[]},\"get_address_tiles\":{\"name\":\"get_address_tiles\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_address_tiles(): dict\",\"aggregations\":[]},\"get_collision_maze\":{\"name\":\"get_collision_maze\",\"args\":[],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"get_collision_maze(): list\",\"aggregations\":[]},\"get_nearby_tiles\":{\"name\":\"get_nearby_tiles\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"vision_r\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"vision_r: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[tuple[int,int]]\",\"description\":\"list[tuple[int, int]]\",\"compositions\":[\"tuple\"]},\"description\":\"get_nearby_tiles(tile: tuple[int, int], vision_r: int): list[tuple[int, int]]\",\"aggregations\":[\"tuple\"]},\"get_tile_path\":{\"name\":\"get_tile_path\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"level\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"level: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_tile_path(tile: tuple[int, int], level: str): str\",\"aggregations\":[\"tuple\"]},\"remove_event_from_tile\":{\"name\":\"remove_event_from_tile\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"remove_event_from_tile(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]},\"remove_subject_events_from_tile\":{\"name\":\"remove_subject_events_from_tile\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"remove_subject_events_from_tile(subject: str, tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]},\"turn_coordinate_to_tile\":{\"name\":\"turn_coordinate_to_tile\",\"args\":[{\"name\":\"px_coordinate\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"px_coordinate: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"tuple[int,int]\",\"description\":\"tuple[int, int]\",\"compositions\":[\"tuple\"]},\"description\":\"turn_coordinate_to_tile(px_coordinate: tuple[int, int]): tuple[int, int]\",\"aggregations\":[\"tuple\"]},\"turn_event_from_tile_idle\":{\"name\":\"turn_event_from_tile_idle\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"turn_event_from_tile_idle(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:address_tiles"}, {"id": "{\"name\":\"address_tiles\",\"type_\":\"dict[str,set]\",\"default_\":\"\",\"description\":\"address_tiles : dict[str, set]\",\"compositions\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:collision_maze"}, {"id": "{\"name\":\"collision_maze\",\"type_\":\"list[list]\",\"default_\":\"\",\"description\":\"collision_maze : list[list]\",\"compositions\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_asset_path"}, {"id": "{\"name\":\"maze_asset_path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"maze_asset_path : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_height"}, {"id": "{\"name\":\"maze_height\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"maze_height : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_width"}, {"id": "{\"name\":\"maze_width\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"maze_width : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:model_config"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:special_constraint"}, {"id": "{\"name\":\"special_constraint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"special_constraint : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:sq_tile_size"}, {"id": "{\"name\":\"sq_tile_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"sq_tile_size : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:tiles"}, {"id": "{\"name\":\"tiles\",\"type_\":\"list[list[dict]]\",\"default_\":\"\",\"description\":\"tiles : list[list[dict]]\",\"compositions\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:access_tile"}, {"id": "{\"name\":\"access_tile\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"access_tile(tile: tuple[int, int]): dict\",\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:add_event_from_tile"}, {"id": "{\"name\":\"add_event_from_tile\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"add_event_from_tile(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:add_tiles_event"}, {"id": "{\"name\":\"add_tiles_event\",\"args\":[{\"name\":\"pt_y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"pt_y: int\",\"compositions\":[]},{\"name\":\"pt_x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"pt_x: int\",\"compositions\":[]},{\"name\":\"event\",\"type_\":\"Tuple[str,str,str,str]\",\"default_\":\"\",\"description\":\"event: Tuple[str, str, str, str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_tiles_event(pt_y: int, pt_x: int, event: Tuple[str, str, str, str])\",\"aggregations\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_address_tiles"}, {"id": "{\"name\":\"get_address_tiles\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_address_tiles(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_collision_maze"}, {"id": "{\"name\":\"get_collision_maze\",\"args\":[],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"get_collision_maze(): list\",\"aggregations\":[]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_nearby_tiles"}, {"id": "{\"name\":\"get_nearby_tiles\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"vision_r\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"vision_r: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[tuple[int,int]]\",\"description\":\"list[tuple[int, int]]\",\"compositions\":[\"tuple\"]},\"description\":\"get_nearby_tiles(tile: tuple[int, int], vision_r: int): list[tuple[int, int]]\",\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_tile_path"}, {"id": "{\"name\":\"get_tile_path\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"level\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"level: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_tile_path(tile: tuple[int, int], level: str): str\",\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:remove_event_from_tile"}, {"id": "{\"name\":\"remove_event_from_tile\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"remove_event_from_tile(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:remove_subject_events_from_tile"}, {"id": "{\"name\":\"remove_subject_events_from_tile\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"remove_subject_events_from_tile(subject: str, tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:turn_coordinate_to_tile"}, {"id": "{\"name\":\"turn_coordinate_to_tile\",\"args\":[{\"name\":\"px_coordinate\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"px_coordinate: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"tuple[int,int]\",\"description\":\"tuple[int, int]\",\"compositions\":[\"tuple\"]},\"description\":\"turn_coordinate_to_tile(px_coordinate: tuple[int, int]): tuple[int, int]\",\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:turn_event_from_tile_idle"}, {"id": "{\"name\":\"turn_event_from_tile_idle\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"turn_event_from_tile_idle(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}"}, {"id": "metagpt/strategy/tot_schema.py:Strategy"}, {"id": "{\"name\":\"Strategy\",\"package\":\"metagpt/strategy/tot_schema.py:Strategy\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:Strategy:name"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor"}, {"id": "{\"name\":\"SubprocessMonitor\",\"package\":\"metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor\",\"attributes\":{\"callback\":{\"name\":\"callback\",\"type_\":\"Optional[callable]\",\"default_\":\"\",\"description\":\"callback : Optional[callable]\",\"compositions\":[\"callable\"]},\"callback_match\":{\"name\":\"callback_match\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"callback_match : str\",\"compositions\":[]},\"commands\":{\"name\":\"commands\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"commands : List[str]\",\"compositions\":[]},\"finished_callback\":{\"name\":\"finished_callback\",\"type_\":\"Optional[callable]\",\"default_\":\"\",\"description\":\"finished_callback : Optional[callable]\",\"compositions\":[\"callable\"]},\"is_running\":{\"name\":\"is_running\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_running\",\"compositions\":[]},\"logger\":{\"name\":\"logger\",\"type_\":\"Logger\",\"default_\":\"\",\"description\":\"logger : Logger\",\"compositions\":[\"Logger\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"process\":{\"name\":\"process\",\"type_\":\"NoneType,Popen\",\"default_\":\"\",\"description\":\"process : NoneType, Popen\",\"compositions\":[\"Popen\"]},\"ready_event\":{\"name\":\"ready_event\",\"type_\":\"Event,NoneType\",\"default_\":\"\",\"description\":\"ready_event : Event, NoneType\",\"compositions\":[\"Event\"]},\"ready_line\":{\"name\":\"ready_line\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ready_line : NoneType\",\"compositions\":[]},\"ready_match\":{\"name\":\"ready_match\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ready_match : str\",\"compositions\":[]},\"thread\":{\"name\":\"thread\",\"type_\":\"NoneType,Thread\",\"default_\":\"\",\"description\":\"thread : NoneType, Thread\",\"compositions\":[\"Thread\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"stop\":{\"name\":\"stop\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"stop()\",\"aggregations\":[]}},\"compositions\":[\"callable\",\"Logger\",\"Popen\",\"Event\",\"Thread\"],\"aggregations\":[]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:callback"}, {"id": "{\"name\":\"callback\",\"type_\":\"Optional[callable]\",\"default_\":\"\",\"description\":\"callback : Optional[callable]\",\"compositions\":[\"callable\"]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:callback_match"}, {"id": "{\"name\":\"callback_match\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"callback_match : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:commands"}, {"id": "{\"name\":\"commands\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"commands : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:finished_callback"}, {"id": "{\"name\":\"finished_callback\",\"type_\":\"Optional[callable]\",\"default_\":\"\",\"description\":\"finished_callback : Optional[callable]\",\"compositions\":[\"callable\"]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:is_running"}, {"id": "{\"name\":\"is_running\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_running\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:logger"}, {"id": "{\"name\":\"logger\",\"type_\":\"Logger\",\"default_\":\"\",\"description\":\"logger : Logger\",\"compositions\":[\"Logger\"]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:name"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:process"}, {"id": "{\"name\":\"process\",\"type_\":\"NoneType,Popen\",\"default_\":\"\",\"description\":\"process : NoneType, Popen\",\"compositions\":[\"Popen\"]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_event"}, {"id": "{\"name\":\"ready_event\",\"type_\":\"Event,NoneType\",\"default_\":\"\",\"description\":\"ready_event : Event, NoneType\",\"compositions\":[\"Event\"]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_line"}, {"id": "{\"name\":\"ready_line\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ready_line : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_match"}, {"id": "{\"name\":\"ready_match\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ready_match : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:thread"}, {"id": "{\"name\":\"thread\",\"type_\":\"NoneType,Thread\",\"default_\":\"\",\"description\":\"thread : NoneType, Thread\",\"compositions\":[\"Thread\"]}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:run"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:stop"}, {"id": "{\"name\":\"stop\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"stop()\",\"aggregations\":[]}"}, {"id": "?:callable"}, {"id": "?:Logger"}, {"id": "?:Popen"}, {"id": "?:Event"}, {"id": "?:Thread"}, {"id": "metagpt/subscription.py"}, {"id": "metagpt/subscription.py:SubscriptionRunner"}, {"id": "{\"name\":\"SubscriptionRunner\",\"package\":\"metagpt/subscription.py:SubscriptionRunner\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"tasks\":{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]},\"subscribe\":{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Role\",\"Message\",\"Awaitable\",\"Callable\",\"AsyncGenerator\"]},\"unsubscribe\":{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}},\"compositions\":[\"Role\",\"asyncio.Task\"],\"aggregations\":[\"Message\",\"Awaitable\",\"Callable\",\"AsyncGenerator\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:model_config"}, {"id": "metagpt/subscription.py:SubscriptionRunner:tasks"}, {"id": "{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:subscribe"}, {"id": "{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Role\",\"Message\",\"Awaitable\",\"Callable\",\"AsyncGenerator\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:unsubscribe"}, {"id": "{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"id": "?:asyncio.Task"}, {"id": "?:Awaitable"}, {"id": "metagpt/actions/summarize_code.py"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"id": "{\"name\":\"SummarizeCode\",\"package\":\"metagpt/actions/summarize_code.py:SummarizeCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"summarize_code\":{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:name"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:run"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code"}, {"id": "{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SystemMessage"}, {"id": "{\"name\":\"SystemMessage\",\"package\":\"metagpt/schema.py:SystemMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:TOTSolver"}, {"id": "{\"name\":\"TOTSolver\",\"package\":\"metagpt/strategy/solver.py:TOTSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/solver.py:TOTSolver:solve"}, {"id": "metagpt/actions/talk_action.py"}, {"id": "metagpt/actions/talk_action.py:TalkAction"}, {"id": "{\"name\":\"TalkAction\",\"package\":\"metagpt/actions/talk_action.py:TalkAction\",\"attributes\":{\"aask_args\":{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]},\"agent_description\":{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]},\"history_summary\":{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"prompt_gpt4\":{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:aask_args"}, {"id": "{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:agent_description"}, {"id": "{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:history_summary"}, {"id": "{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:knowledge"}, {"id": "{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:language"}, {"id": "{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:prompt"}, {"id": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4"}, {"id": "{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"id": "metagpt/actions/talk_action.py:TalkAction:run"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt"}, {"id": "{\"name\":\"TalkActionPrompt\",\"package\":\"metagpt/actions/talk_action.py:TalkActionPrompt\",\"attributes\":{\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"FORMATION_LOOSE\":{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION"}, {"id": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE"}, {"id": "{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder"}, {"id": "{\"name\":\"TargetMeanEncoder\",\"package\":\"metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder\",\"attributes\":{\"col\":{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]},\"encoder_dict\":{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label : str\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:col"}, {"id": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:encoder_dict"}, {"id": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:label"}, {"id": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:transform"}, {"id": "metagpt/schema.py:Task"}, {"id": "{\"name\":\"Task\",\"package\":\"metagpt/schema.py:Task\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]},\"dependent_task_ids\":{\"name\":\"dependent_task_ids\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"dependent_task_ids : list[str]\",\"compositions\":[]},\"instruction\":{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]},\"is_finished\":{\"name\":\"is_finished\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_finished : bool\",\"compositions\":[]},\"is_success\":{\"name\":\"is_success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_success : bool\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]},\"task_id\":{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id : str\",\"compositions\":[]},\"task_type\":{\"name\":\"task_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_type : str\",\"compositions\":[]}},\"methods\":{\"reset\":{\"name\":\"reset\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset()\",\"aggregations\":[]},\"update_task_result\":{\"name\":\"update_task_result\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_task_result(task_result: TaskResult)\",\"aggregations\":[\"TaskResult\"]}},\"compositions\":[],\"aggregations\":[\"TaskResult\"]}"}, {"id": "metagpt/schema.py:Task:code"}, {"id": "metagpt/schema.py:Task:dependent_task_ids"}, {"id": "{\"name\":\"dependent_task_ids\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"dependent_task_ids : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Task:instruction"}, {"id": "metagpt/schema.py:Task:is_finished"}, {"id": "{\"name\":\"is_finished\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_finished : bool\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Task:is_success"}, {"id": "{\"name\":\"is_success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_success : bool\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Task:result"}, {"id": "metagpt/schema.py:Task:task_id"}, {"id": "{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Task:task_type"}, {"id": "{\"name\":\"task_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_type : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Task:reset"}, {"id": "{\"name\":\"reset\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset()\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Task:update_task_result"}, {"id": "{\"name\":\"update_task_result\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_task_result(task_result: TaskResult)\",\"aggregations\":[\"TaskResult\"]}"}, {"id": "metagpt/schema.py:TaskResult"}, {"id": "{\"name\":\"TaskResult\",\"package\":\"metagpt/schema.py:TaskResult\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]},\"is_success\":{\"name\":\"is_success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_success : bool\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:TaskResult:code"}, {"id": "metagpt/schema.py:TaskResult:is_success"}, {"id": "metagpt/schema.py:TaskResult:result"}, {"id": "metagpt/roles/teacher.py"}, {"id": "metagpt/roles/teacher.py:Teacher"}, {"id": "{\"name\":\"Teacher\",\"package\":\"metagpt/roles/teacher.py:Teacher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"course_title\":{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"new_file_name\":{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:constraints"}, {"id": "metagpt/roles/teacher.py:Teacher:course_title"}, {"id": "{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:desc"}, {"id": "metagpt/roles/teacher.py:Teacher:goal"}, {"id": "metagpt/roles/teacher.py:Teacher:name"}, {"id": "metagpt/roles/teacher.py:Teacher:profile"}, {"id": "metagpt/roles/teacher.py:Teacher:new_file_name"}, {"id": "{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock"}, {"id": "{\"name\":\"TeachingPlanBlock\",\"package\":\"metagpt/actions/write_teaching_plan.py:TeachingPlanBlock\",\"attributes\":{\"COURSE_TITLE\":{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]},\"DATA_BEGIN_TAG\":{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]},\"DATA_END_TAG\":{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]},\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"PROMPT_TEMPLATE\":{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]},\"PROMPT_TITLE_TEMPLATE\":{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]},\"TOPICS\":{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]},\"TOPIC_STATEMENTS\":{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE"}, {"id": "{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG"}, {"id": "{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG"}, {"id": "{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE"}, {"id": "{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE"}, {"id": "{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS"}, {"id": "{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS"}, {"id": "{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}"}, {"id": "metagpt/team.py"}, {"id": "metagpt/team.py:Team"}, {"id": "{\"name\":\"Team\",\"package\":\"metagpt/team.py:Team\",\"attributes\":{\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"env\":{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]},\"idea\":{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]},\"investment\":{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"deserialize\":{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]},\"hire\":{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]},\"invest\":{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]},\"run_project\":{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]},\"serialize\":{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]},\"start_project\":{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}},\"compositions\":[\"Environment\"],\"aggregations\":[\"Team\",\"Context\",\"Path\",\"Role\"]}"}, {"id": "metagpt/team.py:Team:cost_manager"}, {"id": "metagpt/team.py:Team:env"}, {"id": "{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]}"}, {"id": "metagpt/team.py:Team:idea"}, {"id": "{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]}"}, {"id": "metagpt/team.py:Team:investment"}, {"id": "{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]}"}, {"id": "metagpt/team.py:Team:model_config"}, {"id": "metagpt/team.py:Team:deserialize"}, {"id": "{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]}"}, {"id": "metagpt/team.py:Team:hire"}, {"id": "{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/team.py:Team:invest"}, {"id": "{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:run_project"}, {"id": "{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:serialize"}, {"id": "{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/team.py:Team:start_project"}, {"id": "{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"id": "?:Team"}, {"id": "metagpt/schema.py:TestingContext"}, {"id": "{\"name\":\"TestingContext\",\"package\":\"metagpt/schema.py:TestingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"test_doc\":{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:TestingContext:code_doc"}, {"id": "{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:TestingContext:filename"}, {"id": "metagpt/schema.py:TestingContext:test_doc"}, {"id": "{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode"}, {"id": "{\"name\":\"ThoughtNode\",\"package\":\"metagpt/strategy/base.py:ThoughtNode\",\"attributes\":{\"id\":{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"valid_status\":{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]},\"value\":{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}},\"methods\":{\"update_valid_status\":{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]},\"update_value\":{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:id"}, {"id": "{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:name"}, {"id": "metagpt/strategy/base.py:ThoughtNode:valid_status"}, {"id": "{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:value"}, {"id": "{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:update_valid_status"}, {"id": "{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:update_value"}, {"id": "{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"id": "{\"name\":\"ThoughtSolverBase\",\"package\":\"metagpt/strategy/tot.py:ThoughtSolverBase\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}},\"methods\":{\"evaluate_node\":{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]},\"generate_thoughts\":{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"select_nodes\":{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]},\"update_solution\":{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}},\"compositions\":[\"ThoughtTree\"],\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree"}, {"id": "{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node"}, {"id": "{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts"}, {"id": "{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes"}, {"id": "{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:solve"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution"}, {"id": "{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}"}, {"id": "?:ThoughtTree"}, {"id": "?:ThoughtNode"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"id": "{\"name\":\"ThoughtSolverConfig\",\"package\":\"metagpt/strategy/tot_schema.py:ThoughtSolverConfig\",\"attributes\":{\"evaluator\":{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]},\"max_steps\":{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]},\"method_select\":{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]},\"n_generate_sample\":{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]},\"n_select_sample\":{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]},\"n_solution_sample\":{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]},\"parser\":{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"id": "{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps"}, {"id": "{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select"}, {"id": "{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample"}, {"id": "{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample"}, {"id": "{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample"}, {"id": "{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"id": "{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree"}, {"id": "{\"name\":\"ThoughtTree\",\"package\":\"metagpt/strategy/base.py:ThoughtTree\",\"attributes\":{\"all_nodes\":{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}},\"methods\":{\"parse_node_path\":{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]},\"show\":{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]},\"update_node\":{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}},\"compositions\":[],\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:all_nodes"}, {"id": "{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:parse_node_path"}, {"id": "{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:show"}, {"id": "{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:update_node"}, {"id": "{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager"}, {"id": "{\"name\":\"TokenCostManager\",\"package\":\"metagpt/utils/cost_manager.py:TokenCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}},\"methods\":{\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens"}, {"id": "{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens"}, {"id": "{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost"}, {"id": "metagpt/tools/tool_data_type.py"}, {"id": "metagpt/tools/tool_data_type.py:Tool"}, {"id": "{\"name\":\"Tool\",\"package\":\"metagpt/tools/tool_data_type.py:Tool\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]},\"schemas\":{\"name\":\"schemas\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schemas : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/tool_data_type.py:Tool:code"}, {"id": "metagpt/tools/tool_data_type.py:Tool:name"}, {"id": "metagpt/tools/tool_data_type.py:Tool:path"}, {"id": "metagpt/tools/tool_data_type.py:Tool:schemas"}, {"id": "{\"name\":\"schemas\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schemas : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/tool_registry.py"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry"}, {"id": "{\"name\":\"ToolRegistry\",\"package\":\"metagpt/tools/tool_registry.py:ToolRegistry\",\"attributes\":{\"tool_types\":{\"name\":\"tool_types\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tool_types : dict\",\"compositions\":[]},\"tools\":{\"name\":\"tools\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tools : dict\",\"compositions\":[]},\"tools_by_types\":{\"name\":\"tools_by_types\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tools_by_types : dict\",\"compositions\":[]}},\"methods\":{\"get_tool\":{\"name\":\"get_tool\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tool\",\"description\":\"Tool\",\"compositions\":[\"Tool\"]},\"description\":\"get_tool(key): Tool\",\"aggregations\":[\"Tool\"]},\"get_tool_type\":{\"name\":\"get_tool_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ToolType\",\"description\":\"ToolType\",\"compositions\":[\"ToolType\"]},\"description\":\"get_tool_type(key): ToolType\",\"aggregations\":[\"ToolType\"]},\"get_tool_types\":{\"name\":\"get_tool_types\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,ToolType]\",\"description\":\"dict[str, ToolType]\",\"compositions\":[\"ToolType\"]},\"description\":\"get_tool_types(): dict[str, ToolType]\",\"aggregations\":[\"ToolType\"]},\"get_tools_by_type\":{\"name\":\"get_tools_by_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Tool]\",\"description\":\"dict[str, Tool]\",\"compositions\":[\"Tool\"]},\"description\":\"get_tools_by_type(key): dict[str, Tool]\",\"aggregations\":[\"Tool\"]},\"has_tool\":{\"name\":\"has_tool\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tool\",\"description\":\"Tool\",\"compositions\":[\"Tool\"]},\"description\":\"has_tool(key: str): Tool\",\"aggregations\":[\"Tool\"]},\"has_tool_type\":{\"name\":\"has_tool_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"has_tool_type(key): bool\",\"aggregations\":[]},\"init_tool_types\":{\"name\":\"init_tool_types\",\"args\":[{\"name\":\"tool_types\",\"type_\":\"ToolType\",\"default_\":\"\",\"description\":\"tool_types: ToolType\",\"compositions\":[\"ToolType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_tool_types(tool_types: ToolType)\",\"aggregations\":[\"ToolType\"]},\"register_tool\":{\"name\":\"register_tool\",\"args\":[{\"name\":\"tool_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_name\",\"compositions\":[]},{\"name\":\"tool_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_path\",\"compositions\":[]},{\"name\":\"schema_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema_path\",\"compositions\":[]},{\"name\":\"tool_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_code\",\"compositions\":[]},{\"name\":\"tool_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_type\",\"compositions\":[]},{\"name\":\"tool_source_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_source_object\",\"compositions\":[]},{\"name\":\"include_functions\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_functions\",\"compositions\":[]},{\"name\":\"verbose\",\"type_\":\"\",\"default_\":\"\",\"description\":\"verbose\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register_tool(tool_name, tool_path, schema_path, tool_code, tool_type, tool_source_object, include_functions, verbose)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Tool\",\"ToolType\"]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:tool_types"}, {"id": "{\"name\":\"tool_types\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tool_types : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:tools"}, {"id": "{\"name\":\"tools\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tools : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:tools_by_types"}, {"id": "{\"name\":\"tools_by_types\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tools_by_types : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool"}, {"id": "{\"name\":\"get_tool\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tool\",\"description\":\"Tool\",\"compositions\":[\"Tool\"]},\"description\":\"get_tool(key): Tool\",\"aggregations\":[\"Tool\"]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool_type"}, {"id": "{\"name\":\"get_tool_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ToolType\",\"description\":\"ToolType\",\"compositions\":[\"ToolType\"]},\"description\":\"get_tool_type(key): ToolType\",\"aggregations\":[\"ToolType\"]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool_types"}, {"id": "{\"name\":\"get_tool_types\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,ToolType]\",\"description\":\"dict[str, ToolType]\",\"compositions\":[\"ToolType\"]},\"description\":\"get_tool_types(): dict[str, ToolType]\",\"aggregations\":[\"ToolType\"]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:get_tools_by_type"}, {"id": "{\"name\":\"get_tools_by_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Tool]\",\"description\":\"dict[str, Tool]\",\"compositions\":[\"Tool\"]},\"description\":\"get_tools_by_type(key): dict[str, Tool]\",\"aggregations\":[\"Tool\"]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:has_tool"}, {"id": "{\"name\":\"has_tool\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tool\",\"description\":\"Tool\",\"compositions\":[\"Tool\"]},\"description\":\"has_tool(key: str): Tool\",\"aggregations\":[\"Tool\"]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:has_tool_type"}, {"id": "{\"name\":\"has_tool_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"has_tool_type(key): bool\",\"aggregations\":[]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:init_tool_types"}, {"id": "{\"name\":\"init_tool_types\",\"args\":[{\"name\":\"tool_types\",\"type_\":\"ToolType\",\"default_\":\"\",\"description\":\"tool_types: ToolType\",\"compositions\":[\"ToolType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_tool_types(tool_types: ToolType)\",\"aggregations\":[\"ToolType\"]}"}, {"id": "metagpt/tools/tool_registry.py:ToolRegistry:register_tool"}, {"id": "{\"name\":\"register_tool\",\"args\":[{\"name\":\"tool_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_name\",\"compositions\":[]},{\"name\":\"tool_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_path\",\"compositions\":[]},{\"name\":\"schema_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema_path\",\"compositions\":[]},{\"name\":\"tool_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_code\",\"compositions\":[]},{\"name\":\"tool_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_type\",\"compositions\":[]},{\"name\":\"tool_source_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_source_object\",\"compositions\":[]},{\"name\":\"include_functions\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_functions\",\"compositions\":[]},{\"name\":\"verbose\",\"type_\":\"\",\"default_\":\"\",\"description\":\"verbose\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register_tool(tool_name, tool_path, schema_path, tool_code, tool_type, tool_source_object, include_functions, verbose)\",\"aggregations\":[]}"}, {"id": "?:Tool"}, {"id": "?:ToolType"}, {"id": "metagpt/tools/tool_data_type.py:ToolSchema"}, {"id": "{\"name\":\"ToolSchema\",\"package\":\"metagpt/tools/tool_data_type.py:ToolSchema\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/tool_data_type.py:ToolSchema:description"}, {"id": "metagpt/tools/tool_type.py"}, {"id": "metagpt/tools/tool_type.py:ToolType"}, {"id": "{\"name\":\"ToolType\",\"package\":\"metagpt/tools/tool_type.py:ToolType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"type_name\":{\"name\":\"type_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"type_name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/tool_type.py:ToolType:name"}, {"id": "metagpt/tools/tool_type.py:ToolType:type_name"}, {"id": "{\"name\":\"type_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"type_name\",\"compositions\":[]}"}, {"id": "metagpt/tools/tool_data_type.py:ToolTypeDef"}, {"id": "{\"name\":\"ToolTypeDef\",\"package\":\"metagpt/tools/tool_data_type.py:ToolTypeDef\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"usage_prompt\":{\"name\":\"usage_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"usage_prompt : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/tool_data_type.py:ToolTypeDef:desc"}, {"id": "metagpt/tools/tool_data_type.py:ToolTypeDef:name"}, {"id": "metagpt/tools/tool_data_type.py:ToolTypeDef:usage_prompt"}, {"id": "{\"name\":\"usage_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"usage_prompt : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/translator.py"}, {"id": "metagpt/tools/translator.py:Translator"}, {"id": "{\"name\":\"Translator\",\"package\":\"metagpt/tools/translator.py:Translator\",\"attributes\":{},\"methods\":{\"translate_prompt\":{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/translator.py:Translator:translate_prompt"}, {"id": "{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection"}, {"id": "{\"name\":\"TreeBasedSelection\",\"package\":\"metagpt/tools/libs/feature_engineering.py:TreeBasedSelection\",\"attributes\":{\"feats\":{\"name\":\"feats\",\"type_\":\"\",\"default_\":\"\",\"description\":\"feats : NoneType\",\"compositions\":[]},\"label_col\":{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]},\"task_type\":{\"name\":\"task_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_type : str\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:feats"}, {"id": "{\"name\":\"feats\",\"type_\":\"\",\"default_\":\"\",\"description\":\"feats : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:label_col"}, {"id": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:task_type"}, {"id": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:transform"}, {"id": "metagpt/strategy/tot.py:TreeofThought"}, {"id": "{\"name\":\"TreeofThought\",\"package\":\"metagpt/strategy/tot.py:TreeofThought\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"solver\":{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]},\"strategy\":{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:config"}, {"id": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"id": "{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"id": "{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:solve"}, {"id": "metagpt/roles/tutorial_assistant.py"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant"}, {"id": "{\"name\":\"TutorialAssistant\",\"package\":\"metagpt/roles/tutorial_assistant.py:TutorialAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"main_title\":{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]},\"total_content\":{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title"}, {"id": "{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content"}, {"id": "{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react"}, {"id": "metagpt/schema.py:UMLClassAttribute"}, {"id": "{\"name\":\"UMLClassAttribute\",\"package\":\"metagpt/schema.py:UMLClassAttribute\",\"attributes\":{\"default_value\":{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]},\"value_type\":{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:default_value"}, {"id": "{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:value_type"}, {"id": "{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:get_mermaid"}, {"id": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta"}, {"id": "{\"name\":\"UMLClassMeta\",\"package\":\"metagpt/schema.py:UMLClassMeta\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"visibility\":{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}},\"methods\":{\"name_to_visibility\":{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta:name"}, {"id": "metagpt/schema.py:UMLClassMeta:visibility"}, {"id": "{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta:name_to_visibility"}, {"id": "{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod"}, {"id": "{\"name\":\"UMLClassMethod\",\"package\":\"metagpt/schema.py:UMLClassMethod\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"return_type\":{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[\"UMLClassAttribute\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod:args"}, {"id": "{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"id": "metagpt/schema.py:UMLClassMethod:return_type"}, {"id": "{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod:get_mermaid"}, {"id": "?:UMLClassAttribute"}, {"id": "metagpt/schema.py:UMLClassView"}, {"id": "{\"name\":\"UMLClassView\",\"package\":\"metagpt/schema.py:UMLClassView\",\"attributes\":{\"attributes\":{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"methods\":{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]},\"load_dot_class_info\":{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}},\"compositions\":[\"UMLClassAttribute\",\"UMLClassMethod\"],\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"id": "metagpt/schema.py:UMLClassView:attributes"}, {"id": "{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"id": "metagpt/schema.py:UMLClassView:methods"}, {"id": "{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}"}, {"id": "metagpt/schema.py:UMLClassView:get_mermaid"}, {"id": "metagpt/schema.py:UMLClassView:load_dot_class_info"}, {"id": "{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"id": "?:UMLClassMethod"}, {"id": "?:UMLClassView"}, {"id": "metagpt/tools/ut_writer.py"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator"}, {"id": "{\"name\":\"UTGenerator\",\"package\":\"metagpt/tools/ut_writer.py:UTGenerator\",\"attributes\":{\"chatgpt_method\":{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]},\"icl_sample\":{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]},\"questions_path\":{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]},\"swagger_file\":{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]},\"template_prefix\":{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]},\"ut_py_path\":{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}},\"methods\":{\"ask_gpt_and_save\":{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]},\"build_api_doc\":{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]},\"build_object_properties\":{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]},\"generate_ut\":{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]},\"get_swagger_json\":{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]},\"get_tags_mapping\":{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]},\"gpt_msgs_to_code\":{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]},\"para_to_str\":{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method"}, {"id": "{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample"}, {"id": "{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:questions_path"}, {"id": "{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file"}, {"id": "{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix"}, {"id": "{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path"}, {"id": "{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save"}, {"id": "{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc"}, {"id": "{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties"}, {"id": "{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut"}, {"id": "{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json"}, {"id": "{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping"}, {"id": "{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code"}, {"id": "{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str"}, {"id": "{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage"}, {"id": "{\"name\":\"Usage\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Usage\",\"attributes\":{\"prompt_tokens\":{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]},\"total_tokens\":{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens"}, {"id": "{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens"}, {"id": "{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UserMessage"}, {"id": "{\"name\":\"UserMessage\",\"package\":\"metagpt/schema.py:UserMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/add_requirement.py"}, {"id": "metagpt/actions/add_requirement.py:UserRequirement"}, {"id": "{\"name\":\"UserRequirement\",\"package\":\"metagpt/actions/add_requirement.py:UserRequirement\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection"}, {"id": "{\"name\":\"VarianceBasedSelection\",\"package\":\"metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection\",\"attributes\":{\"feats\":{\"name\":\"feats\",\"type_\":\"\",\"default_\":\"\",\"description\":\"feats : NoneType\",\"compositions\":[]},\"label_col\":{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]},\"selector\":{\"name\":\"selector\",\"type_\":\"VarianceThreshold\",\"default_\":\"\",\"description\":\"selector : VarianceThreshold\",\"compositions\":[\"VarianceThreshold\"]},\"threshold\":{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[\"VarianceThreshold\"],\"aggregations\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:feats"}, {"id": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:label_col"}, {"id": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:selector"}, {"id": "{\"name\":\"selector\",\"type_\":\"VarianceThreshold\",\"default_\":\"\",\"description\":\"selector : VarianceThreshold\",\"compositions\":[\"VarianceThreshold\"]}"}, {"id": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:threshold"}, {"id": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:fit"}, {"id": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:transform"}, {"id": "?:VarianceThreshold"}, {"id": "metagpt/utils/visual_graph_repo.py"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo"}, {"id": "{\"name\":\"VisualDiGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo\",\"attributes\":{},\"methods\":{\"get_mermaid_class_view\":{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]},\"get_mermaid_sequence_view_versions\":{\"name\":\"get_mermaid_sequence_view_versions\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_view_versions(): List[str, str]\",\"aggregations\":[]},\"get_mermaid_sequence_views\":{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view"}, {"id": "{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_view_versions"}, {"id": "{\"name\":\"get_mermaid_sequence_view_versions\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_view_versions(): List[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views"}, {"id": "{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from"}, {"id": "{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"id": "{\"name\":\"VisualGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualGraphRepo\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"id": "{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient"}, {"id": "{\"name\":\"WDMHttpProxyClient\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient\",\"attributes\":{\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:proxy"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"id": "{\"name\":\"WebBrowseAndSummarize\",\"package\":\"metagpt/actions/research.py:WebBrowseAndSummarize\",\"attributes\":{\"browse_func\":{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"web_browser_engine\":{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]},\"validate_engine_and_run_func\":{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"WebBrowserEngine\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func"}, {"id": "{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:desc"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:name"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"id": "{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:validate_engine_and_run_func"}, {"id": "?:WebBrowserEngine"}, {"id": "metagpt/tools/web_browser_engine.py"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"id": "{\"name\":\"WebBrowserEngine\",\"package\":\"metagpt/tools/web_browser_engine.py:WebBrowserEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Optional[Callable[...,Coroutine[Any,Any,Union[WebPage,list[WebPage]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[..., Coroutine[Any, Any, Union[WebPage, list[WebPage]]]]]\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\"]}},\"methods\":{\"from_browser_config\":{\"name\":\"from_browser_config\",\"args\":[{\"name\":\"config\",\"type_\":\"BrowserConfig\",\"default_\":\"\",\"description\":\"config: BrowserConfig\",\"compositions\":[\"BrowserConfig\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_browser_config(config: BrowserConfig)\",\"aggregations\":[\"BrowserConfig\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]},\"validate_extra\":{\"name\":\"validate_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_extra()\",\"aggregations\":[]}},\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\"],\"aggregations\":[\"BrowserConfig\"]}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:model_config"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:proxy"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func"}, {"id": "{\"name\":\"run_func\",\"type_\":\"Optional[Callable[...,Coroutine[Any,Any,Union[WebPage,list[WebPage]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[..., Coroutine[Any, Any, Union[WebPage, list[WebPage]]]]]\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\"]}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:from_browser_config"}, {"id": "{\"name\":\"from_browser_config\",\"args\":[{\"name\":\"config\",\"type_\":\"BrowserConfig\",\"default_\":\"\",\"description\":\"config: BrowserConfig\",\"compositions\":[\"BrowserConfig\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_browser_config(config: BrowserConfig)\",\"aggregations\":[\"BrowserConfig\"]}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:validate_extra"}, {"id": "?:BrowserConfig"}, {"id": "metagpt/tools:WebBrowserEngineType"}, {"id": "{\"name\":\"WebBrowserEngineType\",\"package\":\"metagpt/tools:WebBrowserEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools:WebBrowserEngineType:name"}, {"id": "metagpt/utils/parse_html.py"}, {"id": "metagpt/utils/parse_html.py:WebPage"}, {"id": "{\"name\":\"WebPage\",\"package\":\"metagpt/utils/parse_html.py:WebPage\",\"attributes\":{\"html\":{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]},\"inner_text\":{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]},\"soup\":{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]},\"title\":{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{\"get_links\":{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}},\"compositions\":[],\"aggregations\":[\"Generator\"]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:html"}, {"id": "{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:inner_text"}, {"id": "{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:soup"}, {"id": "{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:title"}, {"id": "{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:url"}, {"id": "metagpt/utils/parse_html.py:WebPage:get_links"}, {"id": "{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}"}, {"id": "?:Generator"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv"}, {"id": "{\"name\":\"WerewolfEnv\",\"package\":\"metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv\",\"attributes\":{\"history\":{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]},\"timestamp\":{\"name\":\"timestamp\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timestamp : int\",\"compositions\":[]}},\"methods\":{\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"add_timestamp\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"add_timestamp: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(message: Message, add_timestamp: bool)\",\"aggregations\":[\"Message\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:history"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:timestamp"}, {"id": "{\"name\":\"timestamp\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timestamp : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:publish_message"}, {"id": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"add_timestamp\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"add_timestamp: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(message: Message, add_timestamp: bool)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:run"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv"}, {"id": "{\"name\":\"WerewolfExtEnv\",\"package\":\"metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv\",\"attributes\":{\"eval_step_idx\":{\"name\":\"eval_step_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"eval_step_idx : int\",\"compositions\":[]},\"game_setup\":{\"name\":\"game_setup\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"game_setup : str\",\"compositions\":[]},\"is_hunted_player_saved\":{\"name\":\"is_hunted_player_saved\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_hunted_player_saved : bool\",\"compositions\":[]},\"living_players\":{\"name\":\"living_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"living_players\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"per_round_steps\":{\"name\":\"per_round_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"per_round_steps : int\",\"compositions\":[]},\"player_current_dead\":{\"name\":\"player_current_dead\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"player_current_dead : list[str]\",\"compositions\":[]},\"player_hunted\":{\"name\":\"player_hunted\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_hunted : Optional[str]\",\"compositions\":[]},\"player_poisoned\":{\"name\":\"player_poisoned\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_poisoned : Optional[str]\",\"compositions\":[]},\"player_protected\":{\"name\":\"player_protected\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_protected : Optional[str]\",\"compositions\":[]},\"players_state\":{\"name\":\"players_state\",\"type_\":\"dict[str,tuple[str,RoleState]]\",\"default_\":\"\",\"description\":\"players_state : dict[str, tuple[str, RoleState]]\",\"compositions\":[\"RoleState\",\"tuple\"]},\"round_hunts\":{\"name\":\"round_hunts\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"round_hunts : dict[str, str]\",\"compositions\":[]},\"round_idx\":{\"name\":\"round_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"round_idx : int\",\"compositions\":[]},\"round_votes\":{\"name\":\"round_votes\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"round_votes : dict[str, str]\",\"compositions\":[]},\"special_role_players\":{\"name\":\"special_role_players\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"special_role_players : list[str]\",\"compositions\":[]},\"step_idx\":{\"name\":\"step_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"step_idx : int\",\"compositions\":[]},\"villager_players\":{\"name\":\"villager_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"villager_players\",\"compositions\":[]},\"werewolf_players\":{\"name\":\"werewolf_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"werewolf_players\",\"compositions\":[]},\"win_reason\":{\"name\":\"win_reason\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"win_reason : Optional[str]\",\"compositions\":[]},\"winner\":{\"name\":\"winner\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"winner : Optional[str]\",\"compositions\":[]},\"witch_antidote_left\":{\"name\":\"witch_antidote_left\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"witch_antidote_left : int\",\"compositions\":[]},\"witch_poison_left\":{\"name\":\"witch_poison_left\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"witch_poison_left : int\",\"compositions\":[]}},\"methods\":{\"curr_step_instruction\":{\"name\":\"curr_step_instruction\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"curr_step_instruction(): dict\",\"aggregations\":[]},\"get_players_state\":{\"name\":\"get_players_state\",\"args\":[{\"name\":\"player_names\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"player_names: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,RoleState]\",\"description\":\"dict[str, RoleState]\",\"compositions\":[\"RoleState\"]},\"description\":\"get_players_state(player_names: list[str]): dict[str, RoleState]\",\"aggregations\":[\"RoleState\"]},\"init_game_setup\":{\"name\":\"init_game_setup\",\"args\":[{\"name\":\"role_uniq_objs\",\"type_\":\"list[object]\",\"default_\":\"\",\"description\":\"role_uniq_objs: list[object]\",\"compositions\":[\"object\"]},{\"name\":\"num_villager\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_villager: int\",\"compositions\":[]},{\"name\":\"num_werewolf\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_werewolf: int\",\"compositions\":[]},{\"name\":\"shuffle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"shuffle\",\"compositions\":[]},{\"name\":\"add_human\",\"type_\":\"\",\"default_\":\"\",\"description\":\"add_human\",\"compositions\":[]},{\"name\":\"use_reflection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_reflection\",\"compositions\":[]},{\"name\":\"use_experience\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_experience\",\"compositions\":[]},{\"name\":\"use_memory_selection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_memory_selection\",\"compositions\":[]},{\"name\":\"new_experience_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_experience_version\",\"compositions\":[]},{\"name\":\"prepare_human_player\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prepare_human_player\",\"compositions\":[]}],\"return_args\":{\"type_\":\"tuple[str,list]\",\"description\":\"tuple[str, list]\",\"compositions\":[\"tuple\"]},\"description\":\"init_game_setup(role_uniq_objs: list[object], num_villager: int, num_werewolf: int, shuffle, add_human, use_reflection, use_experience, use_memory_selection, new_experience_version, prepare_human_player): tuple[str, list]\",\"aggregations\":[\"tuple\",\"object\"]},\"update_game_states\":{\"name\":\"update_game_states\",\"args\":[{\"name\":\"memories\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"memories: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_game_states(memories: list)\",\"aggregations\":[]},\"vote_kill_someone\":{\"name\":\"vote_kill_someone\",\"args\":[{\"name\":\"voteer\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"voteer: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"player_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"vote_kill_someone(voteer: 'Role', player_name: str)\",\"aggregations\":[\"Role\"]},\"witch_poison_someone\":{\"name\":\"witch_poison_someone\",\"args\":[{\"name\":\"witch\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"witch: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_name: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"witch_poison_someone(witch: 'Role', player_name: Optional[str])\",\"aggregations\":[\"Role\"]},\"witch_save_someone\":{\"name\":\"witch_save_someone\",\"args\":[{\"name\":\"witch\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"witch: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_name: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"witch_save_someone(witch: 'Role', player_name: Optional[str])\",\"aggregations\":[\"Role\"]},\"wolf_kill_someone\":{\"name\":\"wolf_kill_someone\",\"args\":[{\"name\":\"wolf\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"wolf: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"player_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"wolf_kill_someone(wolf: 'Role', player_name: str)\",\"aggregations\":[\"Role\"]}},\"compositions\":[\"RoleState\",\"tuple\"],\"aggregations\":[\"object\",\"Role\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:eval_step_idx"}, {"id": "{\"name\":\"eval_step_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"eval_step_idx : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:game_setup"}, {"id": "{\"name\":\"game_setup\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"game_setup : str\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:is_hunted_player_saved"}, {"id": "{\"name\":\"is_hunted_player_saved\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_hunted_player_saved : bool\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:living_players"}, {"id": "{\"name\":\"living_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"living_players\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:model_config"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:per_round_steps"}, {"id": "{\"name\":\"per_round_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"per_round_steps : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_current_dead"}, {"id": "{\"name\":\"player_current_dead\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"player_current_dead : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_hunted"}, {"id": "{\"name\":\"player_hunted\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_hunted : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_poisoned"}, {"id": "{\"name\":\"player_poisoned\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_poisoned : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_protected"}, {"id": "{\"name\":\"player_protected\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_protected : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:players_state"}, {"id": "{\"name\":\"players_state\",\"type_\":\"dict[str,tuple[str,RoleState]]\",\"default_\":\"\",\"description\":\"players_state : dict[str, tuple[str, RoleState]]\",\"compositions\":[\"RoleState\",\"tuple\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_hunts"}, {"id": "{\"name\":\"round_hunts\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"round_hunts : dict[str, str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_idx"}, {"id": "{\"name\":\"round_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"round_idx : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_votes"}, {"id": "{\"name\":\"round_votes\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"round_votes : dict[str, str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:special_role_players"}, {"id": "{\"name\":\"special_role_players\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"special_role_players : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:step_idx"}, {"id": "{\"name\":\"step_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"step_idx : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:villager_players"}, {"id": "{\"name\":\"villager_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"villager_players\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:werewolf_players"}, {"id": "{\"name\":\"werewolf_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"werewolf_players\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:win_reason"}, {"id": "{\"name\":\"win_reason\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"win_reason : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:winner"}, {"id": "{\"name\":\"winner\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"winner : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_antidote_left"}, {"id": "{\"name\":\"witch_antidote_left\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"witch_antidote_left : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_poison_left"}, {"id": "{\"name\":\"witch_poison_left\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"witch_poison_left : int\",\"compositions\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:curr_step_instruction"}, {"id": "{\"name\":\"curr_step_instruction\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"curr_step_instruction(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:get_players_state"}, {"id": "{\"name\":\"get_players_state\",\"args\":[{\"name\":\"player_names\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"player_names: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,RoleState]\",\"description\":\"dict[str, RoleState]\",\"compositions\":[\"RoleState\"]},\"description\":\"get_players_state(player_names: list[str]): dict[str, RoleState]\",\"aggregations\":[\"RoleState\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:init_game_setup"}, {"id": "{\"name\":\"init_game_setup\",\"args\":[{\"name\":\"role_uniq_objs\",\"type_\":\"list[object]\",\"default_\":\"\",\"description\":\"role_uniq_objs: list[object]\",\"compositions\":[\"object\"]},{\"name\":\"num_villager\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_villager: int\",\"compositions\":[]},{\"name\":\"num_werewolf\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_werewolf: int\",\"compositions\":[]},{\"name\":\"shuffle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"shuffle\",\"compositions\":[]},{\"name\":\"add_human\",\"type_\":\"\",\"default_\":\"\",\"description\":\"add_human\",\"compositions\":[]},{\"name\":\"use_reflection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_reflection\",\"compositions\":[]},{\"name\":\"use_experience\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_experience\",\"compositions\":[]},{\"name\":\"use_memory_selection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_memory_selection\",\"compositions\":[]},{\"name\":\"new_experience_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_experience_version\",\"compositions\":[]},{\"name\":\"prepare_human_player\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prepare_human_player\",\"compositions\":[]}],\"return_args\":{\"type_\":\"tuple[str,list]\",\"description\":\"tuple[str, list]\",\"compositions\":[\"tuple\"]},\"description\":\"init_game_setup(role_uniq_objs: list[object], num_villager: int, num_werewolf: int, shuffle, add_human, use_reflection, use_experience, use_memory_selection, new_experience_version, prepare_human_player): tuple[str, list]\",\"aggregations\":[\"tuple\",\"object\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:update_game_states"}, {"id": "{\"name\":\"update_game_states\",\"args\":[{\"name\":\"memories\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"memories: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_game_states(memories: list)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:vote_kill_someone"}, {"id": "{\"name\":\"vote_kill_someone\",\"args\":[{\"name\":\"voteer\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"voteer: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"player_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"vote_kill_someone(voteer: 'Role', player_name: str)\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_poison_someone"}, {"id": "{\"name\":\"witch_poison_someone\",\"args\":[{\"name\":\"witch\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"witch: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_name: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"witch_poison_someone(witch: 'Role', player_name: Optional[str])\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_save_someone"}, {"id": "{\"name\":\"witch_save_someone\",\"args\":[{\"name\":\"witch\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"witch: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_name: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"witch_save_someone(witch: 'Role', player_name: Optional[str])\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:wolf_kill_someone"}, {"id": "{\"name\":\"wolf_kill_someone\",\"args\":[{\"name\":\"wolf\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"wolf: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"player_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"wolf_kill_someone(wolf: 'Role', player_name: str)\",\"aggregations\":[\"Role\"]}"}, {"id": "?:RoleState"}, {"id": "?:object"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate"}, {"id": "{\"name\":\"WikiHowTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:WikiHowTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig"}, {"id": "{\"name\":\"WorkspaceConfig\",\"package\":\"metagpt/configs/workspace_config.py:WorkspaceConfig\",\"attributes\":{\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"uid\":{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]},\"use_uid\":{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}},\"methods\":{\"check_uid_and_update_path\":{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]},\"check_workspace_path\":{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:path"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid"}, {"id": "{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid"}, {"id": "{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path"}, {"id": "{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path"}, {"id": "{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}"}, {"id": "metagpt/environment/api/env_api.py:WriteAPIRegistry"}, {"id": "{\"name\":\"WriteAPIRegistry\",\"package\":\"metagpt/environment/api/env_api.py:WriteAPIRegistry\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code.py"}, {"id": "metagpt/actions/write_code.py:WriteCode"}, {"id": "{\"name\":\"WriteCode\",\"package\":\"metagpt/actions/write_code.py:WriteCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_codes\":{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"Document\",\"ProjectRepo\"]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Document\",\"ProjectRepo\",\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"id": "metagpt/actions/write_code.py:WriteCode:name"}, {"id": "metagpt/actions/write_code.py:WriteCode:get_codes"}, {"id": "{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"Document\",\"ProjectRepo\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:write_code"}, {"id": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_an_draft.py"}, {"id": "metagpt/actions/write_code_an_draft.py:WriteCodeAN"}, {"id": "{\"name\":\"WriteCodeAN\",\"package\":\"metagpt/actions/write_code_an_draft.py:WriteCodeAN\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"id": "{\"name\":\"WriteCodePlanAndChange\",\"package\":\"metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_old_codes\":{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes"}, {"id": "{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run"}, {"id": "metagpt/actions/write_code_review.py"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"id": "{\"name\":\"WriteCodeReview\",\"package\":\"metagpt/actions/write_code_review.py:WriteCodeReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code_review_and_rewrite\":{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:name"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:run"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite"}, {"id": "{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent"}, {"id": "{\"name\":\"WriteContent\",\"package\":\"metagpt/actions/write_tutorial.py:WriteContent\",\"attributes\":{\"directory\":{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:directory"}, {"id": "{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:language"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:name"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/design_api.py"}, {"id": "metagpt/actions/design_api.py:WriteDesign"}, {"id": "{\"name\":\"WriteDesign\",\"package\":\"metagpt/actions/design_api.py:WriteDesign\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/design_api.py:WriteDesign:desc"}, {"id": "metagpt/actions/design_api.py:WriteDesign:i_context"}, {"id": "metagpt/actions/design_api.py:WriteDesign:name"}, {"id": "metagpt/actions/design_api.py:WriteDesign:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory"}, {"id": "{\"name\":\"WriteDirectory\",\"package\":\"metagpt/actions/write_tutorial.py:WriteDirectory\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:language"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:name"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_docstring.py"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring"}, {"id": "{\"name\":\"WriteDocstring\",\"package\":\"metagpt/actions/write_docstring.py:WriteDocstring\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]},\"write_docstring\":{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:desc"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:i_context"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring"}, {"id": "{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/actions/write_prd.py"}, {"id": "metagpt/actions/write_prd.py:WritePRD"}, {"id": "{\"name\":\"WritePRD\",\"package\":\"metagpt/actions/write_prd.py:WritePRD\",\"attributes\":{\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}},\"methods\":{\"get_related_docs\":{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Document\",\"Message\",\"ActionOutput\\\\\"]}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:project_name"}, {"id": "metagpt/actions/write_prd.py:WritePRD:get_related_docs"}, {"id": "{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}"}, {"id": "?:ActionOutput\\"}, {"id": "metagpt/actions/write_prd_review.py"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview"}, {"id": "{\"name\":\"WritePRDReview\",\"package\":\"metagpt/actions/write_prd_review.py:WritePRDReview\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]},\"prd_review_prompt_template\":{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:desc"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:name"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:prd"}, {"id": "{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template"}, {"id": "{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_review.py"}, {"id": "metagpt/actions/write_review.py:WriteReview"}, {"id": "{\"name\":\"WriteReview\",\"package\":\"metagpt/actions/write_review.py:WriteReview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_review.py:WriteReview:name"}, {"id": "metagpt/actions/write_review.py:WriteReview:run"}, {"id": "metagpt/actions/project_management.py"}, {"id": "metagpt/actions/project_management.py:WriteTasks"}, {"id": "{\"name\":\"WriteTasks\",\"package\":\"metagpt/actions/project_management.py:WriteTasks\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/project_management.py:WriteTasks:i_context"}, {"id": "metagpt/actions/project_management.py:WriteTasks:name"}, {"id": "metagpt/actions/project_management.py:WriteTasks:run"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart"}, {"id": "{\"name\":\"WriteTeachingPlanPart\",\"package\":\"metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{\"format_value\":{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp"}, {"id": "{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value"}, {"id": "{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_test.py"}, {"id": "metagpt/actions/write_test.py:WriteTest"}, {"id": "{\"name\":\"WriteTest\",\"package\":\"metagpt/actions/write_test.py:WriteTest\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}},\"compositions\":[\"TestingContext\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:name"}, {"id": "metagpt/actions/write_test.py:WriteTest:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:write_code"}, {"id": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam"}, {"id": "{\"name\":\"WsParam\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}},\"methods\":{\"create_url\":{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host"}, {"id": "{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message"}, {"id": "{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path"}, {"id": "{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url"}, {"id": "{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/yaml_model.py"}, {"id": "metagpt/utils/yaml_model.py:YamlModel"}, {"id": "{\"name\":\"YamlModel\",\"package\":\"metagpt/utils/yaml_model.py:YamlModel\",\"attributes\":{\"extra_fields\":{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}},\"methods\":{\"from_yaml_file\":{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]},\"read_yaml\":{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]},\"to_yaml_file\":{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:extra_fields"}, {"id": "{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file"}, {"id": "{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:read_yaml"}, {"id": "{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file"}, {"id": "{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}"}, {"id": "?:YamlModel"}, {"id": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"id": "{\"name\":\"YamlModelWithoutDefault\",\"package\":\"metagpt/utils/yaml_model.py:YamlModelWithoutDefault\",\"attributes\":{},\"methods\":{\"check_not_default_config\":{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config"}, {"id": "{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"id": "{\"name\":\"ZhiPuAILLM\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuAILLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}},\"compositions\":[\"CostManager\"],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:cost_manager"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:pricing_plan"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion"}, {"id": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuEvent"}, {"id": "{\"name\":\"ZhiPuEvent\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuEvent\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI"}, {"id": "{\"name\":\"ZhiPuModelAPI\",\"package\":\"metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI\",\"attributes\":{},\"methods\":{\"acreate\":{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]},\"acreate_stream\":{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]},\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]},\"split_zhipu_api_url\":{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"AsyncSSEClient\"]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate"}, {"id": "{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream"}, {"id": "{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest"}, {"id": "{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url"}, {"id": "{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}"}, {"id": "?:AsyncSSEClient"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill"}, {"id": "{\"name\":\"_AgentSkill\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView"}, {"id": "{\"name\":\"_VisualClassView\",\"package\":\"metagpt/utils/visual_graph_repo.py:_VisualClassView\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"generalizations\":{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]},\"uml\":{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align: int): str\",\"aggregations\":[]}},\"compositions\":[\"UMLClassView\"],\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations"}, {"id": "{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package"}, {"id": "{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml"}, {"id": "{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid"}, {"id": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/parse_docstring.py:reSTDocstringParser"}, {"id": "{\"name\":\"reSTDocstringParser\",\"package\":\"metagpt/utils/parse_docstring.py:reSTDocstringParser\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:_store"}, {"id": "metagpt/utils/git_repository.py:GitRepository:_dependency"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:_git_repo"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:_split_literal"}, {"id": "metagpt/repo_parser.py:DotClassMethod:_parse_name"}, {"id": "metagpt/repo_parser.py:DotClassMethod:_parse_args"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_file"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_expr"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_name"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_if"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_if_compare"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_variable"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_assign"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_classes"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships"}, {"id": "metagpt/repo_parser.py:RepoParser:_split_class_line"}, {"id": "metagpt/repo_parser.py:RepoParser:_split_relationship_line"}, {"id": "metagpt/repo_parser.py:RepoParser:_get_label"}, {"id": "metagpt/repo_parser.py:RepoParser:_create_path_mapping"}, {"id": "metagpt/repo_parser.py:RepoParser:_repair_namespaces"}, {"id": "metagpt/repo_parser.py:RepoParser:_repair_ns"}, {"id": "metagpt/repo_parser.py:RepoParser:_find_root"}, {"id": "metagpt/repo_parser.py:is_func"}, {"id": "function"}, {"id": "metagpt/repo_parser.py:ast.Constant:\nBuild a symbols repository from source code.\n\nThis script is designed to create a symbols repository from the provided source code.\n\n@Time : 2023/11/17 17:58\n@Author : alexanderwu\n@File : repo_parser.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nBuild a symbols repository from source code.\\n\\nThis script is designed to create a symbols repository from the provided source code.\\n\\n@Time : 2023/11/17 17:58\\n@Author : alexanderwu\\n@File : repo_parser.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:__future__"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/repo_parser.py:names:['annotations']"}, {"id": "metagpt/repo_parser.py:ast"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:json"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:re"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:subprocess"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:pathlib"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/repo_parser.py:names:['Path']"}, {"id": "metagpt/repo_parser.py:module:typing"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/repo_parser.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/repo_parser.py:pandas as pd"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:pydantic"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/repo_parser.py:names:['BaseModel', 'Field', 'field_validator']"}, {"id": "metagpt/repo_parser.py:module:metagpt.const"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"id": "metagpt/repo_parser.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']"}, {"id": "metagpt/repo_parser.py:module:metagpt.logs"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/repo_parser.py:names:['logger']"}, {"id": "metagpt/repo_parser.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\",\"remove_white_spaces\"]}}"}, {"id": "metagpt/repo_parser.py:names:['any_to_str', 'aread', 'remove_white_spaces']"}, {"id": "metagpt/repo_parser.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/repo_parser.py:names:['handle_exception']"}, {"id": "{\"lineno\":30,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoFileInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeBlockInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":226,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassAttribute\"],\"properties\":{}}"}, {"id": "{\"lineno\":229,\"end_lineno\":262,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":265,\"end_lineno\":279,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassRelationship\"],\"properties\":{}}"}, {"id": "{\"lineno\":282,\"end_lineno\":327,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotReturn\"],\"properties\":{}}"}, {"id": "{\"lineno\":330,\"end_lineno\":419,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassMethod\"],\"properties\":{}}"}, {"id": "{\"lineno\":422,\"end_lineno\":1005,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":1008,\"end_lineno\":1018,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_func\"],\"properties\":{}}"}, {"id": "metagpt/subscription.py:asyncio"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/subscription.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"id": "metagpt/subscription.py:names:['AsyncGenerator', 'Awaitable', 'Callable']"}, {"id": "metagpt/subscription.py:module:pydantic"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/subscription.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/subscription.py:module:metagpt.logs"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/subscription.py:names:['logger']"}, {"id": "metagpt/subscription.py:module:metagpt.roles"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/subscription.py:names:['Role']"}, {"id": "metagpt/subscription.py:module:metagpt.schema"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/subscription.py:names:['Message']"}, {"id": "{\"lineno\":11,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubscriptionRunner\"],\"properties\":{}}"}, {"id": "metagpt/software_company.py"}, {"id": "metagpt/software_company.py:generate_repo"}, {"id": "metagpt/software_company.py:startup"}, {"id": "metagpt/software_company.py:copy_config_to"}, {"id": "metagpt/software_company.py:app"}, {"id": "global_variable"}, {"id": "metagpt/software_company.py:asyncio"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/software_company.py:shutil"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/software_company.py:module:pathlib"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/software_company.py:names:['Path']"}, {"id": "metagpt/software_company.py:typer"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"typer\"],\"properties\":{}}"}, {"id": "metagpt/software_company.py:module:metagpt.config2"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/software_company.py:names:['config']"}, {"id": "metagpt/software_company.py:module:metagpt.const"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/software_company.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']"}, {"id": "metagpt/software_company.py:module:metagpt.context"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/software_company.py:names:['Context']"}, {"id": "metagpt/software_company.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/software_company.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"app\"],\"properties\":{}}"}, {"id": "{\"lineno\":18,\"end_lineno\":72,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_repo\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":122,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"startup\"],\"properties\":{}}"}, {"id": "{\"lineno\":125,\"end_lineno\":140,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"copy_config_to\"],\"properties\":{}}"}, {"id": "metagpt/software_company.py:__name__:__main__"}, {"id": "{\"lineno\":143,\"end_lineno\":144,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/__init__.py"}, {"id": "metagpt/__init__.py:module:metagpt"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"id": "metagpt/__init__.py:names:['_compat as _']"}, {"id": "metagpt/llm.py"}, {"id": "metagpt/llm.py:LLM"}, {"id": "metagpt/llm.py:ast.Constant:\n@Time : 2023/5/11 14:45\n@Author : alexanderwu\n@File : llm.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:45\\n@Author : alexanderwu\\n@File : llm.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/llm.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/llm.py:names:['Optional']"}, {"id": "metagpt/llm.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/llm.py:names:['LLMConfig']"}, {"id": "metagpt/llm.py:module:metagpt.context"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/llm.py:names:['Context']"}, {"id": "metagpt/llm.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/llm.py:names:['BaseLLM']"}, {"id": "{\"lineno\":15,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"LLM\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:merge_dict"}, {"id": "metagpt/config2.py:config"}, {"id": "metagpt/config2.py:ast.Constant:\n@Time : 2024/1/4 01:25\n@Author : alexanderwu\n@File : config2.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 01:25\\n@Author : alexanderwu\\n@File : config2.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:os"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:module:pathlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/config2.py:names:['Path']"}, {"id": "metagpt/config2.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/config2.py:names:['Dict', 'Iterable', 'List', 'Literal', 'Optional']"}, {"id": "metagpt/config2.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"id": "metagpt/config2.py:names:['BaseModel', 'model_validator']"}, {"id": "metagpt/config2.py:module:metagpt.configs.browser_config"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"id": "metagpt/config2.py:names:['BrowserConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/config2.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/config2.py:module:metagpt.configs.mermaid_config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"id": "metagpt/config2.py:names:['MermaidConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.redis_config"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"id": "metagpt/config2.py:names:['RedisConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.s3_config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"id": "metagpt/config2.py:names:['S3Config']"}, {"id": "metagpt/config2.py:module:metagpt.configs.search_config"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"id": "metagpt/config2.py:names:['SearchConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.workspace_config"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"id": "metagpt/config2.py:names:['WorkspaceConfig']"}, {"id": "metagpt/config2.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/config2.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']"}, {"id": "metagpt/config2.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/config2.py:names:['YamlModel']"}, {"id": "{\"lineno\":25,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CLIParams\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Config\"],\"properties\":{}}"}, {"id": "{\"lineno\":129,\"end_lineno\":134,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_dict\"],\"properties\":{}}"}, {"id": "{\"lineno\":137,\"end_lineno\":137,\"type_name\":\"ast.Assign\",\"tokens\":[\"config\"],\"properties\":{}}"}, {"id": "metagpt/team.py:Team:__init__"}, {"id": "metagpt/team.py:Team:_check_balance"}, {"id": "metagpt/team.py:Team:_save"}, {"id": "metagpt/team.py:ast.Constant:\n@Time : 2023/5/12 00:30\n@Author : alexanderwu\n@File : team.py\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\n Section 2.2.3.3 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/12 00:30\\n@Author : alexanderwu\\n@File : team.py\\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\\n Section 2.2.3.3 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/team.py:warnings"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/team.py:module:pathlib"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/team.py:names:['Path']"}, {"id": "metagpt/team.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/team.py:names:['Any', 'Optional']"}, {"id": "metagpt/team.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/team.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/team.py:module:metagpt.actions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/team.py:names:['UserRequirement']"}, {"id": "metagpt/team.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"id": "metagpt/team.py:names:['MESSAGE_ROUTE_TO_ALL', 'SERDESER_PATH']"}, {"id": "metagpt/team.py:module:metagpt.context"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/team.py:names:['Context']"}, {"id": "metagpt/team.py:module:metagpt.environment"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/team.py:names:['Environment']"}, {"id": "metagpt/team.py:module:metagpt.logs"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/team.py:names:['logger']"}, {"id": "metagpt/team.py:module:metagpt.roles"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/team.py:names:['Role']"}, {"id": "metagpt/team.py:module:metagpt.schema"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/team.py:names:['Message']"}, {"id": "metagpt/team.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"id": "metagpt/team.py:names:['NoMoneyException', 'read_json_file', 'serialize_decorator', 'write_json_file']"}, {"id": "{\"lineno\":32,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Team\"],\"properties\":{}}"}, {"id": "metagpt/context.py:AttrDict:__init__"}, {"id": "metagpt/context.py:AttrDict:__getattr__"}, {"id": "metagpt/context.py:AttrDict:__setattr__"}, {"id": "metagpt/context.py:AttrDict:__delattr__"}, {"id": "metagpt/context.py:ast.Constant:\n@Time : 2024/1/4 16:32\n@Author : alexanderwu\n@File : context.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:32\\n@Author : alexanderwu\\n@File : context.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/context.py:os"}, {"id": "metagpt/context.py:module:pathlib"}, {"id": "metagpt/context.py:names:['Path']"}, {"id": "metagpt/context.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/context.py:names:['Any', 'Optional']"}, {"id": "metagpt/context.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"id": "metagpt/context.py:names:['BaseModel', 'ConfigDict']"}, {"id": "metagpt/context.py:module:metagpt.config2"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/context.py:names:['Config']"}, {"id": "metagpt/context.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/context.py:names:['LLMConfig']"}, {"id": "metagpt/context.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/context.py:names:['BaseLLM']"}, {"id": "metagpt/context.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"id": "metagpt/context.py:names:['create_llm_instance']"}, {"id": "metagpt/context.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"id": "metagpt/context.py:names:['CostManager']"}, {"id": "metagpt/context.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/context.py:names:['GitRepository']"}, {"id": "metagpt/context.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/context.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":23,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AttrDict\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Context\"],\"properties\":{}}"}, {"id": "metagpt/logs.py"}, {"id": "metagpt/logs.py:define_log_level"}, {"id": "metagpt/logs.py:log_llm_stream"}, {"id": "metagpt/logs.py:set_llm_stream_logfunc"}, {"id": "metagpt/logs.py:logger"}, {"id": "metagpt/logs.py:_llm_stream_log"}, {"id": "metagpt/logs.py:ast.Constant:\n@Time : 2023/6/1 12:41\n@Author : alexanderwu\n@File : logs.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/1 12:41\\n@Author : alexanderwu\\n@File : logs.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/logs.py:sys"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/logs.py:module:datetime"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/logs.py:names:['datetime']"}, {"id": "metagpt/logs.py:module:functools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"id": "metagpt/logs.py:names:['partial']"}, {"id": "metagpt/logs.py:module:loguru"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"id": "metagpt/logs.py:names:['logger as _logger']"}, {"id": "metagpt/logs.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/logs.py:names:['METAGPT_ROOT']"}, {"id": "{\"lineno\":18,\"end_lineno\":27,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"define_log_level\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":34,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_llm_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":39,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"set_llm_stream_logfunc\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"_llm_stream_log\"],\"properties\":{}}"}, {"id": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df"}, {"id": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain"}, {"id": "metagpt/document.py:Repo:_path"}, {"id": "metagpt/document.py:Repo:_set"}, {"id": "metagpt/document.py:validate_cols"}, {"id": "metagpt/document.py:read_data"}, {"id": "metagpt/document.py:ast.Constant:\n@Time : 2023/6/8 14:03\n@Author : alexanderwu\n@File : document.py\n@Desc : Classes and Operations Related to Files in the File System.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/8 14:03\\n@Author : alexanderwu\\n@File : document.py\\n@Desc : Classes and Operations Related to Files in the File System.\\n\"],\"properties\":{}}"}, {"id": "metagpt/document.py:module:enum"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/document.py:names:['Enum']"}, {"id": "metagpt/document.py:module:pathlib"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/document.py:names:['Path']"}, {"id": "metagpt/document.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"id": "metagpt/document.py:names:['Optional', 'Union']"}, {"id": "metagpt/document.py:pandas as pd"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/document.py:module:langchain.document_loaders"}, {"id": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"id": "metagpt/document.py:names:['TextLoader', 'UnstructuredPDFLoader', 'UnstructuredWordDocumentLoader']"}, {"id": "metagpt/document.py:module:langchain.text_splitter"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"id": "metagpt/document.py:names:['CharacterTextSplitter']"}, {"id": "metagpt/document.py:module:pydantic"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/document.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/document.py:module:tqdm"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"id": "metagpt/document.py:names:['tqdm']"}, {"id": "metagpt/document.py:module:metagpt.logs"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/document.py:names:['logger']"}, {"id": "metagpt/document.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"id": "metagpt/document.py:names:['RepoParser']"}, {"id": "{\"lineno\":27,\"end_lineno\":29,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_cols\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":51,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_data\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocumentStatus\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"id": "{\"lineno\":115,\"end_lineno\":165,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IndexableDocument\"],\"properties\":{}}"}, {"id": "{\"lineno\":168,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoMetadata\"],\"properties\":{}}"}, {"id": "{\"lineno\":175,\"end_lineno\":239,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Repo\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py"}, {"id": "metagpt/_compat.py:platform"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:sys"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:warnings"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:n:a:m:e:p:l:a:t:f:o:r:m:.:s:y:s:t:e:m"}, {"id": "{\"lineno\":5,\"end_lineno\":23,\"type_name\":\"ast.If\",\"tokens\":[\"n\",\"a\",\"m\",\"e\",\"p\",\"l\",\"a\",\"t\",\"f\",\"o\",\"r\",\"m\",\".\",\"s\",\"y\",\"s\",\"t\",\"e\",\"m\"],\"properties\":{}}"}, {"id": "metagpt/context_mixin.py:ContextMixin:_process_context_mixin_extra"}, {"id": "metagpt/context_mixin.py:ast.Constant:\n@Time : 2024/1/11 17:25\n@Author : alexanderwu\n@File : context_mixin.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/11 17:25\\n@Author : alexanderwu\\n@File : context_mixin.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/context_mixin.py:module:typing"}, {"id": "metagpt/context_mixin.py:names:['Optional']"}, {"id": "metagpt/context_mixin.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/context_mixin.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']"}, {"id": "metagpt/context_mixin.py:module:metagpt.config2"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/context_mixin.py:names:['Config']"}, {"id": "metagpt/context_mixin.py:module:metagpt.context"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/context_mixin.py:names:['Context']"}, {"id": "metagpt/context_mixin.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/context_mixin.py:names:['BaseLLM']"}, {"id": "{\"lineno\":17,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ContextMixin\"],\"properties\":{}}"}, {"id": "metagpt/const.py"}, {"id": "metagpt/const.py:get_metagpt_package_root"}, {"id": "metagpt/const.py:get_metagpt_root"}, {"id": "metagpt/const.py:CONFIG_ROOT"}, {"id": "metagpt/const.py:METAGPT_ROOT"}, {"id": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT"}, {"id": "metagpt/const.py:EXAMPLE_PATH"}, {"id": "metagpt/const.py:DATA_PATH"}, {"id": "metagpt/const.py:TEST_DATA_PATH"}, {"id": "metagpt/const.py:RESEARCH_PATH"}, {"id": "metagpt/const.py:TUTORIAL_PATH"}, {"id": "metagpt/const.py:INVOICE_OCR_TABLE_PATH"}, {"id": "metagpt/const.py:UT_PATH"}, {"id": "metagpt/const.py:SWAGGER_PATH"}, {"id": "metagpt/const.py:UT_PY_PATH"}, {"id": "metagpt/const.py:API_QUESTIONS_PATH"}, {"id": "metagpt/const.py:SERDESER_PATH"}, {"id": "metagpt/const.py:TMP"}, {"id": "metagpt/const.py:SOURCE_ROOT"}, {"id": "metagpt/const.py:PROMPT_PATH"}, {"id": "metagpt/const.py:SKILL_DIRECTORY"}, {"id": "metagpt/const.py:TOOL_SCHEMA_PATH"}, {"id": "metagpt/const.py:TOOL_LIBS_PATH"}, {"id": "metagpt/const.py:MEM_TTL"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_FROM"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY"}, {"id": "metagpt/const.py:MESSAGE_META_ROLE"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE"}, {"id": "metagpt/const.py:REQUIREMENT_FILENAME"}, {"id": "metagpt/const.py:BUGFIX_FILENAME"}, {"id": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME"}, {"id": "metagpt/const.py:DOCS_FILE_REPO"}, {"id": "metagpt/const.py:PRDS_FILE_REPO"}, {"id": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO"}, {"id": "metagpt/const.py:TASK_FILE_REPO"}, {"id": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO"}, {"id": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO"}, {"id": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO"}, {"id": "metagpt/const.py:SEQ_FLOW_FILE_REPO"}, {"id": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO"}, {"id": "metagpt/const.py:PRD_PDF_FILE_REPO"}, {"id": "metagpt/const.py:TASK_PDF_FILE_REPO"}, {"id": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO"}, {"id": "metagpt/const.py:TEST_CODES_FILE_REPO"}, {"id": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO"}, {"id": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO"}, {"id": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO"}, {"id": "metagpt/const.py:RESOURCES_FILE_REPO"}, {"id": "metagpt/const.py:SD_OUTPUT_FILE_REPO"}, {"id": "metagpt/const.py:GRAPH_REPO_FILE_REPO"}, {"id": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO"}, {"id": "metagpt/const.py:CLASS_VIEW_FILE_REPO"}, {"id": "metagpt/const.py:YAPI_URL"}, {"id": "metagpt/const.py:DEFAULT_LANGUAGE"}, {"id": "metagpt/const.py:DEFAULT_MAX_TOKENS"}, {"id": "metagpt/const.py:COMMAND_TOKENS"}, {"id": "metagpt/const.py:BRAIN_MEMORY"}, {"id": "metagpt/const.py:SKILL_PATH"}, {"id": "metagpt/const.py:SERPER_API_KEY"}, {"id": "metagpt/const.py:DEFAULT_TOKEN_SIZE"}, {"id": "metagpt/const.py:BASE64_FORMAT"}, {"id": "metagpt/const.py:REDIS_KEY"}, {"id": "metagpt/const.py:LLM_API_TIMEOUT"}, {"id": "metagpt/const.py:IGNORED_MESSAGE_ID"}, {"id": "metagpt/const.py:GENERALIZATION"}, {"id": "metagpt/const.py:COMPOSITION"}, {"id": "metagpt/const.py:AGGREGATION"}, {"id": "metagpt/const.py:ast.Constant:\n@Time : 2023/5/1 11:59\n@Author : alexanderwu\n@File : const.py\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\n common properties in the Message.\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/1 11:59\\n@Author : alexanderwu\\n@File : const.py\\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\\n common properties in the Message.\\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\\n\"],\"properties\":{}}"}, {"id": "metagpt/const.py:os"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/const.py:module:pathlib"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/const.py:names:['Path']"}, {"id": "metagpt/const.py:module:loguru"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/const.py:names:['logger']"}, {"id": "metagpt/const.py:metagpt"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_package_root\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":43,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_root\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONFIG_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_WORKSPACE_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_DATA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"TUTORIAL_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":56,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_TABLE_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"SWAGGER_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PY_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"API_QUESTIONS_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":63,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERDESER_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":65,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"TMP\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":67,\"type_name\":\"ast.Assign\",\"tokens\":[\"SOURCE_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":69,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_DIRECTORY\"],\"properties\":{}}"}, {"id": "{\"lineno\":70,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_SCHEMA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":71,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_LIBS_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"MEM_TTL\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_FROM\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO\"],\"properties\":{}}"}, {"id": "{\"lineno\":79,\"end_lineno\":79,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_CAUSE_BY\"],\"properties\":{}}"}, {"id": "{\"lineno\":80,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_META_ROLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":81,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_ALL\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":82,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_NONE\"],\"properties\":{}}"}, {"id": "{\"lineno\":84,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"BUGFIX_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"PACKAGE_REQUIREMENTS_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"DOCS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":89,\"end_lineno\":89,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRDS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_API_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEQ_FLOW_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":96,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":97,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRD_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":99,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_CODES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_OUTPUTS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":103,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":104,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESOURCES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"SD_OUTPUT_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":106,\"end_lineno\":106,\"type_name\":\"ast.Assign\",\"tokens\":[\"GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":107,\"end_lineno\":107,\"type_name\":\"ast.Assign\",\"tokens\":[\"VISUAL_GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":108,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"CLASS_VIEW_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"YAPI_URL\"],\"properties\":{}}"}, {"id": "{\"lineno\":112,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":113,\"end_lineno\":113,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_MAX_TOKENS\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":114,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMAND_TOKENS\"],\"properties\":{}}"}, {"id": "{\"lineno\":115,\"end_lineno\":115,\"type_name\":\"ast.Assign\",\"tokens\":[\"BRAIN_MEMORY\"],\"properties\":{}}"}, {"id": "{\"lineno\":116,\"end_lineno\":116,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":117,\"end_lineno\":117,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERPER_API_KEY\"],\"properties\":{}}"}, {"id": "{\"lineno\":118,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_TOKEN_SIZE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"BASE64_FORMAT\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"REDIS_KEY\"],\"properties\":{}}"}, {"id": "{\"lineno\":125,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_API_TIMEOUT\"],\"properties\":{}}"}, {"id": "{\"lineno\":128,\"end_lineno\":128,\"type_name\":\"ast.Assign\",\"tokens\":[\"IGNORED_MESSAGE_ID\"],\"properties\":{}}"}, {"id": "{\"lineno\":131,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERALIZATION\"],\"properties\":{}}"}, {"id": "{\"lineno\":132,\"end_lineno\":132,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPOSITION\"],\"properties\":{}}"}, {"id": "{\"lineno\":133,\"end_lineno\":133,\"type_name\":\"ast.Assign\",\"tokens\":[\"AGGREGATION\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__"}, {"id": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__"}, {"id": "metagpt/schema.py:SerializationMixin:__init_subclass__"}, {"id": "metagpt/schema.py:Document:__str__"}, {"id": "metagpt/schema.py:Document:__repr__"}, {"id": "metagpt/schema.py:Message:__init__"}, {"id": "metagpt/schema.py:Message:__setattr__"}, {"id": "metagpt/schema.py:Message:__str__"}, {"id": "metagpt/schema.py:Message:__repr__"}, {"id": "metagpt/schema.py:UserMessage:__init__"}, {"id": "metagpt/schema.py:SystemMessage:__init__"}, {"id": "metagpt/schema.py:AIMessage:__init__"}, {"id": "metagpt/schema.py:Plan:_topological_sort"}, {"id": "metagpt/schema.py:Plan:_update_current_task"}, {"id": "metagpt/schema.py:CodeSummarizeContext:__hash__"}, {"id": "metagpt/schema.py:T"}, {"id": "metagpt/schema.py:ast.Constant:\n@Time : 2023/5/8 22:12\n@Author : alexanderwu\n@File : schema.py\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\n@Modified By: mashenquan, 2023/11/22.\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\n between actions.\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 22:12\\n@Author : alexanderwu\\n@File : schema.py\\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\\n@Modified By: mashenquan, 2023/11/22.\\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\\n between actions.\\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:module:__future__"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/schema.py:names:['annotations']"}, {"id": "metagpt/schema.py:asyncio"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:json"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:os.path"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:uuid"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:module:abc"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/schema.py:names:['ABC']"}, {"id": "metagpt/schema.py:module:asyncio"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"id": "metagpt/schema.py:names:['Queue', 'QueueEmpty', 'wait_for']"}, {"id": "metagpt/schema.py:module:json"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"id": "metagpt/schema.py:names:['JSONDecodeError']"}, {"id": "metagpt/schema.py:module:pathlib"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/schema.py:names:['Path']"}, {"id": "metagpt/schema.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"id": "metagpt/schema.py:names:['Any', 'Dict', 'Iterable', 'List', 'Optional', 'Type', 'TypeVar', 'Union']"}, {"id": "metagpt/schema.py:module:pydantic"}, {"id": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"id": "metagpt/schema.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr', 'field_serializer', 'field_validator', 'model_serializer', 'model_validator']"}, {"id": "metagpt/schema.py:module:metagpt.const"}, {"id": "{\"lineno\":39,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/schema.py:names:['MESSAGE_ROUTE_CAUSE_BY', 'MESSAGE_ROUTE_FROM', 'MESSAGE_ROUTE_TO', 'MESSAGE_ROUTE_TO_ALL', 'PRDS_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/schema.py:module:metagpt.logs"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/schema.py:names:['logger']"}, {"id": "metagpt/schema.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"id": "metagpt/schema.py:names:['DotClassInfo']"}, {"id": "metagpt/schema.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"id": "metagpt/schema.py:names:['any_to_str', 'any_to_str_set', 'import_class']"}, {"id": "metagpt/schema.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/schema.py:names:['handle_exception']"}, {"id": "metagpt/schema.py:module:metagpt.utils.serialize"}, {"id": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"id": "metagpt/schema.py:names:['actionoutout_schema_to_mapping', 'actionoutput_mapping_to_str', 'actionoutput_str_to_mapping']"}, {"id": "{\"lineno\":59,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerializationMixin\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SimpleMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":155,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"id": "{\"lineno\":158,\"end_lineno\":185,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Documents\"],\"properties\":{}}"}, {"id": "{\"lineno\":188,\"end_lineno\":303,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Message\"],\"properties\":{}}"}, {"id": "{\"lineno\":306,\"end_lineno\":312,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":315,\"end_lineno\":321,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SystemMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":324,\"end_lineno\":330,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AIMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":333,\"end_lineno\":352,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Task\"],\"properties\":{}}"}, {"id": "{\"lineno\":355,\"end_lineno\":360,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TaskResult\"],\"properties\":{}}"}, {"id": "{\"lineno\":363,\"end_lineno\":524,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Plan\"],\"properties\":{}}"}, {"id": "{\"lineno\":527,\"end_lineno\":596,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageQueue\"],\"properties\":{}}"}, {"id": "{\"lineno\":600,\"end_lineno\":600,\"type_name\":\"ast.Assign\",\"tokens\":[\"T\"],\"properties\":{}}"}, {"id": "{\"lineno\":603,\"end_lineno\":608,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":611,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodingContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":619,\"end_lineno\":622,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TestingContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":625,\"end_lineno\":635,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":638,\"end_lineno\":641,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeResult\"],\"properties\":{}}"}, {"id": "{\"lineno\":644,\"end_lineno\":663,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeSummarizeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":666,\"end_lineno\":667,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BugFixContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":670,\"end_lineno\":690,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodePlanAndChangeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":694,\"end_lineno\":706,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMeta\"],\"properties\":{}}"}, {"id": "{\"lineno\":709,\"end_lineno\":729,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassAttribute\"],\"properties\":{}}"}, {"id": "{\"lineno\":732,\"end_lineno\":746,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMethod\"],\"properties\":{}}"}, {"id": "{\"lineno\":749,\"end_lineno\":776,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassView\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py"}, {"id": "metagpt/learn/text_to_image.py:text_to_image"}, {"id": "metagpt/learn/text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_image.py\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_image.py\\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:base64"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.config2"}, {"id": "metagpt/learn/text_to_image.py:names:['Config']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.llm"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['LLM']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.tools.metagpt_text_to_image"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['oas3_metagpt_text_to_image']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.tools.openai_text_to_image"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['oas3_openai_text_to_image']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.utils.s3"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['S3']"}, {"id": "{\"lineno\":20,\"end_lineno\":44,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/learn/__init__.py"}, {"id": "metagpt/learn/__init__.py:__all__"}, {"id": "metagpt/learn/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_image"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['text_to_image']"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_speech"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['text_to_speech']"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.google_search"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['google_search']"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/learn/google_search.py"}, {"id": "metagpt/learn/google_search.py:google_search"}, {"id": "metagpt/learn/google_search.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/learn/google_search.py:names:['SearchEngine']"}, {"id": "{\"lineno\":4,\"end_lineno\":12,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"google_search\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py"}, {"id": "metagpt/learn/text_to_speech.py:text_to_speech"}, {"id": "metagpt/learn/text_to_speech.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : text_to_speech.py\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : text_to_speech.py\\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py:metagpt.config2"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.config2"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['Config']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.const"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.tools.azure_tts"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['oas3_azsure_tts']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.tools.iflytek_tts"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['oas3_iflytek_tts']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.utils.s3"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['S3']"}, {"id": "{\"lineno\":17,\"end_lineno\":69,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_speech\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_embedding.py"}, {"id": "metagpt/learn/text_to_embedding.py:text_to_embedding"}, {"id": "metagpt/learn/text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_embedding.py\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_embedding.py\\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_embedding.py:metagpt.config2"}, {"id": "metagpt/learn/text_to_embedding.py:module:metagpt.config2"}, {"id": "metagpt/learn/text_to_embedding.py:names:['Config']"}, {"id": "metagpt/learn/text_to_embedding.py:module:metagpt.tools.openai_text_to_embedding"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"id": "metagpt/learn/text_to_embedding.py:names:['oas3_openai_text_to_embedding']"}, {"id": "{\"lineno\":14,\"end_lineno\":24,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_embedding\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : skill_loader.py\n@Desc : Skill YAML Configuration Loader.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : skill_loader.py\\n@Desc : Skill YAML Configuration Loader.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:module:pathlib"}, {"id": "metagpt/learn/skill_loader.py:names:['Path']"}, {"id": "metagpt/learn/skill_loader.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/learn/skill_loader.py:aiofiles"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:yaml"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/learn/skill_loader.py:module:metagpt.context"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['Context']"}, {"id": "{\"lineno\":19,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Example\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Returns\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Parameter\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Entity\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Components\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillsDeclaration\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs"}, {"id": "metagpt/tools/search_engine_ddg.py:module:__future__"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['annotations']"}, {"id": "metagpt/tools/search_engine_ddg.py:asyncio"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:json"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:module:concurrent"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['futures']"}, {"id": "metagpt/tools/search_engine_ddg.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\",\"overload\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['Literal', 'Optional', 'overload']"}, {"id": "metagpt/tools/search_engine_ddg.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['BaseModel', 'ConfigDict']"}, {"id": "{\"lineno\":21,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DDGAPIWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:__name__:__main__"}, {"id": "{\"lineno\":91,\"end_lineno\":94,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : metagpt_oas3_api_svc.py\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\n\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : metagpt_oas3_api_svc.py\\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\\n\\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:module:pathlib"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:names:['Path']"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:connexion"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"oas_http_svc\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:__name__:__main__"}, {"id": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__"}, {"id": "metagpt/tools/search_engine_meilisearch.py:ast.Constant:\n@Time : 2023/5/22 21:33\n@Author : alexanderwu\n@File : search_engine_meilisearch.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/22 21:33\\n@Author : alexanderwu\\n@File : search_engine_meilisearch.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['List']"}, {"id": "metagpt/tools/search_engine_meilisearch.py:meilisearch"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"meilisearch\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:meilisearch.index"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['Index']"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['handle_exception']"}, {"id": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataSource\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MeilisearchEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__"}, {"id": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : openai_text_to_embedding.py\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : openai_text_to_embedding.py\\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['List']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:aiohttp"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:requests"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:pydantic"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.logs"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Embedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Usage\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResultEmbedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":71,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Embedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":85,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_embedding\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response"}, {"id": "metagpt/tools/search_engine_serpapi.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:warnings"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['Any', 'Dict', 'Optional', 'Tuple']"}, {"id": "metagpt/tools/search_engine_serpapi.py:aiohttp"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']"}, {"id": "{\"lineno\":15,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerpAPIWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:__name__:__main__"}, {"id": "{\"lineno\":115,\"end_lineno\":118,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_log_stream"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_lock"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_cache"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:__future__"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:asyncio"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:sys"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:pathlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['Path']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['Literal', 'Optional']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:playwright.async_api"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['async_playwright']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"PrivateAttr\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['BaseModel', 'Field', 'PrivateAttr']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.logs"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['logger']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['WebPage']"}, {"id": "{\"lineno\":18,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PlaywrightWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":97,\"end_lineno\":101,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_install_lock\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":127,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_install_browsers\"],\"properties\":{}}"}, {"id": "{\"lineno\":130,\"end_lineno\":135,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_log_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":138,\"end_lineno\":138,\"type_name\":\"ast.AnnAssign\",\"tokens\":[\"_install_lock\"],\"properties\":{}}"}, {"id": "{\"lineno\":139,\"end_lineno\":139,\"type_name\":\"ast.Assign\",\"tokens\":[\"_install_cache\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:__init__"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:_process_extra"}, {"id": "metagpt/tools/search_engine.py:ast.Constant:\n@Time : 2023/5/6 20:15\n@Author : alexanderwu\n@File : search_engine.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/6 20:15\\n@Author : alexanderwu\\n@File : search_engine.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:importlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['Callable', 'Coroutine', 'Literal', 'Optional', 'Union', 'overload']"}, {"id": "metagpt/tools/search_engine.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['BaseModel', 'ConfigDict', 'model_validator']"}, {"id": "metagpt/tools/search_engine.py:module:semantic_kernel.skill_definition"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['sk_function']"}, {"id": "metagpt/tools/search_engine.py:module:metagpt.configs.search_config"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['SearchConfig']"}, {"id": "metagpt/tools/search_engine.py:module:metagpt.logs"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['logger']"}, {"id": "metagpt/tools/search_engine.py:module:metagpt.tools"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":19,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkSearchEngine\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":162,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:_process_extra"}, {"id": "metagpt/tools/web_browser_engine.py:module:__future__"}, {"id": "metagpt/tools/web_browser_engine.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine.py:importlib"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"Optional\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['Any', 'Callable', 'Coroutine', 'Optional', 'Union', 'overload']"}, {"id": "metagpt/tools/web_browser_engine.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['BaseModel', 'ConfigDict', 'model_validator']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.configs.browser_config"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['BrowserConfig']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.tools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['WebBrowserEngineType']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['WebPage']"}, {"id": "{\"lineno\":15,\"end_lineno\":115,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response"}, {"id": "metagpt/tools/search_engine_serper.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n"}, {"id": "metagpt/tools/search_engine_serper.py:json"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:warnings"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['Any', 'Dict', 'Optional', 'Tuple']"}, {"id": "metagpt/tools/search_engine_serper.py:aiohttp"}, {"id": "metagpt/tools/search_engine_serper.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']"}, {"id": "{\"lineno\":16,\"end_lineno\":115,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerperWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:__name__:__main__"}, {"id": "{\"lineno\":118,\"end_lineno\":121,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/moderation.py:Moderation:__init__"}, {"id": "metagpt/tools/moderation.py:ast.Constant:\n@Time : 2023/9/26 14:27\n@Author : zhanglei\n@File : moderation.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/26 14:27\\n@Author : zhanglei\\n@File : moderation.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/moderation.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/tools/moderation.py:names:['Union']"}, {"id": "metagpt/tools/moderation.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/tools/moderation.py:names:['BaseLLM']"}, {"id": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Moderation\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_registry.py:register_tool"}, {"id": "metagpt/tools/tool_registry.py:make_schema"}, {"id": "metagpt/tools/tool_registry.py:validate_tool_names"}, {"id": "metagpt/tools/tool_registry.py:TOOL_REGISTRY"}, {"id": "metagpt/tools/tool_registry.py:ast.Constant:\n@Time : 2023/01/12 17:07\n@Author : garylin2099\n@File : tool_registry.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/01/12 17:07\\n@Author : garylin2099\\n@File : tool_registry.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_registry.py:module:__future__"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/tool_registry.py:names:['annotations']"}, {"id": "metagpt/tools/tool_registry.py:inspect"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_registry.py:os"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_registry.py:re"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_registry.py:module:collections"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/tools/tool_registry.py:names:['defaultdict']"}, {"id": "metagpt/tools/tool_registry.py:yaml"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_registry.py:module:pydantic"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"field_validator\"]}}"}, {"id": "metagpt/tools/tool_registry.py:names:['BaseModel', 'field_validator']"}, {"id": "metagpt/tools/tool_registry.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TOOL_SCHEMA_PATH\"]}}"}, {"id": "metagpt/tools/tool_registry.py:names:['TOOL_SCHEMA_PATH']"}, {"id": "metagpt/tools/tool_registry.py:module:metagpt.logs"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/tool_registry.py:names:['logger']"}, {"id": "metagpt/tools/tool_registry.py:module:metagpt.tools.tool_convert"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_convert\",\"names\":[\"convert_code_to_tool_schema\"]}}"}, {"id": "metagpt/tools/tool_registry.py:names:['convert_code_to_tool_schema']"}, {"id": "metagpt/tools/tool_registry.py:module:metagpt.tools.tool_data_type"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_data_type\",\"names\":[\"Tool\",\"ToolSchema\",\"ToolTypeDef\"]}}"}, {"id": "metagpt/tools/tool_registry.py:names:['Tool', 'ToolSchema', 'ToolTypeDef']"}, {"id": "metagpt/tools/tool_registry.py:module:metagpt.tools.tool_type"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"id": "metagpt/tools/tool_registry.py:names:['ToolType']"}, {"id": "{\"lineno\":25,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolRegistry\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_REGISTRY\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":126,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_tool\"],\"properties\":{}}"}, {"id": "{\"lineno\":129,\"end_lineno\":142,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_schema\"],\"properties\":{}}"}, {"id": "{\"lineno\":145,\"end_lineno\":155,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_tool_names\"],\"properties\":{}}"}, {"id": "metagpt/tools/__init__.py"}, {"id": "metagpt/tools/__init__.py:SearchEngineType"}, {"id": "metagpt/tools/__init__.py:WebBrowserEngineType"}, {"id": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__"}, {"id": "metagpt/tools/__init__.py:_"}, {"id": "metagpt/tools/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:35\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:35\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/__init__.py:module:enum"}, {"id": "metagpt/tools/__init__.py:names:['Enum']"}, {"id": "metagpt/tools/__init__.py:module:metagpt.tools"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"libs\"]}}"}, {"id": "metagpt/tools/__init__.py:names:['libs']"}, {"id": "metagpt/tools/__init__.py:module:metagpt.tools.tool_registry"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"TOOL_REGISTRY\"]}}"}, {"id": "metagpt/tools/__init__.py:names:['TOOL_REGISTRY']"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"_\"],\"properties\":{}}"}, {"id": "{\"lineno\":16,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngineType\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngineType\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:safe_google_results"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:__future__"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['annotations']"}, {"id": "metagpt/tools/search_engine_googleapi.py:asyncio"}, {"id": "metagpt/tools/search_engine_googleapi.py:json"}, {"id": "metagpt/tools/search_engine_googleapi.py:warnings"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:concurrent"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['futures']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['Optional']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:urllib.parse"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['urlparse']"}, {"id": "metagpt/tools/search_engine_googleapi.py:httplib2"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"httplib2\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['BaseModel', 'ConfigDict', 'model_validator']"}, {"id": "{\"lineno\":24,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleAPIWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":112,\"end_lineno\":125,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"safe_google_results\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:__name__:__main__"}, {"id": "{\"lineno\":128,\"end_lineno\":131,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_type.py:ToolType:__missing__"}, {"id": "metagpt/tools/tool_type.py:module:enum"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/tools/tool_type.py:names:['Enum']"}, {"id": "metagpt/tools/tool_type.py:module:metagpt.prompts.tool_types"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tool_types\",\"names\":[\"DATA_PREPROCESS_PROMPT\",\"FEATURE_ENGINEERING_PROMPT\",\"IMAGE2WEBPAGE_PROMPT\",\"MODEL_EVALUATE_PROMPT\",\"MODEL_TRAIN_PROMPT\"]}}"}, {"id": "metagpt/tools/tool_type.py:names:['DATA_PREPROCESS_PROMPT', 'FEATURE_ENGINEERING_PROMPT', 'IMAGE2WEBPAGE_PROMPT', 'MODEL_EVALUATE_PROMPT', 'MODEL_TRAIN_PROMPT']"}, {"id": "metagpt/tools/tool_type.py:module:metagpt.tools.tool_data_type"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_data_type\",\"names\":[\"ToolTypeDef\"]}}"}, {"id": "metagpt/tools/tool_type.py:names:['ToolTypeDef']"}, {"id": "{\"lineno\":13,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolType\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:__init__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:__future__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:asyncio"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:importlib"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:concurrent"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['futures']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:copy"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['deepcopy']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['Callable', 'Literal', 'Optional']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.common.by"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['By']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['expected_conditions as EC']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support.wait"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WebDriverWait']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.download_manager"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMDownloadManager']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.http"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMHttpClient']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WebPage']"}, {"id": "{\"lineno\":22,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SeleniumWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"_webdriver_manager_types\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WDMHttpProxyClient\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":134,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_gen_get_driver_func\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py"}, {"id": "metagpt/tools/openapi_v3_hello.py:post_greeting"}, {"id": "metagpt/tools/openapi_v3_hello.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : mashenquan\n@File : openapi_v3_hello.py\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\n\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : mashenquan\\n@File : openapi_v3_hello.py\\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\\n\\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:module:pathlib"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:names:['Path']"}, {"id": "metagpt/tools/openapi_v3_hello.py:connexion"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"post_greeting\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:__name__:__main__"}, {"id": "{\"lineno\":25,\"end_lineno\":29,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:__init__"}, {"id": "metagpt/tools/azure_tts.py:oas3_azsure_tts"}, {"id": "metagpt/tools/azure_tts.py:ast.Constant:\n@Time : 2023/6/9 22:22\n@Author : Leo Xiao\n@File : azure_tts.py\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/9 22:22\\n@Author : Leo Xiao\\n@File : azure_tts.py\\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:base64"}, {"id": "metagpt/tools/azure_tts.py:module:pathlib"}, {"id": "metagpt/tools/azure_tts.py:names:['Path']"}, {"id": "metagpt/tools/azure_tts.py:module:uuid"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"id": "metagpt/tools/azure_tts.py:names:['uuid4']"}, {"id": "metagpt/tools/azure_tts.py:aiofiles"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:module:azure.cognitiveservices.speech"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"id": "metagpt/tools/azure_tts.py:names:['AudioConfig', 'SpeechConfig', 'SpeechSynthesizer']"}, {"id": "metagpt/tools/azure_tts.py:module:metagpt.logs"}, {"id": "metagpt/tools/azure_tts.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureTTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":100,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_azsure_tts\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_convert.py"}, {"id": "metagpt/tools/tool_convert.py:convert_code_to_tool_schema"}, {"id": "metagpt/tools/tool_convert.py:function_docstring_to_schema"}, {"id": "metagpt/tools/tool_convert.py:docstring_to_schema"}, {"id": "metagpt/tools/tool_convert.py:get_class_method_docstring"}, {"id": "metagpt/tools/tool_convert.py:inspect"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_convert.py:module:metagpt.utils.parse_docstring"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_docstring\",\"names\":[\"GoogleDocstringParser\",\"remove_spaces\"]}}"}, {"id": "metagpt/tools/tool_convert.py:names:['GoogleDocstringParser', 'remove_spaces']"}, {"id": "{\"lineno\":6,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"convert_code_to_tool_schema\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"function_docstring_to_schema\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":73,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"docstring_to_schema\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_method_docstring\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__"}, {"id": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image"}, {"id": "metagpt/tools/openai_text_to_image.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : openai_text_to_image.py\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : openai_text_to_image.py\\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:aiohttp"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:requests"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:module:metagpt.logs"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/openai_text_to_image.py:names:['logger']"}, {"id": "metagpt/tools/openai_text_to_image.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/tools/openai_text_to_image.py:names:['BaseLLM']"}, {"id": "{\"lineno\":17,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Image\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":67,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:__init__"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut"}, {"id": "metagpt/tools/ut_writer.py:ICL_SAMPLE"}, {"id": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX"}, {"id": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX"}, {"id": "metagpt/tools/ut_writer.py:OCR_API_DOC"}, {"id": "metagpt/tools/ut_writer.py:json"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/ut_writer.py:module:pathlib"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['Path']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.config2"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['config']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['OpenAILLM as GPTAPI']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['awrite']"}, {"id": "{\"lineno\":11,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"ICL_SAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"YFT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"OCR_API_DOC\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":287,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UTGenerator\"],\"properties\":{}}"}, {"id": "metagpt/tools/translator.py:prompt"}, {"id": "metagpt/tools/translator.py:ast.Constant:\n@Time : 2023/4/29 15:36\n@Author : alexanderwu\n@File : translator.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:36\\n@Author : alexanderwu\\n@File : translator.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"prompt\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Translator\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__"}, {"id": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image"}, {"id": "metagpt/tools/metagpt_text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : metagpt_text_to_image.py\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : metagpt_text_to_image.py\\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:base64"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['Dict', 'List']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:aiohttp"}, {"id": "metagpt/tools/metagpt_text_to_image.py:requests"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['BaseModel']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.logs"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":81,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTText2Image\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":95,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_metagpt_text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url"}, {"id": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts"}, {"id": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE"}, {"id": "metagpt/tools/iflytek_tts.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : iflytek_tts.py\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : iflytek_tts.py\\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:base64"}, {"id": "metagpt/tools/iflytek_tts.py:hashlib"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:hmac"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:json"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:uuid"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:module:datetime"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['datetime']"}, {"id": "metagpt/tools/iflytek_tts.py:module:enum"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Enum']"}, {"id": "metagpt/tools/iflytek_tts.py:module:pathlib"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Path']"}, {"id": "metagpt/tools/iflytek_tts.py:module:time"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['mktime']"}, {"id": "metagpt/tools/iflytek_tts.py:module:typing"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Optional']"}, {"id": "metagpt/tools/iflytek_tts.py:module:urllib.parse"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['urlencode']"}, {"id": "metagpt/tools/iflytek_tts.py:module:wsgiref.handlers"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['format_date_time']"}, {"id": "metagpt/tools/iflytek_tts.py:aiofiles"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:websockets as websockets"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"websockets as websockets\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:module:pydantic"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['BaseModel']"}, {"id": "metagpt/tools/iflytek_tts.py:module:metagpt.logs"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['logger']"}, {"id": "{\"lineno\":29,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSStatus\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AudioData\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSResponse\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_IFLYTEK_VOICE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":113,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":117,\"end_lineno\":143,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_iflytek_tts\"],\"properties\":{}}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : alexanderwu\n@File : prompt_writer.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : alexanderwu\\n@File : prompt_writer.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/prompt_writer.py:module:typing"}, {"id": "metagpt/tools/prompt_writer.py:names:['Union']"}, {"id": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTPromptGenerator\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WikiHowTemplate\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnronTemplate\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BEAGECTemplate\"],\"properties\":{}}"}, {"id": "metagpt/tools/tool_data_type.py:module:pydantic"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/tool_data_type.py:names:['BaseModel']"}, {"id": "{\"lineno\":4,\"end_lineno\":7,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolTypeDef\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":11,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolSchema\"],\"properties\":{}}"}, {"id": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Tool\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCount:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:CatCross:_cross_two"}, {"id": "metagpt/tools/libs/feature_engineering.py:GroupStat:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:SplitBins:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:__init__"}, {"id": "metagpt/tools/libs/feature_engineering.py:TOOL_TYPE"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:__future__"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['annotations']"}, {"id": "metagpt/tools/libs/feature_engineering.py:itertools"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"itertools\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:numpy as np"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"numpy as np\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:pandas as pd"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:joblib"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"joblib\",\"names\":[\"Parallel\",\"delayed\"]}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['Parallel', 'delayed']"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:pandas.core.dtypes.common"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pandas.core.dtypes.common\",\"names\":[\"is_object_dtype\"]}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['is_object_dtype']"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:sklearn.feature_selection"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.feature_selection\",\"names\":[\"VarianceThreshold\"]}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['VarianceThreshold']"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:sklearn.model_selection"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.model_selection\",\"names\":[\"KFold\"]}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['KFold']"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:sklearn.preprocessing"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.preprocessing\",\"names\":[\"KBinsDiscretizer\",\"PolynomialFeatures\"]}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['KBinsDiscretizer', 'PolynomialFeatures']"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:metagpt.tools.libs.data_preprocess"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.libs.data_preprocess\",\"names\":[\"MLProcess\"]}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['MLProcess']"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:metagpt.tools.tool_registry"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['register_tool']"}, {"id": "metagpt/tools/libs/feature_engineering.py:module:metagpt.tools.tool_type"}, {"id": "metagpt/tools/libs/feature_engineering.py:names:['ToolType']"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_TYPE\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":67,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PolynomialExpansion\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CatCount\"],\"properties\":{}}"}, {"id": "{\"lineno\":96,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TargetMeanEncoder\"],\"properties\":{}}"}, {"id": "{\"lineno\":123,\"end_lineno\":159,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"KFoldTargetMeanEncoder\"],\"properties\":{}}"}, {"id": "{\"lineno\":163,\"end_lineno\":216,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CatCross\"],\"properties\":{}}"}, {"id": "{\"lineno\":220,\"end_lineno\":248,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GroupStat\"],\"properties\":{}}"}, {"id": "{\"lineno\":252,\"end_lineno\":276,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SplitBins\"],\"properties\":{}}"}, {"id": "{\"lineno\":280,\"end_lineno\":316,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExtractTimeComps\"],\"properties\":{}}"}, {"id": "{\"lineno\":320,\"end_lineno\":348,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralSelection\"],\"properties\":{}}"}, {"id": "{\"lineno\":353,\"end_lineno\":403,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeBasedSelection\"],\"properties\":{}}"}, {"id": "{\"lineno\":407,\"end_lineno\":435,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VarianceBasedSelection\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:StandardScale:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:RobustScale:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:LabelEncode:__init__"}, {"id": "metagpt/tools/libs/data_preprocess.py:get_column_info"}, {"id": "metagpt/tools/libs/data_preprocess.py:TOOL_TYPE"}, {"id": "metagpt/tools/libs/data_preprocess.py:module:__future__"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:names:['annotations']"}, {"id": "metagpt/tools/libs/data_preprocess.py:json"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:numpy as np"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"numpy as np\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:pandas as pd"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:module:sklearn.impute"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.impute\",\"names\":[\"SimpleImputer\"]}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:names:['SimpleImputer']"}, {"id": "metagpt/tools/libs/data_preprocess.py:module:sklearn.preprocessing"}, {"id": "{\"lineno\":8,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.preprocessing\",\"names\":[\"LabelEncoder\",\"MaxAbsScaler\",\"MinMaxScaler\",\"OneHotEncoder\",\"OrdinalEncoder\",\"RobustScaler\",\"StandardScaler\"]}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:names:['LabelEncoder', 'MaxAbsScaler', 'MinMaxScaler', 'OneHotEncoder', 'OrdinalEncoder', 'RobustScaler', 'StandardScaler']"}, {"id": "metagpt/tools/libs/data_preprocess.py:module:metagpt.tools.tool_registry"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:names:['register_tool']"}, {"id": "metagpt/tools/libs/data_preprocess.py:module:metagpt.tools.tool_type"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"id": "metagpt/tools/libs/data_preprocess.py:names:['ToolType']"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_TYPE\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":57,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MLProcess\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":85,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataPreprocessTool\"],\"properties\":{}}"}, {"id": "{\"lineno\":89,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FillMissingValue\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MinMaxScale\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":128,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"StandardScale\"],\"properties\":{}}"}, {"id": "{\"lineno\":132,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MaxAbsScale\"],\"properties\":{}}"}, {"id": "{\"lineno\":143,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RobustScale\"],\"properties\":{}}"}, {"id": "{\"lineno\":154,\"end_lineno\":161,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OrdinalEncode\"],\"properties\":{}}"}, {"id": "{\"lineno\":165,\"end_lineno\":180,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OneHotEncode\"],\"properties\":{}}"}, {"id": "{\"lineno\":184,\"end_lineno\":216,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LabelEncode\"],\"properties\":{}}"}, {"id": "{\"lineno\":219,\"end_lineno\":249,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_column_info\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/__init__.py"}, {"id": "metagpt/tools/libs/__init__.py:_"}, {"id": "metagpt/tools/libs/__init__.py:module:metagpt.tools.libs"}, {"id": "{\"lineno\":7,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.libs\",\"names\":[\"data_preprocess\",\"feature_engineering\",\"sd_engine\",\"gpt_v_generator\",\"web_scraping\"]}}"}, {"id": "metagpt/tools/libs/__init__.py:names:['data_preprocess', 'feature_engineering', 'sd_engine', 'gpt_v_generator', 'web_scraping']"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"_\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:__init__"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:ANALYZE_LAYOUT_PROMPT"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:GENERATE_PROMPT"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:ast.Constant:\n@Time : 2024/01/12\n@Author : mannaandpoem\n@File : gpt_v_generator.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/01/12\\n@Author : mannaandpoem\\n@File : gpt_v_generator.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:os"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:module:pathlib"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:names:['Path']"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:module:metagpt.const"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:names:['DEFAULT_WORKSPACE_ROOT']"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:module:metagpt.tools.tool_registry"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:names:['register_tool']"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:module:metagpt.tools.tool_type"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:names:['ToolType']"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"encode_image\"]}}"}, {"id": "metagpt/tools/libs/gpt_v_generator.py:names:['encode_image']"}, {"id": "{\"lineno\":16,\"end_lineno\":19,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANALYZE_LAYOUT_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERATE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTvGenerator\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/sd_engine.py:SDEngine:__init__"}, {"id": "metagpt/tools/libs/sd_engine.py:decode_base64_to_image"}, {"id": "metagpt/tools/libs/sd_engine.py:batch_decode_base64_to_image"}, {"id": "metagpt/tools/libs/sd_engine.py:payload"}, {"id": "metagpt/tools/libs/sd_engine.py:default_negative_prompt"}, {"id": "metagpt/tools/libs/sd_engine.py:module:__future__"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/libs/sd_engine.py:names:['annotations']"}, {"id": "metagpt/tools/libs/sd_engine.py:base64"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/sd_engine.py:hashlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/sd_engine.py:io"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"io\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/sd_engine.py:json"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/sd_engine.py:module:os.path"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"os.path\",\"names\":[\"join\"]}}"}, {"id": "metagpt/tools/libs/sd_engine.py:names:['join']"}, {"id": "metagpt/tools/libs/sd_engine.py:requests"}, {"id": "metagpt/tools/libs/sd_engine.py:module:aiohttp"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientSession\"]}}"}, {"id": "metagpt/tools/libs/sd_engine.py:names:['ClientSession']"}, {"id": "metagpt/tools/libs/sd_engine.py:module:PIL"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\",\"PngImagePlugin\"]}}"}, {"id": "metagpt/tools/libs/sd_engine.py:names:['Image', 'PngImagePlugin']"}, {"id": "metagpt/tools/libs/sd_engine.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SD_OUTPUT_FILE_REPO\",\"SOURCE_ROOT\"]}}"}, {"id": "metagpt/tools/libs/sd_engine.py:names:['SD_OUTPUT_FILE_REPO', 'SOURCE_ROOT']"}, {"id": "metagpt/tools/libs/sd_engine.py:module:metagpt.logs"}, {"id": "metagpt/tools/libs/sd_engine.py:names:['logger']"}, {"id": "metagpt/tools/libs/sd_engine.py:module:metagpt.tools.tool_registry"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"id": "metagpt/tools/libs/sd_engine.py:names:['register_tool']"}, {"id": "metagpt/tools/libs/sd_engine.py:module:metagpt.tools.tool_type"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"id": "metagpt/tools/libs/sd_engine.py:names:['ToolType']"}, {"id": "{\"lineno\":23,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"payload\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"default_negative_prompt\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":169,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SDEngine\"],\"properties\":{}}"}, {"id": "{\"lineno\":172,\"end_lineno\":177,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_base64_to_image\"],\"properties\":{}}"}, {"id": "{\"lineno\":180,\"end_lineno\":183,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"batch_decode_base64_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/libs/web_scraping.py"}, {"id": "metagpt/tools/libs/web_scraping.py:scrape_web_playwright"}, {"id": "metagpt/tools/libs/web_scraping.py:module:metagpt.tools.tool_registry"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"id": "metagpt/tools/libs/web_scraping.py:names:['register_tool']"}, {"id": "metagpt/tools/libs/web_scraping.py:module:metagpt.tools.tool_type"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"id": "metagpt/tools/libs/web_scraping.py:names:['ToolType']"}, {"id": "metagpt/tools/libs/web_scraping.py:module:metagpt.tools.web_browser_engine_playwright"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine_playwright\",\"names\":[\"PlaywrightWrapper\"]}}"}, {"id": "metagpt/tools/libs/web_scraping.py:names:['PlaywrightWrapper']"}, {"id": "{\"lineno\":7,\"end_lineno\":21,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"scrape_web_playwright\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory.py:ast.Constant:\n@Time : 2023/5/20 12:15\n@Author : alexanderwu\n@File : memory.py\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 12:15\\n@Author : alexanderwu\\n@File : memory.py\\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory.py:module:collections"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/memory/memory.py:names:['defaultdict']"}, {"id": "metagpt/memory/memory.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"id": "metagpt/memory/memory.py:names:['DefaultDict', 'Iterable', 'Set']"}, {"id": "metagpt/memory/memory.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"id": "metagpt/memory/memory.py:names:['BaseModel', 'Field', 'SerializeAsAny']"}, {"id": "metagpt/memory/memory.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"id": "metagpt/memory/memory.py:names:['IGNORED_MESSAGE_ID']"}, {"id": "metagpt/memory/memory.py:module:metagpt.schema"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/memory/memory.py:names:['Message']"}, {"id": "metagpt/memory/memory.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"id": "metagpt/memory/memory.py:names:['any_to_str', 'any_to_str_set']"}, {"id": "{\"lineno\":19,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Memory\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary"}, {"id": "metagpt/memory/brain_memory.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : brain_memory.py\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : brain_memory.py\\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:json"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:re"}, {"id": "metagpt/memory/brain_memory.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/memory/brain_memory.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.config2"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['config']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['DEFAULT_MAX_TOKENS', 'DEFAULT_TOKEN_SIZE']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.logs"}, {"id": "metagpt/memory/brain_memory.py:names:['logger']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.provider"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['MetaGPTLLM']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['BaseLLM']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.schema"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Message', 'SimpleMessage']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.utils.redis"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Redis']"}, {"id": "{\"lineno\":26,\"end_lineno\":338,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrainMemory\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:__init__"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:_load"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname"}, {"id": "metagpt/memory/memory_storage.py:ast.Constant:\n@Desc : the implement of memory storage\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of memory storage\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory_storage.py:module:pathlib"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Path']"}, {"id": "metagpt/memory/memory_storage.py:module:typing"}, {"id": "metagpt/memory/memory_storage.py:names:['Optional']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain.embeddings"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain.vectorstores.faiss"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['FAISS']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain_core.embeddings"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Embeddings']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['DATA_PATH', 'MEM_TTL']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.document_store.faiss_store"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['FaissStore']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.logs"}, {"id": "metagpt/memory/memory_storage.py:names:['logger']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Message']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.utils.serialize"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['deserialize_message', 'serialize_message']"}, {"id": "{\"lineno\":21,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MemoryStorage\"],\"properties\":{}}"}, {"id": "metagpt/memory/__init__.py"}, {"id": "metagpt/memory/__init__.py:__all__"}, {"id": "metagpt/memory/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "metagpt/memory/__init__.py:module:metagpt.memory.memory"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/memory/__init__.py:names:['Memory']"}, {"id": "{\"lineno\":14,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/memory/longterm_memory.py:ast.Constant:\n@Desc : the implement of Long-term memory\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of Long-term memory\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/longterm_memory.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['Optional']"}, {"id": "metagpt/memory/longterm_memory.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['ConfigDict', 'Field']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.logs"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['logger']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.memory"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['Memory']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.memory.memory_storage"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['MemoryStorage']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['RoleContext']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.schema"}, {"id": "metagpt/memory/longterm_memory.py:names:['Message']"}, {"id": "{\"lineno\":18,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LongTermMemory\"],\"properties\":{}}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__"}, {"id": "metagpt/document_store/qdrant_store.py:module:dataclasses"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['dataclass']"}, {"id": "metagpt/document_store/qdrant_store.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['List']"}, {"id": "metagpt/document_store/qdrant_store.py:module:qdrant_client"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['QdrantClient']"}, {"id": "metagpt/document_store/qdrant_store.py:module:qdrant_client.models"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['Filter', 'PointStruct', 'VectorParams']"}, {"id": "metagpt/document_store/qdrant_store.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['BaseStore']"}, {"id": "{\"lineno\":11,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantConnection\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__"}, {"id": "metagpt/document_store/chromadb_store.py:ast.Constant:\n@Time : 2023/5/29 14:46\n@Author : alexanderwu\n@File : chromadb_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/29 14:46\\n@Author : alexanderwu\\n@File : chromadb_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/chromadb_store.py:chromadb"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"chromadb\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChromaStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:__init__"}, {"id": "metagpt/document_store/lancedb_store.py:ast.Constant:\n@Time : 2023/8/9 15:42\n@Author : unkn-wn (Leon Yee)\n@File : lancedb_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/9 15:42\\n@Author : unkn-wn (Leon Yee)\\n@File : lancedb_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:os"}, {"id": "metagpt/document_store/lancedb_store.py:shutil"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:lancedb"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"lancedb\"],\"properties\":{}}"}, {"id": "{\"lineno\":14,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LanceStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/__init__.py"}, {"id": "metagpt/document_store/__init__.py:__all__"}, {"id": "metagpt/document_store/__init__.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/__init__.py:module:metagpt.document_store.faiss_store"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"id": "metagpt/document_store/__init__.py:names:['FaissStore']"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:__init__"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:_load"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:_write"}, {"id": "metagpt/document_store/faiss_store.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : faiss_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : faiss_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:asyncio"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:module:pathlib"}, {"id": "metagpt/document_store/faiss_store.py:names:['Path']"}, {"id": "metagpt/document_store/faiss_store.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['Optional']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain.vectorstores"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['FAISS']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain_core.embeddings"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['Embeddings']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.document"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['IndexableDocument']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['LocalStore']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.logs"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['logger']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.utils.embedding"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['get_embedding']"}, {"id": "{\"lineno\":21,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FaissStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:__init__"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_load"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_write"}, {"id": "metagpt/document_store/base_store.py:ast.Constant:\n@Time : 2023/5/28 00:01\n@Author : alexanderwu\n@File : base_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/28 00:01\\n@Author : alexanderwu\\n@File : base_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/base_store.py:module:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"id": "metagpt/document_store/base_store.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/document_store/base_store.py:module:pathlib"}, {"id": "metagpt/document_store/base_store.py:names:['Path']"}, {"id": "{\"lineno\":12,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseStore\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LocalStore\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:__init__"}, {"id": "metagpt/provider/anthropic_api.py:ast.Constant:\n@Time : 2023/7/21 11:15\n@Author : Leo Xiao\n@File : anthropic_api.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/21 11:15\\n@Author : Leo Xiao\\n@File : anthropic_api.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:anthropic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"anthropic\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:module:anthropic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"id": "metagpt/provider/anthropic_api.py:names:['Anthropic', 'AsyncAnthropic']"}, {"id": "metagpt/provider/anthropic_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/provider/anthropic_api.py:names:['LLMConfig']"}, {"id": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Claude2\"],\"properties\":{}}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream"}, {"id": "metagpt/provider/google_gemini_api.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['Optional', 'Union']"}, {"id": "metagpt/provider/google_gemini_api.py:google.generativeai as genai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"google.generativeai as genai\"],\"properties\":{}}"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.ai"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['generativelanguage as glm']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.generative_models"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['GenerativeModel']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['content_types']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types.generation_types"}, {"id": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['AsyncGenerateContentResponse', 'GenerateContentResponse', 'GenerationConfig']"}, {"id": "metagpt/provider/google_gemini_api.py:module:tenacity"}, {"id": "{\"lineno\":16,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['register_provider']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['log_and_reraise']"}, {"id": "{\"lineno\":31,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiGenerativeModel\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs"}, {"id": "metagpt/provider/azure_openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/azure_openai_api.py:module:openai"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['AsyncAzureOpenAI']"}, {"id": "metagpt/provider/azure_openai_api.py:module:openai._base_client"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['AsyncHttpxClientWrapper']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['LLMType']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['OpenAILLM']"}, {"id": "{\"lineno\":18,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureOpenAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream"}, {"id": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS"}, {"id": "metagpt/provider/fireworks_api.py:re"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/provider/fireworks_api.py:module:openai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['APIConnectionError', 'AsyncStream']"}, {"id": "metagpt/provider/fireworks_api.py:module:openai.types"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/fireworks_api.py:module:openai.types.chat"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['ChatCompletionChunk']"}, {"id": "metagpt/provider/fireworks_api.py:module:tenacity"}, {"id": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.logs"}, {"id": "metagpt/provider/fireworks_api.py:names:['logger']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['register_provider']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['OpenAILLM', 'log_and_reraise']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CostManager', 'Costs']"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_GRADE_TOKEN_COSTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksCostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:__init__"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream"}, {"id": "metagpt/provider/ollama_api.py:json"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/ollama_api.py:module:requests"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['ConnectionError']"}, {"id": "metagpt/provider/ollama_api.py:module:tenacity"}, {"id": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.const"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['LLM_API_TIMEOUT']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.general_api_requestor"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['GeneralAPIRequestor']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['register_provider']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['log_and_reraise']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['TokenCostManager']"}, {"id": "{\"lineno\":27,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/__init__.py"}, {"id": "metagpt/provider/__init__.py:__all__"}, {"id": "metagpt/provider/__init__.py:ast.Constant:\n@Time : 2023/5/5 22:59\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 22:59\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.fireworks_api"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['FireworksLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.google_gemini_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['GeminiLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.ollama_api"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OllamaLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.open_llm_api"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OpenLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.zhipuai_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['ZhiPuAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.azure_openai_api"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['AzureOpenAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.metagpt_api"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['MetaGPTLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.human_provider"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['HumanProvider']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.spark_api"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['SparkLLM']"}, {"id": "{\"lineno\":20,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:__init__"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_init_model"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_init_client"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_process_message"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens"}, {"id": "metagpt/provider/openai_api.py:log_and_reraise"}, {"id": "metagpt/provider/openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n"}, {"id": "metagpt/provider/openai_api.py:module:__future__"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['annotations']"}, {"id": "metagpt/provider/openai_api.py:json"}, {"id": "metagpt/provider/openai_api.py:module:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['AsyncIterator', 'Optional', 'Union']"}, {"id": "metagpt/provider/openai_api.py:module:openai"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['APIConnectionError', 'AsyncOpenAI', 'AsyncStream']"}, {"id": "metagpt/provider/openai_api.py:module:openai._base_client"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['AsyncHttpxClientWrapper']"}, {"id": "metagpt/provider/openai_api.py:module:openai.types"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/openai_api.py:module:openai.types.chat"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['ChatCompletion', 'ChatCompletionChunk']"}, {"id": "metagpt/provider/openai_api.py:module:tenacity"}, {"id": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.constant"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['GENERAL_FUNCTION_SCHEMA']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.schema"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['Message']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\",\"decode_image\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CodeParser', 'decode_image']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CostManager', 'Costs']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['handle_exception']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":35,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['count_message_tokens', 'count_string_tokens', 'get_max_completion_tokens']"}, {"id": "{\"lineno\":42,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_and_reraise\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":287,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:__init__"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run"}, {"id": "metagpt/provider/spark_api.py:ast.Constant:\n@File : spark_api.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : spark_api.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:_thread as thread"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"_thread as thread\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:base64"}, {"id": "metagpt/provider/spark_api.py:datetime"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:hashlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:hmac"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:json"}, {"id": "metagpt/provider/spark_api.py:ssl"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"ssl\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:module:time"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['mktime']"}, {"id": "metagpt/provider/spark_api.py:module:urllib.parse"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['urlencode', 'urlparse']"}, {"id": "metagpt/provider/spark_api.py:module:wsgiref.handlers"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['format_date_time']"}, {"id": "metagpt/provider/spark_api.py:websocket"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"websocket\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['logger']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/spark_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['register_provider']"}, {"id": "{\"lineno\":26,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SparkLLM\"],\"properties\":{}}"}, {"id": "{\"lineno\":46,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GetMessageFromWeb\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response"}, {"id": "metagpt/provider/general_api_requestor.py:parse_stream_helper"}, {"id": "metagpt/provider/general_api_requestor.py:parse_stream"}, {"id": "metagpt/provider/general_api_requestor.py:asyncio"}, {"id": "metagpt/provider/general_api_requestor.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['AsyncGenerator', 'Generator', 'Iterator', 'Tuple', 'Union']"}, {"id": "metagpt/provider/general_api_requestor.py:aiohttp"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:requests"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:module:metagpt.logs"}, {"id": "metagpt/provider/general_api_requestor.py:names:['logger']"}, {"id": "metagpt/provider/general_api_requestor.py:module:metagpt.provider.general_api_base"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['APIRequestor']"}, {"id": "{\"lineno\":15,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":35,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":104,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralAPIRequestor\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:__init__"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_user_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_user_msg_with_imgs"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_system_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_update_costs"}, {"id": "metagpt/provider/base_llm.py:ast.Constant:\n@Time : 2023/5/5 23:04\n@Author : alexanderwu\n@File : base_llm.py\n@Desc : mashenquan, 2023/8/22. + try catch\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:04\\n@Author : alexanderwu\\n@File : base_llm.py\\n@Desc : mashenquan, 2023/8/22. + try catch\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:module:__future__"}, {"id": "metagpt/provider/base_llm.py:names:['annotations']"}, {"id": "metagpt/provider/base_llm.py:json"}, {"id": "metagpt/provider/base_llm.py:module:abc"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/provider/base_llm.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['Dict', 'Optional', 'Union']"}, {"id": "metagpt/provider/base_llm.py:module:openai"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['AsyncOpenAI']"}, {"id": "metagpt/provider/base_llm.py:module:openai.types"}, {"id": "metagpt/provider/base_llm.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['LLMConfig']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.logs"}, {"id": "metagpt/provider/base_llm.py:names:['logger']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.schema"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['Message']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['CostManager']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['handle_exception']"}, {"id": "{\"lineno\":25,\"end_lineno\":197,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/constant.py"}, {"id": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA"}, {"id": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE"}, {"id": "{\"lineno\":3,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_FUNCTION_SCHEMA\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_TOOL_CHOICE\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream"}, {"id": "metagpt/provider/zhipuai_api.py:module:enum"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['Enum']"}, {"id": "metagpt/provider/zhipuai_api.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['Optional']"}, {"id": "metagpt/provider/zhipuai_api.py:openai"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:zhipuai"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:module:requests"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['ConnectionError']"}, {"id": "metagpt/provider/zhipuai_api.py:module:tenacity"}, {"id": "{\"lineno\":11,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.configs.llm_config"}, {"id": "metagpt/provider/zhipuai_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/zhipuai_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "metagpt/provider/zhipuai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['log_and_reraise']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.zhipuai.zhipu_model_api"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['ZhiPuModelAPI']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['CostManager']"}, {"id": "{\"lineno\":28,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuEvent\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":110,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:__init__"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line"}, {"id": "metagpt/provider/general_api_base.py:_console_log_level"}, {"id": "metagpt/provider/general_api_base.py:log_debug"}, {"id": "metagpt/provider/general_api_base.py:log_info"}, {"id": "metagpt/provider/general_api_base.py:log_warn"}, {"id": "metagpt/provider/general_api_base.py:logfmt"}, {"id": "metagpt/provider/general_api_base.py:_build_api_url"}, {"id": "metagpt/provider/general_api_base.py:_requests_proxies_arg"}, {"id": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg"}, {"id": "metagpt/provider/general_api_base.py:_make_session"}, {"id": "metagpt/provider/general_api_base.py:parse_stream_helper"}, {"id": "metagpt/provider/general_api_base.py:parse_stream"}, {"id": "metagpt/provider/general_api_base.py:parse_stream_async"}, {"id": "metagpt/provider/general_api_base.py:aiohttp_session"}, {"id": "metagpt/provider/general_api_base.py:logger"}, {"id": "metagpt/provider/general_api_base.py:TIMEOUT_SECS"}, {"id": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS"}, {"id": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES"}, {"id": "metagpt/provider/general_api_base.py:_thread_context"}, {"id": "metagpt/provider/general_api_base.py:LLM_LOG"}, {"id": "metagpt/provider/general_api_base.py:api_key_to_header"}, {"id": "metagpt/provider/general_api_base.py:asyncio"}, {"id": "metagpt/provider/general_api_base.py:json"}, {"id": "metagpt/provider/general_api_base.py:os"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:platform"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:re"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:sys"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:threading"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:time"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:module:contextlib"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['asynccontextmanager']"}, {"id": "metagpt/provider/general_api_base.py:module:enum"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['Enum']"}, {"id": "metagpt/provider/general_api_base.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['AsyncGenerator', 'AsyncIterator', 'Dict', 'Iterator', 'Optional', 'Tuple', 'Union', 'overload']"}, {"id": "metagpt/provider/general_api_base.py:module:urllib.parse"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['urlencode', 'urlsplit', 'urlunsplit']"}, {"id": "metagpt/provider/general_api_base.py:aiohttp"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:requests"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:sys.version_info:[3, 8]"}, {"id": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.If\",\"tokens\":[\"sys.version_info\",[3,8]],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:logging"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.Import\",\"tokens\":[\"logging\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:openai"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:module:openai"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['version']"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TIMEOUT_SECS\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_SESSION_LIFETIME_SECS\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_CONNECTION_RETRIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"_thread_context\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_LOG\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":68,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ApiType\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"api_key_to_header\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":82,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_console_log_level\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":89,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_debug\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_info\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_warn\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":120,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"logfmt\"],\"properties\":{}}"}, {"id": "{\"lineno\":123,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIResponse\"],\"properties\":{}}"}, {"id": "{\"lineno\":153,\"end_lineno\":159,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_build_api_url\"],\"properties\":{}}"}, {"id": "{\"lineno\":162,\"end_lineno\":173,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_requests_proxies_arg\"],\"properties\":{}}"}, {"id": "{\"lineno\":176,\"end_lineno\":187,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_aiohttp_proxies_arg\"],\"properties\":{}}"}, {"id": "{\"lineno\":190,\"end_lineno\":196,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_make_session\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":210,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"id": "{\"lineno\":213,\"end_lineno\":217,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":220,\"end_lineno\":224,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"parse_stream_async\"],\"properties\":{}}"}, {"id": "{\"lineno\":227,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"APIRequestor\"],\"properties\":{}}"}, {"id": "{\"lineno\":620,\"end_lineno\":622,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aiohttp_session\"],\"properties\":{}}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__"}, {"id": "metagpt/provider/llm_provider_registry.py:register_provider"}, {"id": "metagpt/provider/llm_provider_registry.py:create_llm_instance"}, {"id": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY"}, {"id": "metagpt/provider/llm_provider_registry.py:ast.Constant:\n@Time : 2023/12/19 17:26\n@Author : alexanderwu\n@File : llm_provider_registry.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 17:26\\n@Author : alexanderwu\\n@File : llm_provider_registry.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/llm_provider_registry.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/llm_provider_registry.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/llm_provider_registry.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/llm_provider_registry.py:names:['BaseLLM']"}, {"id": "{\"lineno\":12,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderRegistry\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_provider\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":36,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"create_llm_instance\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_REGISTRY\"],\"properties\":{}}"}, {"id": "metagpt/provider/metagpt_api.py:MetaGPTLLM:_calc_usage"}, {"id": "metagpt/provider/metagpt_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : metagpt_api.py\n@Desc : MetaGPT LLM provider.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : metagpt_api.py\\n@Desc : MetaGPT LLM provider.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/metagpt_api.py:module:openai.types"}, {"id": "metagpt/provider/metagpt_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['LLMType']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.provider"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['register_provider']"}, {"id": "{\"lineno\":16,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:__init__"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage"}, {"id": "metagpt/provider/open_llm_api.py:module:openai.types"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['logger']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['register_provider']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['Costs', 'TokenCostManager']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['count_message_tokens', 'count_string_tokens']"}, {"id": "{\"lineno\":16,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:__init__"}, {"id": "metagpt/provider/human_provider.py:ast.Constant:\nFilename: MetaGPT/metagpt/provider/human_provider.py\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\nAuthor: garylin2099\n"}, {"id": "{\"lineno\":1,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nFilename: MetaGPT/metagpt/provider/human_provider.py\\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\\nAuthor: garylin2099\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/human_provider.py:module:typing"}, {"id": "metagpt/provider/human_provider.py:names:['Optional']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['LLMConfig']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.logs"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['logger']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/human_provider.py:names:['BaseLLM']"}, {"id": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanProvider\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:json"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:names:['Any', 'Iterator']"}, {"id": "{\"lineno\":10,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AsyncSSEClient\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/__init__.py"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:json"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZhipuAI']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.core._http_client"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZHIPUAI_DEFAULT_TIMEOUT']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.general_api_requestor"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['GeneralAPIRequestor']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.zhipuai.async_sse_client"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['AsyncSSEClient']"}, {"id": "{\"lineno\":14,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuModelAPI\"],\"properties\":{}}"}, {"id": "metagpt/provider/postprocess/__init__.py"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['Union']"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:metagpt.utils.repair_llm_raw_output"}, {"id": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['RepairType', 'extract_content_from_output', 'repair_llm_raw_output', 'retry_parse_json_text']"}, {"id": "{\"lineno\":15,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BasePostProcessPlugin\"],\"properties\":{}}"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:module:typing"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['Union']"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:module:metagpt.provider.postprocess.base_postprocess_plugin"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['BasePostProcessPlugin']"}, {"id": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"llm_output_postprocess\"],\"properties\":{}}"}, {"id": "metagpt/management/__init__.py"}, {"id": "metagpt/management/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:58\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:58\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:__init__"}, {"id": "metagpt/management/skill_manager.py:Skill"}, {"id": "metagpt/management/skill_manager.py:ast.Constant:\n@Time : 2023/6/5 01:44\n@Author : alexanderwu\n@File : skill_manager.py\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/5 01:44\\n@Author : alexanderwu\\n@File : skill_manager.py\\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\\n\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['Action']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.const"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['PROMPT_PATH']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.document_store.chromadb_store"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['ChromaStore']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.logs"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['logger']"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Assign\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"id": "{\"lineno\":17,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillManager\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:__name__:__main__"}, {"id": "{\"lineno\":77,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:Engineer:__init__"}, {"id": "metagpt/roles/engineer.py:Engineer:_parse_tasks"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr"}, {"id": "metagpt/roles/engineer.py:Engineer:_act"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_write_code"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_summarize"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change"}, {"id": "metagpt/roles/engineer.py:Engineer:_is_pass"}, {"id": "metagpt/roles/engineer.py:Engineer:_think"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_coding_context"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_coding_doc"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_code_actions"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action"}, {"id": "metagpt/roles/engineer.py:IS_PASS_PROMPT"}, {"id": "metagpt/roles/engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\n distribution feature for message filtering.\n 2. Consolidate message reception and processing logic within `_observe`.\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\n 4. Supplemented the external transmission of internal messages.\n@Modified By: mashenquan, 2023-11-27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":18,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\\n distribution feature for message filtering.\\n 2. Consolidate message reception and processing logic within `_observe`.\\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\\n 4. Supplemented the external transmission of internal messages.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:module:__future__"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['annotations']"}, {"id": "metagpt/roles/engineer.py:json"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:module:collections"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['defaultdict']"}, {"id": "metagpt/roles/engineer.py:module:pathlib"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Path']"}, {"id": "metagpt/roles/engineer.py:module:typing"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Set']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Action', 'WriteCode', 'WriteCodeReview', 'WriteTasks']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.fix_bug"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['FixBug']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['REFINED_TASK_LIST', 'TASK_LIST']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.summarize_code"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['SummarizeCode']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.write_code_plan_and_change_an"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['WriteCodePlanAndChange']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.const"}, {"id": "{\"lineno\":32,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CODE_PLAN_AND_CHANGE_FILE_REPO', 'REQUIREMENT_FILENAME', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.logs"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['logger']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.roles"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Role']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.schema"}, {"id": "{\"lineno\":40,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'Document', 'Documents', 'Message']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['any_to_name', 'any_to_str', 'any_to_str_set']"}, {"id": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_PASS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":386,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Engineer\"],\"properties\":{}}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:__init__"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_act"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_observe"}, {"id": "metagpt/roles/qa_engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : qa_engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\n@Modified By: mashenquan, 2023-11-27.\n 1. Following the think-act principle, solidify the task parameters when creating the\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\n to using file references.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : qa_engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\\n to using file references.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.actions"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['DebugError', 'RunCode', 'WriteTest']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.actions.summarize_code"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['SummarizeCode']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.const"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['MESSAGE_ROUTE_TO_NONE']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.logs"}, {"id": "metagpt/roles/qa_engineer.py:names:['logger']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.roles"}, {"id": "metagpt/roles/qa_engineer.py:names:['Role']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.schema"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['Document', 'Message', 'RunCodeContext', 'TestingContext']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['any_to_str_set', 'parse_recipient']"}, {"id": "{\"lineno\":27,\"end_lineno\":181,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QaEngineer\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:Teacher:__init__"}, {"id": "metagpt/roles/teacher.py:Teacher:_think"}, {"id": "metagpt/roles/teacher.py:Teacher:_react"}, {"id": "metagpt/roles/teacher.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : teacher.py\n@Desc : Used by Agent Store\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : teacher.py\\n@Desc : Used by Agent Store\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:re"}, {"id": "metagpt/roles/teacher.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['UserRequirement']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.actions.write_teaching_plan"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['TeachingPlanBlock', 'WriteTeachingPlanPart']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.logs"}, {"id": "metagpt/roles/teacher.py:names:['logger']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.roles"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['Role']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['Message']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['any_to_str', 'awrite']"}, {"id": "{\"lineno\":22,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Teacher\"],\"properties\":{}}"}, {"id": "metagpt/roles/product_manager.py:ProductManager:__init__"}, {"id": "metagpt/roles/product_manager.py:ProductManager:_think"}, {"id": "metagpt/roles/product_manager.py:ProductManager:_observe"}, {"id": "metagpt/roles/product_manager.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : product_manager.py\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : product_manager.py\\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['UserRequirement', 'WritePRD']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.actions.prepare_documents"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['PrepareDocuments']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['Role']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['any_to_name']"}, {"id": "{\"lineno\":16,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProductManager\"],\"properties\":{}}"}, {"id": "metagpt/roles/sales.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/sales.py:module:typing"}, {"id": "metagpt/roles/sales.py:names:['Optional']"}, {"id": "metagpt/roles/sales.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Field', 'model_validator']"}, {"id": "metagpt/roles/sales.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"id": "metagpt/roles/sales.py:names:['SearchAndSummarize', 'UserRequirement']"}, {"id": "metagpt/roles/sales.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/roles/sales.py:names:['BaseStore']"}, {"id": "metagpt/roles/sales.py:module:metagpt.roles"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Role']"}, {"id": "metagpt/roles/sales.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/roles/sales.py:names:['SearchEngine']"}, {"id": "{\"lineno\":19,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Sales\"],\"properties\":{}}"}, {"id": "metagpt/roles/searcher.py:Searcher:_act_sp"}, {"id": "metagpt/roles/searcher.py:Searcher:_act"}, {"id": "metagpt/roles/searcher.py:ast.Constant:\n@Time : 2023/5/23 17:25\n@Author : alexanderwu\n@File : searcher.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:25\\n@Author : alexanderwu\\n@File : searcher.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/searcher.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['Optional']"}, {"id": "metagpt/roles/searcher.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['Field', 'model_validator']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['SearchAndSummarize']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['ActionNode']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['ActionOutput']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.logs"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['logger']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.roles"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['Role']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.schema"}, {"id": "metagpt/roles/searcher.py:names:['Message']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['SearchEngine']"}, {"id": "{\"lineno\":24,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Searcher\"],\"properties\":{}}"}, {"id": "metagpt/roles/assistant.py:Assistant:__init__"}, {"id": "metagpt/roles/assistant.py:Assistant:_plan"}, {"id": "metagpt/roles/assistant.py:ast.Constant:\n@Time : 2023/8/7\n@Author : mashenquan\n@File : assistant.py\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\n make these symbols configurable and standardized, making the process of building flows more convenient.\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\n configuration file.\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\n indicates that further reasoning cannot continue.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/7\\n@Author : mashenquan\\n@File : assistant.py\\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\\n make these symbols configurable and standardized, making the process of building flows more convenient.\\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\\n configuration file.\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\\n indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/assistant.py:module:enum"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Enum']"}, {"id": "metagpt/roles/assistant.py:module:pathlib"}, {"id": "metagpt/roles/assistant.py:names:['Path']"}, {"id": "metagpt/roles/assistant.py:module:typing"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Optional']"}, {"id": "metagpt/roles/assistant.py:module:pydantic"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Field']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.actions.skill_action"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['ArgumentsParingAction', 'SkillAction']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.actions.talk_action"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['TalkAction']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.learn.skill_loader"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['SkillsDeclaration']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.logs"}, {"id": "metagpt/roles/assistant.py:names:['logger']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.memory.brain_memory"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['BrainMemory']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.roles"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Role']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Message']"}, {"id": "{\"lineno\":32,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageType\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Assistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/__init__.py"}, {"id": "metagpt/roles/__init__.py:__all__"}, {"id": "metagpt/roles/__init__.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Role']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.architect"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Architect']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.project_manager"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['ProjectManager']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.product_manager"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['ProductManager']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.engineer"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Engineer']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.qa_engineer"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['QaEngineer']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.searcher"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Searcher']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.sales"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Sales']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.customer_service"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['CustomerService']"}, {"id": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:Role:_process_role_extra"}, {"id": "metagpt/roles/role.py:Role:_reset"}, {"id": "metagpt/roles/role.py:Role:_setting"}, {"id": "metagpt/roles/role.py:Role:_check_actions"}, {"id": "metagpt/roles/role.py:Role:_init_action"}, {"id": "metagpt/roles/role.py:Role:_set_react_mode"}, {"id": "metagpt/roles/role.py:Role:_watch"}, {"id": "metagpt/roles/role.py:Role:_set_state"}, {"id": "metagpt/roles/role.py:Role:_get_prefix"}, {"id": "metagpt/roles/role.py:Role:_think"}, {"id": "metagpt/roles/role.py:Role:_act"}, {"id": "metagpt/roles/role.py:Role:_observe"}, {"id": "metagpt/roles/role.py:Role:_react"}, {"id": "metagpt/roles/role.py:Role:_act_by_order"}, {"id": "metagpt/roles/role.py:Role:_plan_and_act"}, {"id": "metagpt/roles/role.py:Role:_act_on_task"}, {"id": "metagpt/roles/role.py:PREFIX_TEMPLATE"}, {"id": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE"}, {"id": "metagpt/roles/role.py:STATE_TEMPLATE"}, {"id": "metagpt/roles/role.py:ROLE_TEMPLATE"}, {"id": "metagpt/roles/role.py:ast.Constant:\n@Time : 2023/5/11 14:42\n@Author : alexanderwu\n@File : role.py\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\n consolidated within the `_observe` function.\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\n they've subscribed to through the `subscribed_tags` property.\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":21,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:42\\n@Author : alexanderwu\\n@File : role.py\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\\n consolidated within the `_observe` function.\\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\\n they've subscribed to through the `subscribed_tags` property.\\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:module:__future__"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/roles/role.py:names:['annotations']"}, {"id": "metagpt/roles/role.py:module:enum"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/role.py:names:['Enum']"}, {"id": "metagpt/roles/role.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"TYPE_CHECKING\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"id": "metagpt/roles/role.py:names:['TYPE_CHECKING', 'Iterable', 'Optional', 'Set', 'Type', 'Union']"}, {"id": "metagpt/roles/role.py:module:pydantic"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"id": "metagpt/roles/role.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/roles/role.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/roles/role.py:names:['ActionNode']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions.add_requirement"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/role.py:names:['UserRequirement']"}, {"id": "metagpt/roles/role.py:module:metagpt.context_mixin"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"id": "metagpt/roles/role.py:names:['ContextMixin']"}, {"id": "metagpt/roles/role.py:module:metagpt.logs"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/role.py:names:['logger']"}, {"id": "metagpt/roles/role.py:module:metagpt.memory"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/roles/role.py:names:['Memory']"}, {"id": "metagpt/roles/role.py:module:metagpt.provider"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"id": "metagpt/roles/role.py:names:['HumanProvider']"}, {"id": "metagpt/roles/role.py:module:metagpt.schema"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"id": "metagpt/roles/role.py:names:['Message', 'MessageQueue', 'SerializationMixin']"}, {"id": "metagpt/roles/role.py:module:metagpt.strategy.planner"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.planner\",\"names\":[\"Planner\"]}}"}, {"id": "metagpt/roles/role.py:names:['Planner']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"id": "metagpt/roles/role.py:names:['any_to_name', 'any_to_str', 'role_raise_decorator']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/roles/role.py:names:['ProjectRepo']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.repair_llm_raw_output"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"id": "metagpt/roles/role.py:names:['extract_state_value_from_output']"}, {"id": "metagpt/roles/role.py:TYPE_CHECKING"}, {"id": "{\"lineno\":43,\"end_lineno\":44,\"type_name\":\"ast.If\",\"tokens\":[\"TYPE_CHECKING\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONSTRAINT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":50,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"STATE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"ROLE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":85,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleReactMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":130,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":133,\"end_lineno\":602,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Role\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:ast.Call:RoleContext.model_rebuild"}, {"id": "{\"lineno\":605,\"end_lineno\":605,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Call\",\"RoleContext.model_rebuild\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ast.Constant:\n@Time : 2023/9/21 14:10:05\n@Author : Stitch-z\n@File : invoice_ocr_assistant.py\n"}, {"id": "{\"lineno\":4,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 14:10:05\\n@Author : Stitch-z\\n@File : invoice_ocr_assistant.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:json"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:pathlib"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Path']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Optional']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:pandas as pd"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['BaseModel']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.actions.invoice_ocr"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['GenerateTable', 'InvoiceOCR', 'ReplyQuestion']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.prompts.invoice_ocr"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['INVOICE_OCR_SUCCESS']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.schema"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Message']"}, {"id": "{\"lineno\":23,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoicePath\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OCRResults\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceData\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyData\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCRAssistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/architect.py:Architect:__init__"}, {"id": "metagpt/roles/architect.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : architect.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : architect.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/architect.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"id": "metagpt/roles/architect.py:names:['WritePRD']"}, {"id": "metagpt/roles/architect.py:module:metagpt.actions.design_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"id": "metagpt/roles/architect.py:names:['WriteDesign']"}, {"id": "metagpt/roles/architect.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/architect.py:names:['Role']"}, {"id": "{\"lineno\":14,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Architect\"],\"properties\":{}}"}, {"id": "metagpt/roles/customer_service.py:DESC"}, {"id": "metagpt/roles/customer_service.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "metagpt/roles/customer_service.py:module:typing"}, {"id": "metagpt/roles/customer_service.py:names:['Optional']"}, {"id": "metagpt/roles/customer_service.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['Field']"}, {"id": "metagpt/roles/customer_service.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['BaseStore']"}, {"id": "metagpt/roles/customer_service.py:module:metagpt.roles"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['Sales']"}, {"id": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESC\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomerService\"],\"properties\":{}}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:__init__"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:_think"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:_act"}, {"id": "metagpt/roles/sk_agent.py:ast.Constant:\n@Time : 2023/9/13 12:23\n@Author : femto Zheng\n@File : sk_agent.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\n distribution feature for message filtering.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:23\\n@Author : femto Zheng\\n@File : sk_agent.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\\n distribution feature for message filtering.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/sk_agent.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Any', 'Callable', 'Union']"}, {"id": "metagpt/roles/sk_agent.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Field']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Kernel']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['SequentialPlanner']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.action_planner.action_planner"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['ActionPlanner']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.basic_planner"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['BasicPlanner', 'Plan']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.actions"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['UserRequirement']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.actions.execute_task"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['ExecuteTask']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.logs"}, {"id": "metagpt/roles/sk_agent.py:names:['logger']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.roles"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Role']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.schema"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Message']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.utils.make_sk_kernel"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['make_sk_kernel']"}, {"id": "{\"lineno\":26,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkAgent\"],\"properties\":{}}"}, {"id": "metagpt/roles/prompt.py:PREFIX"}, {"id": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS"}, {"id": "metagpt/roles/prompt.py:SUFFIX"}, {"id": "metagpt/roles/prompt.py:ast.Constant:\n@Time : 2023/5/18 22:43\n@Author : alexanderwu\n@File : prompt.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 22:43\\n@Author : alexanderwu\\n@File : prompt.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/prompt.py:module:enum"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/prompt.py:names:['Enum']"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_INSTRUCTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUFFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PromptString\"],\"properties\":{}}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act"}, {"id": "metagpt/roles/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/tutorial_assistant.py:module:datetime"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['datetime']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Dict']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.actions.write_tutorial"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['WriteContent', 'WriteDirectory']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['TUTORIAL_PATH']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.logs"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['logger']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Message']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.utils.file"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['File']"}, {"id": "{\"lineno\":20,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TutorialAssistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:__init__"}, {"id": "metagpt/roles/project_manager.py:ast.Constant:\n@Time : 2023/5/11 15:04\n@Author : alexanderwu\n@File : project_manager.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 15:04\\n@Author : alexanderwu\\n@File : project_manager.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"id": "metagpt/roles/project_manager.py:names:['WriteTasks']"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.actions.design_api"}, {"id": "metagpt/roles/project_manager.py:names:['WriteDesign']"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.roles.role"}, {"id": "metagpt/roles/project_manager.py:names:['Role']"}, {"id": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectManager\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:Researcher:__init__"}, {"id": "metagpt/roles/researcher.py:Researcher:_think"}, {"id": "metagpt/roles/researcher.py:Researcher:_act"}, {"id": "metagpt/roles/researcher.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:asyncio"}, {"id": "metagpt/roles/researcher.py:re"}, {"id": "metagpt/roles/researcher.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['BaseModel']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['Action', 'CollectLinks', 'ConductResearch', 'WebBrowseAndSummarize']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.actions.research"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['get_research_system_text']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['RESEARCH_PATH']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.logs"}, {"id": "metagpt/roles/researcher.py:names:['logger']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.schema"}, {"id": "metagpt/roles/researcher.py:names:['Message']"}, {"id": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Report\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Researcher\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:__name__:__main__"}, {"id": "{\"lineno\":119,\"end_lineno\":126,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/roles/ci/code_interpreter.py"}, {"id": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter"}, {"id": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:__init__"}, {"id": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:working_memory"}, {"id": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_act_on_task"}, {"id": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_write_and_exec_code"}, {"id": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_write_code"}, {"id": "metagpt/roles/ci/code_interpreter.py:module:__future__"}, {"id": "metagpt/roles/ci/code_interpreter.py:names:['annotations']"}, {"id": "metagpt/roles/ci/code_interpreter.py:module:pydantic"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/ci/code_interpreter.py:names:['Field']"}, {"id": "metagpt/roles/ci/code_interpreter.py:module:metagpt.actions.ci.ask_review"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ask_review\",\"names\":[\"ReviewConst\"]}}"}, {"id": "metagpt/roles/ci/code_interpreter.py:names:['ReviewConst']"}, {"id": "metagpt/roles/ci/code_interpreter.py:module:metagpt.actions.ci.execute_nb_code"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"id": "metagpt/roles/ci/code_interpreter.py:names:['ExecuteNbCode']"}, {"id": "metagpt/roles/ci/code_interpreter.py:module:metagpt.actions.ci.write_analysis_code"}, {"id": "{\"lineno\":7,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithoutTools\",\"WriteCodeWithTools\"]}}"}, {"id": "metagpt/roles/ci/code_interpreter.py:names:['WriteCodeWithoutTools', 'WriteCodeWithTools']"}, {"id": "metagpt/roles/ci/code_interpreter.py:module:metagpt.logs"}, {"id": "metagpt/roles/ci/code_interpreter.py:names:['logger']"}, {"id": "metagpt/roles/ci/code_interpreter.py:module:metagpt.roles"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/ci/code_interpreter.py:names:['Role']"}, {"id": "metagpt/roles/ci/code_interpreter.py:module:metagpt.schema"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Task\",\"TaskResult\"]}}"}, {"id": "metagpt/roles/ci/code_interpreter.py:names:['Message', 'Task', 'TaskResult']"}, {"id": "{\"lineno\":16,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeInterpreter\"],\"properties\":{}}"}, {"id": "metagpt/roles/ci/ml_engineer.py"}, {"id": "metagpt/roles/ci/ml_engineer.py:MLEngineer"}, {"id": "metagpt/roles/ci/ml_engineer.py:MLEngineer:_write_code"}, {"id": "metagpt/roles/ci/ml_engineer.py:MLEngineer:_update_data_columns"}, {"id": "metagpt/roles/ci/ml_engineer.py:module:metagpt.actions.ci.debug_code"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.debug_code\",\"names\":[\"DebugCode\"]}}"}, {"id": "metagpt/roles/ci/ml_engineer.py:names:['DebugCode']"}, {"id": "metagpt/roles/ci/ml_engineer.py:module:metagpt.actions.ci.execute_nb_code"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"id": "metagpt/roles/ci/ml_engineer.py:names:['ExecuteNbCode']"}, {"id": "metagpt/roles/ci/ml_engineer.py:module:metagpt.actions.ci.ml_action"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ml_action\",\"names\":[\"UpdateDataColumns\",\"WriteCodeWithToolsML\"]}}"}, {"id": "metagpt/roles/ci/ml_engineer.py:names:['UpdateDataColumns', 'WriteCodeWithToolsML']"}, {"id": "metagpt/roles/ci/ml_engineer.py:module:metagpt.logs"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/ci/ml_engineer.py:names:['logger']"}, {"id": "metagpt/roles/ci/ml_engineer.py:module:metagpt.roles.ci.code_interpreter"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.ci.code_interpreter\",\"names\":[\"CodeInterpreter\"]}}"}, {"id": "metagpt/roles/ci/ml_engineer.py:names:['CodeInterpreter']"}, {"id": "metagpt/roles/ci/ml_engineer.py:module:metagpt.tools.tool_type"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"id": "metagpt/roles/ci/ml_engineer.py:names:['ToolType']"}, {"id": "metagpt/roles/ci/ml_engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\"]}}"}, {"id": "metagpt/roles/ci/ml_engineer.py:names:['any_to_str']"}, {"id": "{\"lineno\":10,\"end_lineno\":64,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MLEngineer\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py"}, {"id": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping"}, {"id": "metagpt/utils/serialize.py:actionoutput_mapping_to_str"}, {"id": "metagpt/utils/serialize.py:actionoutput_str_to_mapping"}, {"id": "metagpt/utils/serialize.py:serialize_message"}, {"id": "metagpt/utils/serialize.py:deserialize_message"}, {"id": "metagpt/utils/serialize.py:copy"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py:pickle"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pickle\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"id": "metagpt/utils/serialize.py:names:['import_class']"}, {"id": "{\"lineno\":11,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutout_schema_to_mapping\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":47,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_mapping_to_str\"],\"properties\":{}}"}, {"id": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_str_to_mapping\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":71,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_message\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"deserialize_message\"],\"properties\":{}}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:__init__"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:__init__"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:__str__"}, {"id": "metagpt/utils/project_repo.py:ast.Constant:\n@Time : 2024/1/8\n@Author : mashenquan\n@File : project_repo.py\n@Desc : Wrapper for GitRepository and FileRepository of project.\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/8\\n@Author : mashenquan\\n@File : project_repo.py\\n@Desc : Wrapper for GitRepository and FileRepository of project.\\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/project_repo.py:module:__future__"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['annotations']"}, {"id": "metagpt/utils/project_repo.py:module:pathlib"}, {"id": "metagpt/utils/project_repo.py:names:['Path']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['CLASS_VIEW_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_PDF_FILE_REPO', 'CODE_SUMMARIES_FILE_REPO', 'CODE_SUMMARIES_PDF_FILE_REPO', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'DATA_API_DESIGN_FILE_REPO', 'DOCS_FILE_REPO', 'GRAPH_REPO_FILE_REPO', 'PRD_PDF_FILE_REPO', 'PRDS_FILE_REPO', 'REQUIREMENT_FILENAME', 'RESOURCES_FILE_REPO', 'SD_OUTPUT_FILE_REPO', 'SEQ_FLOW_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'SYSTEM_DESIGN_PDF_FILE_REPO', 'TASK_FILE_REPO', 'TASK_PDF_FILE_REPO', 'TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO', 'VISUAL_GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['FileRepository']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['GitRepository']"}, {"id": "{\"lineno\":42,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocFileRepositories\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResourceFileRepositories\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":149,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectRepo\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py"}, {"id": "metagpt/utils/mmdc_playwright.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_playwright.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : Steven Lee\n@File : mmdc_playwright.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : Steven Lee\\n@File : mmdc_playwright.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py:os"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py:module:urllib.parse"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['urljoin']"}, {"id": "metagpt/utils/mmdc_playwright.py:module:playwright.async_api"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['async_playwright']"}, {"id": "metagpt/utils/mmdc_playwright.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":121,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:__init__"}, {"id": "metagpt/utils/dependency_file.py:ast.Constant:\n@Time : 2023/11/22\n@Author : mashenquan\n@File : dependency_file.py\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/22\\n@Author : mashenquan\\n@File : dependency_file.py\\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:module:__future__"}, {"id": "metagpt/utils/dependency_file.py:names:['annotations']"}, {"id": "metagpt/utils/dependency_file.py:json"}, {"id": "metagpt/utils/dependency_file.py:re"}, {"id": "metagpt/utils/dependency_file.py:module:pathlib"}, {"id": "metagpt/utils/dependency_file.py:names:['Path']"}, {"id": "metagpt/utils/dependency_file.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['Set']"}, {"id": "metagpt/utils/dependency_file.py:aiofiles"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['aread']"}, {"id": "metagpt/utils/dependency_file.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['handle_exception']"}, {"id": "{\"lineno\":22,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DependencyFile\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py"}, {"id": "metagpt/utils/make_sk_kernel.py:make_sk_kernel"}, {"id": "metagpt/utils/make_sk_kernel.py:ast.Constant:\n@Time : 2023/9/13 12:29\n@Author : femto Zheng\n@File : make_sk_kernel.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:29\\n@Author : femto Zheng\\n@File : make_sk_kernel.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py:semantic_kernel as sk"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"semantic_kernel as sk\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion"}, {"id": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['AzureChatCompletion']"}, {"id": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion"}, {"id": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['OpenAIChatCompletion']"}, {"id": "metagpt/utils/make_sk_kernel.py:module:metagpt.config2"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['config']"}, {"id": "{\"lineno\":19,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_sk_kernel\"],\"properties\":{}}"}, {"id": "metagpt/utils/token_counter.py"}, {"id": "metagpt/utils/token_counter.py:count_message_tokens"}, {"id": "metagpt/utils/token_counter.py:count_string_tokens"}, {"id": "metagpt/utils/token_counter.py:get_max_completion_tokens"}, {"id": "metagpt/utils/token_counter.py:TOKEN_COSTS"}, {"id": "metagpt/utils/token_counter.py:TOKEN_MAX"}, {"id": "metagpt/utils/token_counter.py:ast.Constant:\n@Time : 2023/5/18 00:40\n@Author : alexanderwu\n@File : token_counter.py\nref1: https://openai.com/pricing\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\nref5: https://ai.google.dev/models/gemini\n"}, {"id": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 00:40\\n@Author : alexanderwu\\n@File : token_counter.py\\nref1: https://openai.com/pricing\\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\\nref5: https://ai.google.dev/models/gemini\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/token_counter.py:tiktoken"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"tiktoken\"],\"properties\":{}}"}, {"id": "{\"lineno\":15,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_COSTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_MAX\"],\"properties\":{}}"}, {"id": "{\"lineno\":65,\"end_lineno\":127,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_message_tokens\"],\"properties\":{}}"}, {"id": "{\"lineno\":130,\"end_lineno\":146,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_string_tokens\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":161,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_max_completion_tokens\"],\"properties\":{}}"}, {"id": "metagpt/utils/embedding.py"}, {"id": "metagpt/utils/embedding.py:get_embedding"}, {"id": "metagpt/utils/embedding.py:ast.Constant:\n@Time : 2024/1/4 20:58\n@Author : alexanderwu\n@File : embedding.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 20:58\\n@Author : alexanderwu\\n@File : embedding.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/embedding.py:module:langchain_community.embeddings"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/utils/embedding.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/utils/embedding.py:module:metagpt.config2"}, {"id": "metagpt/utils/embedding.py:names:['config']"}, {"id": "{\"lineno\":13,\"end_lineno\":16,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_embedding\"],\"properties\":{}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_json_format"}, {"id": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json"}, {"id": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry"}, {"id": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text"}, {"id": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:copy"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:enum"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['Enum']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['Callable', 'Union']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:regex as re"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"regex as re\"],\"properties\":{}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:tenacity"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['RetryCallState', 'retry', 'stop_after_attempt', 'wait_fixed']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.config2"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['config']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.logs"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['logger']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.utils.custom_decoder"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['CustomDecoder']"}, {"id": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepairType\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":41,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_case_sensitivity\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":64,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_special_character_missing\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":105,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_required_key_pair_missing\"],\"properties\":{}}"}, {"id": "{\"lineno\":108,\"end_lineno\":139,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_json_format\"],\"properties\":{}}"}, {"id": "{\"lineno\":142,\"end_lineno\":153,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_repair_llm_raw_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":156,\"end_lineno\":177,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_llm_raw_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_invalid_json\"],\"properties\":{}}"}, {"id": "{\"lineno\":230,\"end_lineno\":264,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"run_after_exp_and_passon_next_retry\"],\"properties\":{}}"}, {"id": "{\"lineno\":272,\"end_lineno\":286,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"retry_parse_json_text\"],\"properties\":{}}"}, {"id": "{\"lineno\":289,\"end_lineno\":319,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_content_from_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":322,\"end_lineno\":335,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_state_value_from_output\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py"}, {"id": "metagpt/utils/mermaid.py:mermaid_to_file"}, {"id": "metagpt/utils/mermaid.py:MMC1"}, {"id": "metagpt/utils/mermaid.py:MMC2"}, {"id": "metagpt/utils/mermaid.py:ast.Constant:\n@Time : 2023/7/4 10:53\n@Author : alexanderwu alitrack\n@File : mermaid.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/4 10:53\\n@Author : alexanderwu alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py:asyncio"}, {"id": "metagpt/utils/mermaid.py:os"}, {"id": "metagpt/utils/mermaid.py:module:pathlib"}, {"id": "metagpt/utils/mermaid.py:names:['Path']"}, {"id": "metagpt/utils/mermaid.py:aiofiles"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.config2"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/utils/mermaid.py:names:['config']"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.logs"}, {"id": "metagpt/utils/mermaid.py:names:['logger']"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"id": "metagpt/utils/mermaid.py:names:['check_cmd_exists']"}, {"id": "{\"lineno\":19,\"end_lineno\":90,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC1\"],\"properties\":{}}"}, {"id": "{\"lineno\":127,\"end_lineno\":145,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC2\"],\"properties\":{}}"}, {"id": "metagpt/utils/parse_html.py:get_html_content"}, {"id": "metagpt/utils/parse_html.py:_get_soup"}, {"id": "metagpt/utils/parse_html.py:module:__future__"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['annotations']"}, {"id": "metagpt/utils/parse_html.py:module:typing"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['Generator', 'Optional']"}, {"id": "metagpt/utils/parse_html.py:module:urllib.parse"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['urljoin', 'urlparse']"}, {"id": "metagpt/utils/parse_html.py:module:bs4"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['BeautifulSoup']"}, {"id": "metagpt/utils/parse_html.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['BaseModel', 'PrivateAttr']"}, {"id": "{\"lineno\":11,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebPage\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":45,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_html_content\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_soup\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name"}, {"id": "metagpt/utils/visual_graph_repo.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : visualize_graph.py\n@Desc : Visualization tool to visualize the class diagrams or sequence diagrams of the graph repository.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : visualize_graph.py\\n@Desc : Visualization tool to visualize the class diagrams or sequence diagrams of the graph repository.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:module:__future__"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['annotations']"}, {"id": "metagpt/utils/visual_graph_repo.py:re"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:module:abc"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['ABC']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:pathlib"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['Path']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['List', 'Optional']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:pydantic"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.schema"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['UMLClassView']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['split_namespace']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['DiGraphRepository']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":25,\"end_lineno\":67,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"_VisualClassView\"],\"properties\":{}}"}, {"id": "{\"lineno\":70,\"end_lineno\":81,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualGraphRepo\"],\"properties\":{}}"}, {"id": "{\"lineno\":84,\"end_lineno\":187,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualDiGraphRepo\"],\"properties\":{}}"}, {"id": "metagpt/utils/special_tokens.py"}, {"id": "metagpt/utils/special_tokens.py:MSG_SEP"}, {"id": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Assign\",\"tokens\":[\"MSG_SEP\"],\"properties\":{}}"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILENAME_CODE_SEP\"],\"properties\":{}}"}, {"id": "metagpt/utils/ahttp_client.py"}, {"id": "metagpt/utils/ahttp_client.py:apost"}, {"id": "metagpt/utils/ahttp_client.py:apost_stream"}, {"id": "metagpt/utils/ahttp_client.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/utils/ahttp_client.py:names:['Any', 'Mapping', 'Optional', 'Union']"}, {"id": "metagpt/utils/ahttp_client.py:aiohttp"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/utils/ahttp_client.py:module:aiohttp.client"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"id": "metagpt/utils/ahttp_client.py:names:['DEFAULT_TIMEOUT']"}, {"id": "{\"lineno\":11,\"end_lineno\":28,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":49,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost_stream\"],\"properties\":{}}"}, {"id": "metagpt/utils/__init__.py"}, {"id": "metagpt/utils/__init__.py:__all__"}, {"id": "metagpt/utils/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:50\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:50\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.read_document"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['read_docx']"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.singleton"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['Singleton']"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['TOKEN_COSTS', 'count_message_tokens', 'count_string_tokens']"}, {"id": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py"}, {"id": "metagpt/utils/mmdc_ink.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_ink.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mermaid.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py:base64"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py:module:aiohttp"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"id": "metagpt/utils/mmdc_ink.py:names:['ClientError', 'ClientSession']"}, {"id": "metagpt/utils/mmdc_ink.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_ink.py:names:['logger']"}, {"id": "{\"lineno\":15,\"end_lineno\":41,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__"}, {"id": "metagpt/utils/di_graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : di_graph_repository.py\n@Desc : Graph repository based on DiGraph.\n This script defines a graph repository class based on a directed graph (DiGraph), providing functionalities\n specific to handling directed relationships between entities.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : di_graph_repository.py\\n@Desc : Graph repository based on DiGraph.\\n This script defines a graph repository class based on a directed graph (DiGraph), providing functionalities\\n specific to handling directed relationships between entities.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:__future__"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['annotations']"}, {"id": "metagpt/utils/di_graph_repository.py:json"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:pathlib"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['Path']"}, {"id": "metagpt/utils/di_graph_repository.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['List']"}, {"id": "metagpt/utils/di_graph_repository.py:networkx"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"networkx\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['aread', 'awrite']"}, {"id": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['SPO', 'GraphRepository']"}, {"id": "{\"lineno\":23,\"end_lineno\":299,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DiGraphRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:ast.Constant:\n@Time : 2024/1/4 10:18\n@Author : alexanderwu\n@File : YamlModel.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 10:18\\n@Author : alexanderwu\\n@File : YamlModel.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:module:pathlib"}, {"id": "metagpt/utils/yaml_model.py:names:['Path']"}, {"id": "metagpt/utils/yaml_model.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"id": "metagpt/utils/yaml_model.py:names:['Dict', 'Optional']"}, {"id": "metagpt/utils/yaml_model.py:yaml"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:module:pydantic"}, {"id": "metagpt/utils/yaml_model.py:names:['BaseModel', 'model_validator']"}, {"id": "{\"lineno\":15,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModel\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModelWithoutDefault\"],\"properties\":{}}"}, {"id": "metagpt/utils/cost_manager.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : openai.py\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : openai.py\\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/cost_manager.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"id": "metagpt/utils/cost_manager.py:names:['NamedTuple']"}, {"id": "metagpt/utils/cost_manager.py:module:pydantic"}, {"id": "metagpt/utils/cost_manager.py:names:['BaseModel']"}, {"id": "metagpt/utils/cost_manager.py:module:metagpt.logs"}, {"id": "metagpt/utils/cost_manager.py:names:['logger']"}, {"id": "metagpt/utils/cost_manager.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"id": "metagpt/utils/cost_manager.py:names:['TOKEN_COSTS']"}, {"id": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Costs\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":84,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TokenCostManager\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : file.py\n@Describe : General file operations.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : file.py\\n@Describe : General file operations.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:module:pathlib"}, {"id": "metagpt/utils/file.py:names:['Path']"}, {"id": "metagpt/utils/file.py:aiofiles"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:module:metagpt.logs"}, {"id": "metagpt/utils/file.py:names:['logger']"}, {"id": "metagpt/utils/file.py:module:metagpt.utils.exceptions"}, {"id": "metagpt/utils/file.py:names:['handle_exception']"}, {"id": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"File\"],\"properties\":{}}"}, {"id": "metagpt/utils/save_code.py"}, {"id": "metagpt/utils/save_code.py:save_code_file"}, {"id": "metagpt/utils/save_code.py:os"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/save_code.py:nbformat"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"nbformat\"],\"properties\":{}}"}, {"id": "metagpt/utils/save_code.py:module:metagpt.const"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\"]}}"}, {"id": "metagpt/utils/save_code.py:names:['DATA_PATH']"}, {"id": "metagpt/utils/save_code.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"write_json_file\"]}}"}, {"id": "metagpt/utils/save_code.py:names:['write_json_file']"}, {"id": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"save_code_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:NoMoneyException:__init__"}, {"id": "metagpt/utils/common.py:NoMoneyException:__str__"}, {"id": "metagpt/utils/common.py:check_cmd_exists"}, {"id": "metagpt/utils/common.py:require_python_version"}, {"id": "metagpt/utils/common.py:print_members"}, {"id": "metagpt/utils/common.py:get_function_schema"}, {"id": "metagpt/utils/common.py:parse_recipient"}, {"id": "metagpt/utils/common.py:create_func_call_config"}, {"id": "metagpt/utils/common.py:remove_comments"}, {"id": "metagpt/utils/common.py:get_class_name"}, {"id": "metagpt/utils/common.py:any_to_str"}, {"id": "metagpt/utils/common.py:any_to_str_set"}, {"id": "metagpt/utils/common.py:is_send_to"}, {"id": "metagpt/utils/common.py:any_to_name"}, {"id": "metagpt/utils/common.py:concat_namespace"}, {"id": "metagpt/utils/common.py:split_namespace"}, {"id": "metagpt/utils/common.py:auto_namespace"}, {"id": "metagpt/utils/common.py:add_affix"}, {"id": "metagpt/utils/common.py:remove_affix"}, {"id": "metagpt/utils/common.py:general_after_log"}, {"id": "metagpt/utils/common.py:read_json_file"}, {"id": "metagpt/utils/common.py:write_json_file"}, {"id": "metagpt/utils/common.py:read_csv_to_list"}, {"id": "metagpt/utils/common.py:import_class"}, {"id": "metagpt/utils/common.py:import_class_inst"}, {"id": "metagpt/utils/common.py:format_trackback_info"}, {"id": "metagpt/utils/common.py:serialize_decorator"}, {"id": "metagpt/utils/common.py:role_raise_decorator"}, {"id": "metagpt/utils/common.py:aread"}, {"id": "metagpt/utils/common.py:awrite"}, {"id": "metagpt/utils/common.py:read_file_block"}, {"id": "metagpt/utils/common.py:list_files"}, {"id": "metagpt/utils/common.py:parse_json_code_block"}, {"id": "metagpt/utils/common.py:remove_white_spaces"}, {"id": "metagpt/utils/common.py:aread_bin"}, {"id": "metagpt/utils/common.py:awrite_bin"}, {"id": "metagpt/utils/common.py:is_coroutine_func"}, {"id": "metagpt/utils/common.py:load_mc_skills_code"}, {"id": "metagpt/utils/common.py:encode_image"}, {"id": "metagpt/utils/common.py:decode_image"}, {"id": "metagpt/utils/common.py:ast.Constant:\n@Time : 2023/4/29 16:07\n@Author : alexanderwu\n@File : common.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n Add generic class-to-string and object-to-string conversion functionality.\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\n responses.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 16:07\\n@Author : alexanderwu\\n@File : common.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n Add generic class-to-string and object-to-string conversion functionality.\\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\\n responses.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:__future__"}, {"id": "metagpt/utils/common.py:names:['annotations']"}, {"id": "metagpt/utils/common.py:ast"}, {"id": "metagpt/utils/common.py:base64"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:contextlib"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"contextlib\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:csv"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"csv\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:importlib"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:inspect"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:json"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:os"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:platform"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:re"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:sys"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:traceback"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:io"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"io\",\"names\":[\"BytesIO\"]}}"}, {"id": "metagpt/utils/common.py:names:['BytesIO']"}, {"id": "metagpt/utils/common.py:module:pathlib"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/utils/common.py:names:['Path']"}, {"id": "metagpt/utils/common.py:module:typing"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"List\",\"Tuple\",\"Union\"]}}"}, {"id": "metagpt/utils/common.py:names:['Any', 'Callable', 'List', 'Tuple', 'Union']"}, {"id": "metagpt/utils/common.py:module:urllib.parse"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"quote\",\"unquote\"]}}"}, {"id": "metagpt/utils/common.py:names:['quote', 'unquote']"}, {"id": "metagpt/utils/common.py:aiofiles"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:loguru"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.Import\",\"tokens\":[\"loguru\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:requests"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:PIL"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\"]}}"}, {"id": "metagpt/utils/common.py:names:['Image']"}, {"id": "metagpt/utils/common.py:module:pydantic_core"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"id": "metagpt/utils/common.py:names:['to_jsonable_python']"}, {"id": "metagpt/utils/common.py:module:tenacity"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"id": "metagpt/utils/common.py:names:['RetryCallState', 'RetryError', '_utils']"}, {"id": "metagpt/utils/common.py:module:metagpt.const"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"id": "metagpt/utils/common.py:names:['MESSAGE_ROUTE_TO_ALL']"}, {"id": "metagpt/utils/common.py:module:metagpt.logs"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/utils/common.py:names:['logger']"}, {"id": "metagpt/utils/common.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/utils/common.py:names:['handle_exception']"}, {"id": "{\"lineno\":44,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"check_cmd_exists\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":60,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"require_python_version\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":237,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OutputParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":240,\"end_lineno\":310,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":313,\"end_lineno\":322,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NoMoneyException\"],\"properties\":{}}"}, {"id": "{\"lineno\":325,\"end_lineno\":341,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"print_members\"],\"properties\":{}}"}, {"id": "{\"lineno\":344,\"end_lineno\":349,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_function_schema\"],\"properties\":{}}"}, {"id": "{\"lineno\":352,\"end_lineno\":362,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_recipient\"],\"properties\":{}}"}, {"id": "{\"lineno\":365,\"end_lineno\":372,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"create_func_call_config\"],\"properties\":{}}"}, {"id": "{\"lineno\":375,\"end_lineno\":387,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_comments\"],\"properties\":{}}"}, {"id": "{\"lineno\":390,\"end_lineno\":392,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_name\"],\"properties\":{}}"}, {"id": "{\"lineno\":395,\"end_lineno\":402,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str\"],\"properties\":{}}"}, {"id": "{\"lineno\":405,\"end_lineno\":420,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str_set\"],\"properties\":{}}"}, {"id": "{\"lineno\":423,\"end_lineno\":431,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_send_to\"],\"properties\":{}}"}, {"id": "{\"lineno\":434,\"end_lineno\":442,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_name\"],\"properties\":{}}"}, {"id": "{\"lineno\":445,\"end_lineno\":458,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"concat_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":461,\"end_lineno\":478,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":481,\"end_lineno\":512,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"auto_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":515,\"end_lineno\":541,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"add_affix\"],\"properties\":{}}"}, {"id": "{\"lineno\":544,\"end_lineno\":567,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_affix\"],\"properties\":{}}"}, {"id": "{\"lineno\":570,\"end_lineno\":600,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"general_after_log\"],\"properties\":{}}"}, {"id": "{\"lineno\":603,\"end_lineno\":612,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_json_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":615,\"end_lineno\":621,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"write_json_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":624,\"end_lineno\":644,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_csv_to_list\"],\"properties\":{}}"}, {"id": "{\"lineno\":647,\"end_lineno\":650,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class\"],\"properties\":{}}"}, {"id": "{\"lineno\":653,\"end_lineno\":656,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class_inst\"],\"properties\":{}}"}, {"id": "{\"lineno\":659,\"end_lineno\":660,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"format_trackback_info\"],\"properties\":{}}"}, {"id": "{\"lineno\":663,\"end_lineno\":674,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":677,\"end_lineno\":704,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"role_raise_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":708,\"end_lineno\":712,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread\"],\"properties\":{}}"}, {"id": "{\"lineno\":715,\"end_lineno\":720,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite\"],\"properties\":{}}"}, {"id": "{\"lineno\":723,\"end_lineno\":737,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"read_file_block\"],\"properties\":{}}"}, {"id": "{\"lineno\":740,\"end_lineno\":754,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"list_files\"],\"properties\":{}}"}, {"id": "{\"lineno\":757,\"end_lineno\":759,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_json_code_block\"],\"properties\":{}}"}, {"id": "{\"lineno\":762,\"end_lineno\":772,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_white_spaces\"],\"properties\":{}}"}, {"id": "{\"lineno\":775,\"end_lineno\":793,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread_bin\"],\"properties\":{}}"}, {"id": "{\"lineno\":796,\"end_lineno\":811,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite_bin\"],\"properties\":{}}"}, {"id": "{\"lineno\":814,\"end_lineno\":815,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_coroutine_func\"],\"properties\":{}}"}, {"id": "{\"lineno\":818,\"end_lineno\":825,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"load_mc_skills_code\"],\"properties\":{}}"}, {"id": "{\"lineno\":828,\"end_lineno\":839,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"encode_image\"],\"properties\":{}}"}, {"id": "{\"lineno\":842,\"end_lineno\":853,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_image\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:Redis:__init__"}, {"id": "metagpt/utils/redis.py:Redis:_connect"}, {"id": "metagpt/utils/redis.py:ast.Constant:\n@Time : 2023/12/27\n@Author : mashenquan\n@File : redis.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/27\\n@Author : mashenquan\\n@File : redis.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:__future__"}, {"id": "metagpt/utils/redis.py:names:['annotations']"}, {"id": "metagpt/utils/redis.py:traceback"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:datetime"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"id": "metagpt/utils/redis.py:names:['timedelta']"}, {"id": "metagpt/utils/redis.py:aioredis"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aioredis\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:metagpt.configs.redis_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"id": "metagpt/utils/redis.py:names:['RedisConfig']"}, {"id": "metagpt/utils/redis.py:module:metagpt.logs"}, {"id": "metagpt/utils/redis.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":63,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Redis\"],\"properties\":{}}"}, {"id": "metagpt/utils/text.py"}, {"id": "metagpt/utils/text.py:reduce_message_length"}, {"id": "metagpt/utils/text.py:generate_prompt_chunk"}, {"id": "metagpt/utils/text.py:split_paragraph"}, {"id": "metagpt/utils/text.py:decode_unicode_escape"}, {"id": "metagpt/utils/text.py:_split_by_count"}, {"id": "metagpt/utils/text.py:_split_text_with_ends"}, {"id": "metagpt/utils/text.py:module:typing"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"id": "metagpt/utils/text.py:names:['Generator', 'Sequence']"}, {"id": "metagpt/utils/text.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"id": "metagpt/utils/text.py:names:['TOKEN_MAX', 'count_string_tokens']"}, {"id": "{\"lineno\":6,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"reduce_message_length\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":76,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_prompt_chunk\"],\"properties\":{}}"}, {"id": "{\"lineno\":79,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_paragraph\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_unicode_escape\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_by_count\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_text_with_ends\"],\"properties\":{}}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:__init__"}, {"id": "metagpt/utils/graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : graph_repository.py\n@Desc : Superclass for graph repository. This script defines a superclass for a graph repository, providing a\n foundation for specific implementations.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : graph_repository.py\\n@Desc : Superclass for graph repository. This script defines a superclass for a graph repository, providing a\\n foundation for specific implementations.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/graph_repository.py:module:abc"}, {"id": "metagpt/utils/graph_repository.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/utils/graph_repository.py:module:collections"}, {"id": "metagpt/utils/graph_repository.py:names:['defaultdict']"}, {"id": "metagpt/utils/graph_repository.py:module:pathlib"}, {"id": "metagpt/utils/graph_repository.py:names:['Path']"}, {"id": "metagpt/utils/graph_repository.py:module:typing"}, {"id": "metagpt/utils/graph_repository.py:names:['List']"}, {"id": "metagpt/utils/graph_repository.py:module:pydantic"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['BaseModel']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['DotClassInfo', 'DotClassRelationship', 'RepoFileInfo']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['concat_namespace', 'split_namespace']"}, {"id": "{\"lineno\":23,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphKeyword\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":81,\"end_lineno\":499,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/singleton.py:Singleton:__call__"}, {"id": "metagpt/utils/singleton.py:ast.Constant:\n@Time : 2023/5/11 16:15\n@Author : alexanderwu\n@File : singleton.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 16:15\\n@Author : alexanderwu\\n@File : singleton.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/singleton.py:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"abc\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":22,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Singleton\"],\"properties\":{}}"}, {"id": "metagpt/utils/recovery_util.py"}, {"id": "metagpt/utils/recovery_util.py:load_history"}, {"id": "metagpt/utils/recovery_util.py:save_history"}, {"id": "metagpt/utils/recovery_util.py:json"}, {"id": "metagpt/utils/recovery_util.py:module:datetime"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/utils/recovery_util.py:names:['datetime']"}, {"id": "metagpt/utils/recovery_util.py:module:pathlib"}, {"id": "metagpt/utils/recovery_util.py:names:['Path']"}, {"id": "metagpt/utils/recovery_util.py:nbformat"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"nbformat\"],\"properties\":{}}"}, {"id": "metagpt/utils/recovery_util.py:module:metagpt.const"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\"]}}"}, {"id": "metagpt/utils/recovery_util.py:names:['DATA_PATH']"}, {"id": "metagpt/utils/recovery_util.py:module:metagpt.roles.role"}, {"id": "metagpt/utils/recovery_util.py:names:['Role']"}, {"id": "metagpt/utils/recovery_util.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"read_json_file\"]}}"}, {"id": "metagpt/utils/recovery_util.py:names:['read_json_file']"}, {"id": "metagpt/utils/recovery_util.py:module:metagpt.utils.save_code"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.save_code\",\"names\":[\"save_code_file\"]}}"}, {"id": "metagpt/utils/recovery_util.py:names:['save_code_file']"}, {"id": "{\"lineno\":17,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"load_history\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":58,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"save_history\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:__init__"}, {"id": "metagpt/utils/file_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:__future__"}, {"id": "metagpt/utils/file_repository.py:names:['annotations']"}, {"id": "metagpt/utils/file_repository.py:json"}, {"id": "metagpt/utils/file_repository.py:os"}, {"id": "metagpt/utils/file_repository.py:module:datetime"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['datetime']"}, {"id": "metagpt/utils/file_repository.py:module:pathlib"}, {"id": "metagpt/utils/file_repository.py:names:['Path']"}, {"id": "metagpt/utils/file_repository.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['Dict', 'List', 'Set']"}, {"id": "metagpt/utils/file_repository.py:aiofiles"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/file_repository.py:names:['logger']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.schema"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['Document']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['aread']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.utils.json_to_markdown"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['json_to_markdown']"}, {"id": "{\"lineno\":25,\"end_lineno\":240,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FileRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:__init__"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:_leave"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:__init__"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:_leave"}, {"id": "metagpt/utils/pycst.py:get_docstring_statement"}, {"id": "metagpt/utils/pycst.py:has_decorator"}, {"id": "metagpt/utils/pycst.py:merge_docstring"}, {"id": "metagpt/utils/pycst.py:DocstringNode"}, {"id": "metagpt/utils/pycst.py:module:__future__"}, {"id": "metagpt/utils/pycst.py:names:['annotations']"}, {"id": "metagpt/utils/pycst.py:module:typing"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['Union']"}, {"id": "metagpt/utils/pycst.py:libcst as cst"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"libcst as cst\"],\"properties\":{}}"}, {"id": "metagpt/utils/pycst.py:module:libcst._nodes.module"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['Module']"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"DocstringNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_docstring_statement\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"has_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringCollector\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringTransformer\"],\"properties\":{}}"}, {"id": "{\"lineno\":159,\"end_lineno\":176,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_docstring\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py"}, {"id": "metagpt/utils/exceptions.py:handle_exception"}, {"id": "metagpt/utils/exceptions.py:ReturnType"}, {"id": "metagpt/utils/exceptions.py:ast.Constant:\n@Time : 2023/12/19 14:46\n@Author : alexanderwu\n@File : exceptions.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 14:46\\n@Author : alexanderwu\\n@File : exceptions.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:asyncio"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:functools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"functools\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:traceback"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"id": "metagpt/utils/exceptions.py:names:['Any', 'Callable', 'Tuple', 'Type', 'TypeVar', 'Union']"}, {"id": "metagpt/utils/exceptions.py:module:metagpt.logs"}, {"id": "metagpt/utils/exceptions.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"ReturnType\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":61,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"handle_exception\"],\"properties\":{}}"}, {"id": "metagpt/utils/human_interaction.py:json"}, {"id": "metagpt/utils/human_interaction.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['Any', 'Tuple', 'Type']"}, {"id": "metagpt/utils/human_interaction.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['BaseModel']"}, {"id": "metagpt/utils/human_interaction.py:module:metagpt.logs"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['logger']"}, {"id": "metagpt/utils/human_interaction.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['import_class']"}, {"id": "{\"lineno\":14,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanInteraction\"],\"properties\":{}}"}, {"id": "metagpt/utils/highlight.py"}, {"id": "metagpt/utils/highlight.py:highlight"}, {"id": "metagpt/utils/highlight.py:module:pygments"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['highlight as highlight_']"}, {"id": "metagpt/utils/highlight.py:module:pygments.formatters"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['HtmlFormatter', 'TerminalFormatter']"}, {"id": "metagpt/utils/highlight.py:module:pygments.lexers"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['PythonLexer', 'SqlLexer']"}, {"id": "{\"lineno\":7,\"end_lineno\":25,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"highlight\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mmdc_pyppeteer.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mmdc_pyppeteer.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:os"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:urllib.parse"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['urljoin']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:pyppeteer"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['launch']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.config2"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['config']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:S3:__init__"}, {"id": "metagpt/utils/s3.py:base64"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:os.path"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:traceback"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:uuid"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:module:pathlib"}, {"id": "metagpt/utils/s3.py:names:['Path']"}, {"id": "metagpt/utils/s3.py:module:typing"}, {"id": "metagpt/utils/s3.py:names:['Optional']"}, {"id": "metagpt/utils/s3.py:aioboto3"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aioboto3\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:aiofiles"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:module:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"id": "metagpt/utils/s3.py:names:['S3Config']"}, {"id": "metagpt/utils/s3.py:module:metagpt.const"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/utils/s3.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/utils/s3.py:module:metagpt.logs"}, {"id": "metagpt/utils/s3.py:names:['logger']"}, {"id": "{\"lineno\":16,\"end_lineno\":154,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3\"],\"properties\":{}}"}, {"id": "metagpt/utils/json_to_markdown.py"}, {"id": "metagpt/utils/json_to_markdown.py:json_to_markdown"}, {"id": "metagpt/utils/json_to_markdown.py:ast.Constant:\n@Time : 2023/9/11 11:50\n@Author : femto Zheng\n@File : json_to_markdown.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/11 11:50\\n@Author : femto Zheng\\n@File : json_to_markdown.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"json_to_markdown\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__"}, {"id": "metagpt/utils/custom_decoder.py:py_make_scanner"}, {"id": "metagpt/utils/custom_decoder.py:JSONObject"}, {"id": "metagpt/utils/custom_decoder.py:py_scanstring"}, {"id": "metagpt/utils/custom_decoder.py:NUMBER_RE"}, {"id": "metagpt/utils/custom_decoder.py:FLAGS"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE"}, {"id": "metagpt/utils/custom_decoder.py:BACKSLASH"}, {"id": "metagpt/utils/custom_decoder.py:WHITESPACE"}, {"id": "metagpt/utils/custom_decoder.py:WHITESPACE_STR"}, {"id": "metagpt/utils/custom_decoder.py:scanstring"}, {"id": "metagpt/utils/custom_decoder.py:json"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:re"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:module:json"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"id": "metagpt/utils/custom_decoder.py:names:['JSONDecodeError']"}, {"id": "metagpt/utils/custom_decoder.py:module:json.decoder"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"id": "metagpt/utils/custom_decoder.py:names:['_decode_uXXXX']"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"NUMBER_RE\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":69,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_make_scanner\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"FLAGS\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_SINGLEQUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_DOUBLE_QUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_SINGLEQUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"BACKSLASH\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE_STR\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":192,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"JSONObject\"],\"properties\":{}}"}, {"id": "{\"lineno\":195,\"end_lineno\":267,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_scanstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":270,\"end_lineno\":270,\"type_name\":\"ast.Assign\",\"tokens\":[\"scanstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":273,\"end_lineno\":297,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomDecoder\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:__init__"}, {"id": "metagpt/utils/git_repository.py:GitRepository:_init"}, {"id": "metagpt/utils/git_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: Git repository management. RFC 135 2.2.3.3.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: Git repository management. RFC 135 2.2.3.3.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:module:__future__"}, {"id": "metagpt/utils/git_repository.py:names:['annotations']"}, {"id": "metagpt/utils/git_repository.py:shutil"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:module:enum"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Enum']"}, {"id": "metagpt/utils/git_repository.py:module:pathlib"}, {"id": "metagpt/utils/git_repository.py:names:['Path']"}, {"id": "metagpt/utils/git_repository.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Dict', 'List']"}, {"id": "metagpt/utils/git_repository.py:module:git.repo"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Repo']"}, {"id": "metagpt/utils/git_repository.py:module:git.repo.fun"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['is_git_dir']"}, {"id": "metagpt/utils/git_repository.py:module:gitignore_parser"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['parse_gitignore']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/git_repository.py:names:['logger']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.utils.dependency_file"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['DependencyFile']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['FileRepository']"}, {"id": "{\"lineno\":25,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChangeType\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":285,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GitRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/read_document.py"}, {"id": "metagpt/utils/read_document.py:read_docx"}, {"id": "metagpt/utils/read_document.py:ast.Constant:\n@Time : 2023/4/29 15:45\n@Author : alexanderwu\n@File : read_document.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:45\\n@Author : alexanderwu\\n@File : read_document.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/read_document.py:docx"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"docx\"],\"properties\":{}}"}, {"id": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_docx\"],\"properties\":{}}"}, {"id": "metagpt/utils/parse_docstring.py:remove_spaces"}, {"id": "metagpt/utils/parse_docstring.py:re"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/parse_docstring.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"id": "metagpt/utils/parse_docstring.py:names:['Tuple']"}, {"id": "metagpt/utils/parse_docstring.py:module:pydantic"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/utils/parse_docstring.py:names:['BaseModel']"}, {"id": "{\"lineno\":7,\"end_lineno\":8,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_spaces\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"reSTDocstringParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleDocstringParser\"],\"properties\":{}}"}, {"id": "metagpt/configs/s3_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : s3_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : s3_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/s3_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"id": "metagpt/configs/s3_config.py:names:['YamlModelWithoutDefault']"}, {"id": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3Config\"],\"properties\":{}}"}, {"id": "metagpt/configs/browser_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : browser_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : browser_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/browser_config.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['Literal']"}, {"id": "metagpt/configs/browser_config.py:module:metagpt.tools"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['WebBrowserEngineType']"}, {"id": "metagpt/configs/browser_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrowserConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/workspace_config.py:ast.Constant:\n@Time : 2024/1/4 19:09\n@Author : alexanderwu\n@File : workspace_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:09\\n@Author : alexanderwu\\n@File : workspace_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/workspace_config.py:module:datetime"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['datetime']"}, {"id": "metagpt/configs/workspace_config.py:module:pathlib"}, {"id": "metagpt/configs/workspace_config.py:names:['Path']"}, {"id": "metagpt/configs/workspace_config.py:module:uuid"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['uuid4']"}, {"id": "metagpt/configs/workspace_config.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['field_validator', 'model_validator']"}, {"id": "metagpt/configs/workspace_config.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['DEFAULT_WORKSPACE_ROOT']"}, {"id": "metagpt/configs/workspace_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":18,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WorkspaceConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/mermaid_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : mermaid_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : mermaid_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/mermaid_config.py:module:typing"}, {"id": "metagpt/configs/mermaid_config.py:names:['Literal']"}, {"id": "metagpt/configs/mermaid_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/mermaid_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":13,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MermaidConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/__init__.py"}, {"id": "metagpt/configs/__init__.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/llm_config.py:LLMType:__missing__"}, {"id": "metagpt/configs/llm_config.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : llm_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : llm_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/llm_config.py:module:enum"}, {"id": "metagpt/configs/llm_config.py:names:['Enum']"}, {"id": "metagpt/configs/llm_config.py:module:typing"}, {"id": "metagpt/configs/llm_config.py:names:['Optional']"}, {"id": "metagpt/configs/llm_config.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"id": "metagpt/configs/llm_config.py:names:['field_validator']"}, {"id": "metagpt/configs/llm_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/llm_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":16,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMType\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/redis_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : redis_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : redis_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/redis_config.py:module:metagpt.utils.yaml_model"}, {"id": "metagpt/configs/redis_config.py:names:['YamlModelWithoutDefault']"}, {"id": "{\"lineno\":11,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RedisConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/search_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : search_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : search_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/search_config.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\"]}}"}, {"id": "metagpt/configs/search_config.py:names:['Callable', 'Optional']"}, {"id": "metagpt/configs/search_config.py:module:metagpt.tools"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/configs/search_config.py:names:['SearchEngineType']"}, {"id": "metagpt/configs/search_config.py:module:metagpt.utils.yaml_model"}, {"id": "metagpt/configs/search_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchConfig\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root"}, {"id": "metagpt/actions/rebuild_class_view.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : rebuild_class_view.py\n@Desc : Reconstructs class diagram from a source code project.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : rebuild_class_view.py\\n@Desc : Reconstructs class diagram from a source code project.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_class_view.py:module:pathlib"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Path']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Set\",\"Tuple\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Optional', 'Set', 'Tuple']"}, {"id": "metagpt/actions/rebuild_class_view.py:aiofiles"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.actions"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Action']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.config2"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['config']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.const"}, {"id": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['AGGREGATION', 'COMPOSITION', 'DATA_API_DESIGN_FILE_REPO', 'GENERALIZATION', 'GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.logs"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['logger']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['DotClassInfo', 'RepoParser']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.schema"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['UMLClassView']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['concat_namespace', 'split_namespace']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['DiGraphRepository']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":32,\"end_lineno\":209,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildClassView\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ast.Constant:\n@Time : 2024/1/4\n@Author : mashenquan\n@File : rebuild_sequence_view.py\n@Desc : Reconstruct sequence view information through reverse engineering.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4\\n@Author : mashenquan\\n@File : rebuild_sequence_view.py\\n@Desc : Reconstruct sequence view information through reverse engineering.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:__future__"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['annotations']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:re"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:datetime"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['datetime']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:pathlib"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['Path']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:typing"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['List', 'Optional']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:pydantic"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['BaseModel']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:tenacity"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.actions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['Action']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.config2"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['config']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.logs"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['logger']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['CodeBlockInfo', 'DotClassInfo']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.schema"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['UMLClassView']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":25,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"add_affix\",\"aread\",\"auto_namespace\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['add_affix', 'aread', 'auto_namespace', 'concat_namespace', 'general_after_log', 'list_files', 'parse_json_code_block', 'read_file_block', 'split_namespace']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['DiGraphRepository']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['SPO', 'GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":40,\"end_lineno\":58,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReverseUseCase\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":73,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReverseUseCaseDetails\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":571,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildSequenceView\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_code.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\n value of the `Message` object.\n@Modified By: mashenquan, 2023-11-27.\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\n code-block formatting to enhance the understanding for the LLM.\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\n than passing them in when calling the run function.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\\n value of the `Message` object.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\\n code-block formatting to enhance the understanding for the LLM.\\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\\n than passing them in when calling the run function.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:json"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:module:pydantic"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['Field']"}, {"id": "metagpt/actions/write_code.py:module:tenacity"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['Action']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['REFINED_TASK_LIST', 'TASK_LIST']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.write_code_plan_and_change_an"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['REFINED_TEMPLATE']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.const"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['BUGFIX_FILENAME', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.logs"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['logger']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CodingContext', 'Document', 'RunCodeResult']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CodeParser']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":32,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":213,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py"}, {"id": "metagpt/actions/write_prd_an.py:LANGUAGE"}, {"id": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE"}, {"id": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS"}, {"id": "metagpt/actions/write_prd_an.py:PROJECT_NAME"}, {"id": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS"}, {"id": "metagpt/actions/write_prd_an.py:USER_STORIES"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES"}, {"id": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART"}, {"id": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL"}, {"id": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT"}, {"id": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR"}, {"id": "metagpt/actions/write_prd_an.py:ISSUE_TYPE"}, {"id": "metagpt/actions/write_prd_an.py:IS_RELATIVE"}, {"id": "metagpt/actions/write_prd_an.py:REASON"}, {"id": "metagpt/actions/write_prd_an.py:NODES"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_NODES"}, {"id": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE"}, {"id": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE"}, {"id": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE"}, {"id": "metagpt/actions/write_prd_an.py:ast.Constant:\n@Time : 2023/12/14 11:40\n@Author : alexanderwu\n@File : write_prd_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 11:40\\n@Author : alexanderwu\\n@File : write_prd_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/actions/write_prd_an.py:names:['List']"}, {"id": "metagpt/actions/write_prd_an.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_prd_an.py:names:['ActionNode']"}, {"id": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":19,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAMMING_LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"ORIGINAL_REQUIREMENTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRODUCT_GOALS\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRODUCT_GOALS\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"USER_STORIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":80,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_USER_STORIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_QUADRANT_CHART\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":133,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":142,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_POOL\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":155,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_POOL\"],\"properties\":{}}"}, {"id": "{\"lineno\":157,\"end_lineno\":162,\"type_name\":\"ast.Assign\",\"tokens\":[\"UI_DESIGN_DRAFT\"],\"properties\":{}}"}, {"id": "{\"lineno\":164,\"end_lineno\":169,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"id": "{\"lineno\":171,\"end_lineno\":176,\"type_name\":\"ast.Assign\",\"tokens\":[\"ISSUE_TYPE\"],\"properties\":{}}"}, {"id": "{\"lineno\":178,\"end_lineno\":183,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_RELATIVE\"],\"properties\":{}}"}, {"id": "{\"lineno\":185,\"end_lineno\":187,\"type_name\":\"ast.Assign\",\"tokens\":[\"REASON\"],\"properties\":{}}"}, {"id": "{\"lineno\":190,\"end_lineno\":203,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":205,\"end_lineno\":218,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":220,\"end_lineno\":220,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_PRD_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":221,\"end_lineno\":221,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRD_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":222,\"end_lineno\":222,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_ISSUE_TYPE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":223,\"end_lineno\":223,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_IS_RELATIVE_NODE\"],\"properties\":{}}"}, {"id": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE"}, {"id": "metagpt/actions/summarize_code.py:ast.Constant:\n@Author : alexanderwu\n@File : summarize_code.py\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : summarize_code.py\\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/summarize_code.py:module:pathlib"}, {"id": "metagpt/actions/summarize_code.py:names:['Path']"}, {"id": "metagpt/actions/summarize_code.py:module:pydantic"}, {"id": "metagpt/actions/summarize_code.py:names:['Field']"}, {"id": "metagpt/actions/summarize_code.py:module:tenacity"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['Action']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.logs"}, {"id": "metagpt/actions/summarize_code.py:names:['logger']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['CodeSummarizeContext']"}, {"id": "{\"lineno\":17,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":46,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SummarizeCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls"}, {"id": "metagpt/actions/research.py:ConductResearch:__init__"}, {"id": "metagpt/actions/research.py:get_research_system_text"}, {"id": "metagpt/actions/research.py:LANG_PROMPT"}, {"id": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM"}, {"id": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM"}, {"id": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT"}, {"id": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT"}, {"id": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT"}, {"id": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT"}, {"id": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT"}, {"id": "metagpt/actions/research.py:module:__future__"}, {"id": "metagpt/actions/research.py:names:['annotations']"}, {"id": "metagpt/actions/research.py:asyncio"}, {"id": "metagpt/actions/research.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/actions/research.py:names:['Any', 'Callable', 'Optional', 'Union']"}, {"id": "metagpt/actions/research.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"TypeAdapter\",\"model_validator\"]}}"}, {"id": "metagpt/actions/research.py:names:['TypeAdapter', 'model_validator']"}, {"id": "metagpt/actions/research.py:module:metagpt.actions"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/research.py:names:['Action']"}, {"id": "metagpt/actions/research.py:module:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/actions/research.py:names:['config']"}, {"id": "metagpt/actions/research.py:module:metagpt.logs"}, {"id": "metagpt/actions/research.py:names:['logger']"}, {"id": "metagpt/actions/research.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/actions/research.py:names:['SearchEngine']"}, {"id": "metagpt/actions/research.py:module:metagpt.tools.web_browser_engine"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\"]}}"}, {"id": "metagpt/actions/research.py:names:['WebBrowserEngine']"}, {"id": "metagpt/actions/research.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/research.py:names:['OutputParser']"}, {"id": "metagpt/actions/research.py:module:metagpt.utils.text"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"id": "metagpt/actions/research.py:names:['generate_prompt_chunk', 'reduce_message_length']"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANG_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_BASE_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_TOPIC_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":25,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_TOPIC_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_SEARCH_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"COLLECT_AND_RANKURLS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"WEB_BROWSE_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONDUCT_RESEARCH_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CollectLinks\"],\"properties\":{}}"}, {"id": "{\"lineno\":180,\"end_lineno\":245,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowseAndSummarize\"],\"properties\":{}}"}, {"id": "{\"lineno\":248,\"end_lineno\":273,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ConductResearch\"],\"properties\":{}}"}, {"id": "{\"lineno\":276,\"end_lineno\":286,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_research_system_text\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : skill_action.py\n@Desc : Call learned skill\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : skill_action.py\\n@Desc : Call learned skill\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:module:__future__"}, {"id": "metagpt/actions/skill_action.py:names:['annotations']"}, {"id": "metagpt/actions/skill_action.py:ast"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:importlib"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:traceback"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:module:copy"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['deepcopy']"}, {"id": "metagpt/actions/skill_action.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Dict', 'Optional']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.actions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Action']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.learn.skill_loader"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Skill']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.logs"}, {"id": "metagpt/actions/skill_action.py:names:['logger']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.schema"}, {"id": "metagpt/actions/skill_action.py:names:['Message']"}, {"id": "{\"lineno\":24,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ArgumentsParingAction\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillAction\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_test.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_test.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : write_test.py\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\n WriteTest object, rather than passing them in when calling the run function.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : write_test.py\\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_test.py:module:typing"}, {"id": "metagpt/actions/write_test.py:names:['Optional']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/write_test.py:names:['Action']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['TEST_CODES_FILE_REPO']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_test.py:names:['logger']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['Document', 'TestingContext']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['CodeParser']"}, {"id": "{\"lineno\":19,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTest\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_graph.py:ActionGraph:__init__"}, {"id": "metagpt/actions/action_graph.py:ast.Constant:\n@Time : 2024/1/30 13:52\n@Author : alexanderwu\n@File : action_graph.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/30 13:52\\n@Author : alexanderwu\\n@File : action_graph.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_graph.py:module:__future__"}, {"id": "metagpt/actions/action_graph.py:names:['annotations']"}, {"id": "{\"lineno\":13,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionGraph\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/debug_error.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : debug_error.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : debug_error.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:re"}, {"id": "metagpt/actions/debug_error.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['Field']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['Action']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.logs"}, {"id": "metagpt/actions/debug_error.py:names:['logger']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['RunCodeContext', 'RunCodeResult']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['CodeParser']"}, {"id": "{\"lineno\":20,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugError\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_new_system_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_merge"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_update_system_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file"}, {"id": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/design_api.py:ast.Constant:\n@Time : 2023/5/11 19:26\n@Author : alexanderwu\n@File : design_api.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:26\\n@Author : alexanderwu\\n@File : design_api.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api.py:json"}, {"id": "metagpt/actions/design_api.py:module:pathlib"}, {"id": "metagpt/actions/design_api.py:names:['Path']"}, {"id": "metagpt/actions/design_api.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Optional']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.actions"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.actions.design_api_an"}, {"id": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['DATA_STRUCTURES_AND_INTERFACES', 'DESIGN_API_NODE', 'PROGRAM_CALL_FLOW', 'REFINED_DATA_STRUCTURES_AND_INTERFACES', 'REFINED_DESIGN_NODE', 'REFINED_PROGRAM_CALL_FLOW']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.const"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['DATA_API_DESIGN_FILE_REPO', 'SEQ_FLOW_FILE_REPO']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.logs"}, {"id": "metagpt/actions/design_api.py:names:['logger']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.schema"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Document', 'Documents', 'Message']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['mermaid_to_file']"}, {"id": "{\"lineno\":30,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":120,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDesign\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py"}, {"id": "metagpt/actions/design_api_an.py:main"}, {"id": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH"}, {"id": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH"}, {"id": "metagpt/actions/design_api_an.py:PROJECT_NAME"}, {"id": "metagpt/actions/design_api_an.py:FILE_LIST"}, {"id": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST"}, {"id": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES"}, {"id": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES"}, {"id": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW"}, {"id": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW"}, {"id": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR"}, {"id": "metagpt/actions/design_api_an.py:NODES"}, {"id": "metagpt/actions/design_api_an.py:REFINED_NODES"}, {"id": "metagpt/actions/design_api_an.py:DESIGN_API_NODE"}, {"id": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE"}, {"id": "metagpt/actions/design_api_an.py:ast.Constant:\n@Time : 2023/12/12 22:24\n@Author : alexanderwu\n@File : design_api_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/12 22:24\\n@Author : alexanderwu\\n@File : design_api_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py:module:typing"}, {"id": "metagpt/actions/design_api_an.py:names:['List']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/design_api_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.logs"}, {"id": "metagpt/actions/design_api_an.py:names:['logger']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"id": "metagpt/actions/design_api_an.py:names:['MMC1', 'MMC2']"}, {"id": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILE_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_FILE_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESIGN_API_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DESIGN_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py:__name__:__main__"}, {"id": "{\"lineno\":121,\"end_lineno\":122,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_output.py:ActionOutput:__init__"}, {"id": "metagpt/actions/action_output.py:ast.Constant:\n@Time : 2023/7/11 10:03\n@Author : chengmaoyu\n@File : action_output\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/11 10:03\\n@Author : chengmaoyu\\n@File : action_output\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_output.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/actions/action_output.py:names:['BaseModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionOutput\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_outcls_registry.py"}, {"id": "metagpt/actions/action_outcls_registry.py:register_action_outcls"}, {"id": "metagpt/actions/action_outcls_registry.py:action_outcls_registry"}, {"id": "metagpt/actions/action_outcls_registry.py:module:functools"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"id": "metagpt/actions/action_outcls_registry.py:names:['wraps']"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"action_outcls_registry\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_action_outcls\"],\"properties\":{}}"}, {"id": "metagpt/actions/add_requirement.py:ast.Constant:\n@Time : 2023/5/20 17:46\n@Author : alexanderwu\n@File : add_requirement.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 17:46\\n@Author : alexanderwu\\n@File : add_requirement.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/add_requirement.py:module:metagpt.actions"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/add_requirement.py:names:['Action']"}, {"id": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserRequirement\"],\"properties\":{}}"}, {"id": "metagpt/actions/__init__.py"}, {"id": "metagpt/actions/__init__.py:ActionType"}, {"id": "metagpt/actions/__init__.py:__all__"}, {"id": "metagpt/actions/__init__.py:ast.Constant:\n@Time : 2023/5/11 17:44\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:44\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/__init__.py:module:enum"}, {"id": "metagpt/actions/__init__.py:names:['Enum']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['Action']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['ActionOutput']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.add_requirement"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['UserRequirement']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.debug_error"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['DebugError']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.design_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteDesign']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.design_api_review"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['DesignReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.project_management"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteTasks']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.research"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['CollectLinks', 'WebBrowseAndSummarize', 'ConductResearch']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.run_code"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['RunCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.search_and_summarize"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['SearchAndSummarize']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_code"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_code_review"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCodeReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePRD']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd_review"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePRDReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_test"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteTest']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.ci.execute_nb_code"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['ExecuteNbCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.ci.write_analysis_code"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithoutTools\",\"WriteCodeWithTools\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCodeWithoutTools', 'WriteCodeWithTools']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.ci.write_plan"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_plan\",\"names\":[\"WritePlan\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePlan']"}, {"id": "{\"lineno\":30,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionType\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_review.py:REVIEW"}, {"id": "metagpt/actions/write_review.py:LGTM"}, {"id": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE"}, {"id": "metagpt/actions/write_review.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_review.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/actions/write_review.py:names:['List']"}, {"id": "metagpt/actions/write_review.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_review.py:names:['Action']"}, {"id": "metagpt/actions/write_review.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/write_review.py:names:['ActionNode']"}, {"id": "{\"lineno\":12,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"id": "{\"lineno\":22,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_REVIEW_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/action.py:Action:_init_with_instruction"}, {"id": "metagpt/actions/action.py:Action:__str__"}, {"id": "metagpt/actions/action.py:Action:__repr__"}, {"id": "metagpt/actions/action.py:Action:_aask"}, {"id": "metagpt/actions/action.py:Action:_run_action_node"}, {"id": "metagpt/actions/action.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : action.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : action.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action.py:module:__future__"}, {"id": "metagpt/actions/action.py:names:['annotations']"}, {"id": "metagpt/actions/action.py:module:typing"}, {"id": "metagpt/actions/action.py:names:['Optional', 'Union']"}, {"id": "metagpt/actions/action.py:module:pydantic"}, {"id": "metagpt/actions/action.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']"}, {"id": "metagpt/actions/action.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/action.py:names:['ActionNode']"}, {"id": "metagpt/actions/action.py:module:metagpt.context_mixin"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"id": "metagpt/actions/action.py:names:['ContextMixin']"}, {"id": "metagpt/actions/action.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"id": "metagpt/actions/action.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'RunCodeContext', 'SerializationMixin', 'TestingContext']"}, {"id": "metagpt/actions/action.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/action.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":28,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Action\"],\"properties\":{}}"}, {"id": "metagpt/actions/execute_task.py:ast.Constant:\n@Time : 2023/9/13 12:26\n@Author : femto Zheng\n@File : execute_task.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:26\\n@Author : femto Zheng\\n@File : execute_task.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/execute_task.py:module:metagpt.actions"}, {"id": "metagpt/actions/execute_task.py:names:['Action']"}, {"id": "metagpt/actions/execute_task.py:module:metagpt.schema"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/execute_task.py:names:['Message']"}, {"id": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteTask\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_is_related"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_merge"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_update_prd"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace"}, {"id": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE"}, {"id": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/write_prd.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:module:__future__"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['annotations']"}, {"id": "metagpt/actions/write_prd.py:json"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:module:pathlib"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['Path']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['ActionNode']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.fix_bug"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['FixBug']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.write_prd_an"}, {"id": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['COMPETITIVE_QUADRANT_CHART', 'PROJECT_NAME', 'REFINED_PRD_NODE', 'WP_IS_RELATIVE_NODE', 'WP_ISSUE_TYPE_NODE', 'WRITE_PRD_NODE']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.const"}, {"id": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['BUGFIX_FILENAME', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.logs"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['logger']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.schema"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['BugFixContext', 'Document', 'Documents', 'Message']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['CodeParser']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.file_repository"}, {"id": "metagpt/actions/write_prd.py:names:['FileRepository']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['mermaid_to_file']"}, {"id": "{\"lineno\":41,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRD\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:_simplify_python_code"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX"}, {"id": "metagpt/actions/write_docstring.py:_python_docstring_style"}, {"id": "metagpt/actions/write_docstring.py:ast.Constant:Code Docstring Generator.\n\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\ndocstrings for the given code and system text.\n\nUsage:\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\n\nArguments:\n filename The path to the Python file for which you want to generate docstrings.\n\nOptions:\n --overwrite If specified, overwrite the original file with the code containing docstrings.\n --style= Specify the style of the generated docstrings.\n Valid values: 'google', 'numpy', or 'sphinx'.\n Default: 'google'\n\nExample:\n python3 -m metagpt.actions.write_docstring ./metagpt/software_company.py --overwrite False --style=numpy\n\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\nthe specified docstring style and adds them to the code.\n"}, {"id": "{\"lineno\":1,\"end_lineno\":23,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"Code Docstring Generator.\\n\\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\\ndocstrings for the given code and system text.\\n\\nUsage:\\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\\n\\nArguments:\\n filename The path to the Python file for which you want to generate docstrings.\\n\\nOptions:\\n --overwrite If specified, overwrite the original file with the code containing docstrings.\\n --style= Specify the style of the generated docstrings.\\n Valid values: 'google', 'numpy', or 'sphinx'.\\n Default: 'google'\\n\\nExample:\\n python3 -m metagpt.actions.write_docstring ./metagpt/software_company.py --overwrite False --style=numpy\\n\\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\\nthe specified docstring style and adds them to the code.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:module:__future__"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['annotations']"}, {"id": "metagpt/actions/write_docstring.py:ast"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:module:pathlib"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Path']"}, {"id": "metagpt/actions/write_docstring.py:module:typing"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Literal', 'Optional']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Action']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['OutputParser', 'aread', 'awrite']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.utils.pycst"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['merge_docstring']"}, {"id": "{\"lineno\":34,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_GOOGLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":122,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_NUMPY\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_SPHINX\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"_python_docstring_style\"],\"properties\":{}}"}, {"id": "{\"lineno\":156,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDocstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":212,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_simplify_python_code\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:__name__:__main__"}, {"id": "{\"lineno\":215,\"end_lineno\":218,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/fix_bug.py:ast.Constant:\n@Time : 2023-12-12\n@Author : mashenquan\n@File : fix_bug.py\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023-12-12\\n@Author : mashenquan\\n@File : fix_bug.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/fix_bug.py:module:metagpt.actions"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/fix_bug.py:names:['Action']"}, {"id": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FixBug\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_interview.py:QUESTIONS"}, {"id": "metagpt/actions/prepare_interview.py:ast.Constant:\n@Time : 2023/9/19 15:02\n@Author : DevXiaolan\n@File : prepare_interview.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/19 15:02\\n@Author : DevXiaolan\\n@File : prepare_interview.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_interview.py:module:metagpt.actions"}, {"id": "metagpt/actions/prepare_interview.py:names:['Action']"}, {"id": "metagpt/actions/prepare_interview.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/prepare_interview.py:names:['ActionNode']"}, {"id": "{\"lineno\":11,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareInterview\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_requirements"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_pytest"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_dependencies"}, {"id": "metagpt/actions/run_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT"}, {"id": "metagpt/actions/run_code.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : run_code.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\n the understanding for the LLM.\n 2. Fix bug: Add the \"install dependency\" operation.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\n (code files, unit test files, log files) from using the message to using the file name.\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\n class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":17,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : run_code.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\\n the understanding for the LLM.\\n 2. Fix bug: Add the \\\"install dependency\\\" operation.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\\n (code files, unit test files, log files) from using the message to using the file name.\\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\\n class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:subprocess"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:module:pathlib"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Path']"}, {"id": "metagpt/actions/run_code.py:module:typing"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Tuple']"}, {"id": "metagpt/actions/run_code.py:module:pydantic"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Field']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Action']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.logs"}, {"id": "metagpt/actions/run_code.py:names:['logger']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['RunCodeContext', 'RunCodeResult']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.utils.exceptions"}, {"id": "metagpt/actions/run_code.py:names:['handle_exception']"}, {"id": "{\"lineno\":29,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEMPLATE_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":173,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:main"}, {"id": "metagpt/actions/write_code_an_draft.py:REVIEW"}, {"id": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT"}, {"id": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION"}, {"id": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE"}, {"id": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3"}, {"id": "metagpt/actions/write_code_an_draft.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n"}, {"id": "metagpt/actions/write_code_an_draft.py:asyncio"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['List', 'Literal']"}, {"id": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['Action']"}, {"id": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['ActionNode']"}, {"id": "{\"lineno\":13,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_RESULT\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEXT_STEPS\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_DRAFT\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_FUNCTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":97,\"end_lineno\":416,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":419,\"end_lineno\":489,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SMALLEST_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":492,\"end_lineno\":554,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":557,\"end_lineno\":557,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":558,\"end_lineno\":558,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":561,\"end_lineno\":573,\"type_name\":\"ast.Assign\",\"tokens\":[\"CR_FOR_MOVE_FUNCTION_BY_3\"],\"properties\":{}}"}, {"id": "{\"lineno\":576,\"end_lineno\":581,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeAN\"],\"properties\":{}}"}, {"id": "{\"lineno\":584,\"end_lineno\":585,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:__name__:__main__"}, {"id": "{\"lineno\":588,\"end_lineno\":589,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/talk_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : talk_action.py\n@Desc : Act as it\u2019s a talk\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : talk_action.py\\n@Desc : Act as it\u2019s a talk\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/talk_action.py:module:typing"}, {"id": "metagpt/actions/talk_action.py:names:['Optional']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.actions"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/talk_action.py:names:['Action']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.config2"}, {"id": "metagpt/actions/talk_action.py:names:['config']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.logs"}, {"id": "metagpt/actions/talk_action.py:names:['logger']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.schema"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/talk_action.py:names:['Message']"}, {"id": "{\"lineno\":17,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkAction\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":169,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkActionPrompt\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_tutorial.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_tutorial.py:module:typing"}, {"id": "metagpt/actions/write_tutorial.py:names:['Dict']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.actions"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['Action']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.prompts.tutorial_assistant"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['CONTENT_PROMPT', 'DIRECTORY_PROMPT']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['OutputParser']"}, {"id": "{\"lineno\":17,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDirectory\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteContent\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_review.py:module:typing"}, {"id": "metagpt/actions/write_prd_review.py:names:['Optional']"}, {"id": "metagpt/actions/write_prd_review.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_prd_review.py:names:['Action']"}, {"id": "{\"lineno\":14,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRDReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/generate_questions.py:QUESTIONS"}, {"id": "metagpt/actions/generate_questions.py:ast.Constant:\n@File : generate_questions.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : generate_questions.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/generate_questions.py:module:metagpt.actions"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/generate_questions.py:names:['Action']"}, {"id": "metagpt/actions/generate_questions.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/generate_questions.py:names:['ActionNode']"}, {"id": "{\"lineno\":9,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":18,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateQuestions\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo"}, {"id": "metagpt/actions/prepare_documents.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : prepare_documents.py\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\n RFC 135 2.2.3.5.1.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : prepare_documents.py\\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\\n RFC 135 2.2.3.5.1.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:shutil"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:module:pathlib"}, {"id": "metagpt/actions/prepare_documents.py:names:['Path']"}, {"id": "metagpt/actions/prepare_documents.py:module:typing"}, {"id": "metagpt/actions/prepare_documents.py:names:['Optional']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['FileRepository']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['GitRepository']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":21,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareDocuments\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD"}, {"id": "metagpt/actions/search_and_summarize.py:ast.Constant:\n@Time : 2023/5/23 17:26\n@Author : alexanderwu\n@File : search_google.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:26\\n@Author : alexanderwu\\n@File : search_google.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:module:typing"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Optional']"}, {"id": "metagpt/actions/search_and_summarize.py:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"pydantic\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['model_validator']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Action']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.logs"}, {"id": "metagpt/actions/search_and_summarize.py:names:['logger']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.schema"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Message']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.tools.search_engine"}, {"id": "metagpt/actions/search_and_summarize.py:names:['SearchEngine']"}, {"id": "{\"lineno\":18,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM_EN_US\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":79,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":81,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_FOOD\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":147,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchAndSummarize\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION"}, {"id": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE"}, {"id": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE"}, {"id": "metagpt/actions/write_code_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code_review.py\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\n WriteCode object, rather than passing them in when calling the run function.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code_review.py\\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\\n WriteCode object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_review.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['Field']"}, {"id": "metagpt/actions/write_code_review.py:module:tenacity"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['WriteCode']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/write_code_review.py:names:['Action']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.const"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_code_review.py:names:['logger']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CodingContext']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CodeParser']"}, {"id": "{\"lineno\":21,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_AND_INSTRUCTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":191,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__"}, {"id": "metagpt/actions/write_teaching_plan.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : write_teaching_plan.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : write_teaching_plan.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_teaching_plan.py:module:typing"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Optional']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Action']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.context"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Context']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['logger']"}, {"id": "{\"lineno\":15,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTeachingPlanPart\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":191,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TeachingPlanBlock\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py"}, {"id": "metagpt/actions/project_management_an.py:main"}, {"id": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES"}, {"id": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES"}, {"id": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS"}, {"id": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS"}, {"id": "metagpt/actions/project_management_an.py:TASK_LIST"}, {"id": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST"}, {"id": "metagpt/actions/project_management_an.py:FULL_API_SPEC"}, {"id": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE"}, {"id": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE"}, {"id": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM"}, {"id": "metagpt/actions/project_management_an.py:NODES"}, {"id": "metagpt/actions/project_management_an.py:REFINED_NODES"}, {"id": "metagpt/actions/project_management_an.py:PM_NODE"}, {"id": "metagpt/actions/project_management_an.py:REFINED_PM_NODE"}, {"id": "metagpt/actions/project_management_an.py:ast.Constant:\n@Time : 2023/12/14 15:28\n@Author : alexanderwu\n@File : project_management_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 15:28\\n@Author : alexanderwu\\n@File : project_management_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py:module:typing"}, {"id": "metagpt/actions/project_management_an.py:names:['List']"}, {"id": "metagpt/actions/project_management_an.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/project_management_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/project_management_an.py:module:metagpt.logs"}, {"id": "metagpt/actions/project_management_an.py:names:['logger']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_PYTHON_PACKAGES\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_OTHER_LANGUAGE_PACKAGES\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TASK_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"FULL_API_SPEC\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR_PM\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"PM_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PM_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":128,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py:__name__:__main__"}, {"id": "{\"lineno\":131,\"end_lineno\":132,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_update_tasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_merge"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_update_requirements"}, {"id": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/project_management.py:ast.Constant:\n@Time : 2023/5/11 19:12\n@Author : alexanderwu\n@File : project_management.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:12\\n@Author : alexanderwu\\n@File : project_management.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:json"}, {"id": "metagpt/actions/project_management.py:module:typing"}, {"id": "metagpt/actions/project_management.py:names:['Optional']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['Action']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.action_output"}, {"id": "metagpt/actions/project_management.py:names:['ActionOutput']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['PM_NODE', 'REFINED_PM_NODE']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.const"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['PACKAGE_REQUIREMENTS_FILENAME']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.logs"}, {"id": "metagpt/actions/project_management.py:names:['logger']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.schema"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['Document', 'Documents']"}, {"id": "{\"lineno\":23,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTasks\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:ActionNode:__init__"}, {"id": "metagpt/actions/action_node.py:ActionNode:__str__"}, {"id": "metagpt/actions/action_node.py:ActionNode:__repr__"}, {"id": "metagpt/actions/action_node.py:ActionNode:_get_children_mapping"}, {"id": "metagpt/actions/action_node.py:ActionNode:_get_self_mapping"}, {"id": "metagpt/actions/action_node.py:ActionNode:_create_children_class"}, {"id": "metagpt/actions/action_node.py:ActionNode:_to_dict"}, {"id": "metagpt/actions/action_node.py:ActionNode:_compile_f"}, {"id": "metagpt/actions/action_node.py:ActionNode:_aask_v1"}, {"id": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req"}, {"id": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment"}, {"id": "metagpt/actions/action_node.py:dict_to_markdown"}, {"id": "metagpt/actions/action_node.py:TAG"}, {"id": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT"}, {"id": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT"}, {"id": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:REVIEW_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:REVISE_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:ast.Constant:\n@Time : 2023/12/11 18:45\n@Author : alexanderwu\n@File : action_node.py\n\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/11 18:45\\n@Author : alexanderwu\\n@File : action_node.py\\n\\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:json"}, {"id": "metagpt/actions/action_node.py:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:module:enum"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['Enum']"}, {"id": "metagpt/actions/action_node.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['Any', 'Dict', 'List', 'Optional', 'Tuple', 'Type', 'Union']"}, {"id": "metagpt/actions/action_node.py:module:pydantic"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['BaseModel', 'Field', 'create_model', 'model_validator']"}, {"id": "metagpt/actions/action_node.py:module:tenacity"}, {"id": "metagpt/actions/action_node.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.actions.action_outcls_registry"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['register_action_outcls']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.llm"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['BaseLLM']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.logs"}, {"id": "metagpt/actions/action_node.py:names:['logger']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.provider.postprocess.llm_output_postprocess"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['llm_output_postprocess']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['OutputParser', 'general_after_log']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.utils.human_interaction"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['HumanInteraction']"}, {"id": "{\"lineno\":27,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviewMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":35,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviseMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"TAG\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE_CONSTRAINT\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_CONSTRAINT\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"SIMPLE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVISE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":115,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"dict_to_markdown\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":720,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionNode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:ast.Constant:\n@Time : 2023/12/26\n@Author : mannaandpoem\n@File : write_code_plan_and_change_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/26\\n@Author : mannaandpoem\\n@File : write_code_plan_and_change_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:os"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:pydantic"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['Field']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['Action']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.schema"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['CodePlanAndChangeContext']"}, {"id": "{\"lineno\":16,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":126,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":128,\"end_lineno\":180,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":182,\"end_lineno\":182,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_PLAN_AND_CHANGE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":185,\"end_lineno\":210,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodePlanAndChange\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_review.py:ast.Constant:\n@Time : 2023/5/11 19:31\n@Author : alexanderwu\n@File : design_api_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:31\\n@Author : alexanderwu\\n@File : design_api_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_review.py:module:typing"}, {"id": "metagpt/actions/design_api_review.py:names:['Optional']"}, {"id": "metagpt/actions/design_api_review.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/design_api_review.py:names:['Action']"}, {"id": "{\"lineno\":14,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DesignReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr"}, {"id": "metagpt/actions/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 18:10:20\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Actions of the invoice ocr assistant.\n"}, {"id": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 18:10:20\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Actions of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:os"}, {"id": "metagpt/actions/invoice_ocr.py:zipfile"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"zipfile\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:module:datetime"}, {"id": "metagpt/actions/invoice_ocr.py:names:['datetime']"}, {"id": "metagpt/actions/invoice_ocr.py:module:pathlib"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Path']"}, {"id": "metagpt/actions/invoice_ocr.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Optional']"}, {"id": "metagpt/actions/invoice_ocr.py:pandas as pd"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:module:paddleocr"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['PaddleOCR']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.actions"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Action']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['INVOICE_OCR_TABLE_PATH']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.logs"}, {"id": "metagpt/actions/invoice_ocr.py:names:['logger']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.prompts.invoice_ocr"}, {"id": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['EXTRACT_OCR_MAIN_INFO_PROMPT', 'REPLY_OCR_QUESTION_PROMPT']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['OutputParser']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.file"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['File']"}, {"id": "{\"lineno\":31,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCR\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":163,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateTable\"],\"properties\":{}}"}, {"id": "{\"lineno\":166,\"end_lineno\":189,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyQuestion\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/write_analysis_code.py"}, {"id": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode"}, {"id": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode:insert_system_message"}, {"id": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode:run"}, {"id": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithoutTools"}, {"id": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithoutTools:run"}, {"id": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools"}, {"id": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_get_tools_by_type"}, {"id": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_recommend_tool"}, {"id": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_prepare_tools"}, {"id": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:run"}, {"id": "metagpt/actions/ci/write_analysis_code.py:ast.Constant:\n@Date : 2023/11/20 13:19:39\n@Author : orange-crow\n@File : write_analysis_code.py\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Date : 2023/11/20 13:19:39\\n@Author : orange-crow\\n@File : write_analysis_code.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:__future__"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['annotations']"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['Tuple']"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.actions"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['Action']"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.logs"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['logger']"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.prompts.ci.write_analysis_code"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"CODE_GENERATOR_WITH_TOOLS\",\"SELECT_FUNCTION_TOOLS\",\"TOOL_RECOMMENDATION_PROMPT\",\"TOOL_USAGE_PROMPT\"]}}"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['CODE_GENERATOR_WITH_TOOLS', 'SELECT_FUNCTION_TOOLS', 'TOOL_RECOMMENDATION_PROMPT', 'TOOL_USAGE_PROMPT']"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"SystemMessage\"]}}"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['Message', 'Plan', 'SystemMessage']"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.tools"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"TOOL_REGISTRY\"]}}"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['TOOL_REGISTRY']"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.tools.tool_registry"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"validate_tool_names\"]}}"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['validate_tool_names']"}, {"id": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\"]}}"}, {"id": "metagpt/actions/ci/write_analysis_code.py:names:['create_func_call_config']"}, {"id": "{\"lineno\":25,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseWriteAnalysisCode\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeWithoutTools\"],\"properties\":{}}"}, {"id": "{\"lineno\":56,\"end_lineno\":155,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeWithTools\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/write_plan.py"}, {"id": "metagpt/actions/ci/write_plan.py:WritePlan"}, {"id": "metagpt/actions/ci/write_plan.py:WritePlan:assign_task_type"}, {"id": "metagpt/actions/ci/write_plan.py:WritePlan:run"}, {"id": "metagpt/actions/ci/write_plan.py:rsp_to_tasks"}, {"id": "metagpt/actions/ci/write_plan.py:update_plan_from_rsp"}, {"id": "metagpt/actions/ci/write_plan.py:precheck_update_plan_from_rsp"}, {"id": "metagpt/actions/ci/write_plan.py:ast.Constant:\n@Date : 2023/11/20 11:24:03\n@Author : orange-crow\n@File : plan.py\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Date : 2023/11/20 11:24:03\\n@Author : orange-crow\\n@File : plan.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/write_plan.py:module:__future__"}, {"id": "metagpt/actions/ci/write_plan.py:names:['annotations']"}, {"id": "metagpt/actions/ci/write_plan.py:json"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/write_plan.py:module:copy"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/actions/ci/write_plan.py:names:['deepcopy']"}, {"id": "metagpt/actions/ci/write_plan.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"id": "metagpt/actions/ci/write_plan.py:names:['Tuple']"}, {"id": "metagpt/actions/ci/write_plan.py:module:metagpt.actions"}, {"id": "metagpt/actions/ci/write_plan.py:names:['Action']"}, {"id": "metagpt/actions/ci/write_plan.py:module:metagpt.logs"}, {"id": "metagpt/actions/ci/write_plan.py:names:['logger']"}, {"id": "metagpt/actions/ci/write_plan.py:module:metagpt.prompts.ci.write_analysis_code"}, {"id": "{\"lineno\":15,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"ASSIGN_TASK_TYPE_CONFIG\",\"ASSIGN_TASK_TYPE_PROMPT\"]}}"}, {"id": "metagpt/actions/ci/write_plan.py:names:['ASSIGN_TASK_TYPE_CONFIG', 'ASSIGN_TASK_TYPE_PROMPT']"}, {"id": "metagpt/actions/ci/write_plan.py:module:metagpt.schema"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"Task\"]}}"}, {"id": "metagpt/actions/ci/write_plan.py:names:['Message', 'Plan', 'Task']"}, {"id": "metagpt/actions/ci/write_plan.py:module:metagpt.tools"}, {"id": "metagpt/actions/ci/write_plan.py:names:['TOOL_REGISTRY']"}, {"id": "metagpt/actions/ci/write_plan.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\",\"create_func_call_config\"]}}"}, {"id": "metagpt/actions/ci/write_plan.py:names:['CodeParser', 'create_func_call_config']"}, {"id": "{\"lineno\":24,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePlan\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":85,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"rsp_to_tasks\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":107,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"update_plan_from_rsp\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":116,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"precheck_update_plan_from_rsp\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/ask_review.py"}, {"id": "metagpt/actions/ci/ask_review.py:ReviewConst"}, {"id": "metagpt/actions/ci/ask_review.py:AskReview"}, {"id": "metagpt/actions/ci/ask_review.py:AskReview:run"}, {"id": "metagpt/actions/ci/ask_review.py:module:__future__"}, {"id": "metagpt/actions/ci/ask_review.py:names:['annotations']"}, {"id": "metagpt/actions/ci/ask_review.py:module:typing"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"id": "metagpt/actions/ci/ask_review.py:names:['Tuple']"}, {"id": "metagpt/actions/ci/ask_review.py:module:metagpt.actions"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/ci/ask_review.py:names:['Action']"}, {"id": "metagpt/actions/ci/ask_review.py:module:metagpt.logs"}, {"id": "metagpt/actions/ci/ask_review.py:names:['logger']"}, {"id": "metagpt/actions/ci/ask_review.py:module:metagpt.schema"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\"]}}"}, {"id": "metagpt/actions/ci/ask_review.py:names:['Message', 'Plan']"}, {"id": "{\"lineno\":10,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviewConst\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":62,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AskReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:__init__"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:build"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:terminate"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:reset"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_code_cell"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_markdown_cell"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:_display"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_output_to_cell"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:parse_outputs"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:show_bytes_figure"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:is_ipython"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:run_cell"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:run"}, {"id": "metagpt/actions/ci/execute_nb_code.py:truncate"}, {"id": "metagpt/actions/ci/execute_nb_code.py:remove_escape_and_color_codes"}, {"id": "metagpt/actions/ci/execute_nb_code.py:display_markdown"}, {"id": "metagpt/actions/ci/execute_nb_code.py:ast.Constant:\n@Date : 2023/11/17 14:22:15\n@Author : orange-crow\n@File : execute_nb_code.py\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Date : 2023/11/17 14:22:15\\n@Author : orange-crow\\n@File : execute_nb_code.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:__future__"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['annotations']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:asyncio"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:base64"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:re"}, {"id": "metagpt/actions/ci/execute_nb_code.py:traceback"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Tuple\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['Literal', 'Tuple']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:nbformat"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"nbformat\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:nbclient"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbclient\",\"names\":[\"NotebookClient\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['NotebookClient']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:nbclient.exceptions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbclient.exceptions\",\"names\":[\"CellTimeoutError\",\"DeadKernelError\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['CellTimeoutError', 'DeadKernelError']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:nbformat"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbformat\",\"names\":[\"NotebookNode\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['NotebookNode']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:nbformat.v4"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbformat.v4\",\"names\":[\"new_code_cell\",\"new_markdown_cell\",\"new_output\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['new_code_cell', 'new_markdown_cell', 'new_output']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:rich.box"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.box\",\"names\":[\"MINIMAL\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['MINIMAL']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:rich.console"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.console\",\"names\":[\"Console\",\"Group\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['Console', 'Group']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:rich.live"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.live\",\"names\":[\"Live\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['Live']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:rich.markdown"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.markdown\",\"names\":[\"Markdown\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['Markdown']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:rich.panel"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.panel\",\"names\":[\"Panel\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['Panel']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:rich.syntax"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.syntax\",\"names\":[\"Syntax\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['Syntax']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:metagpt.actions"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['Action']"}, {"id": "metagpt/actions/ci/execute_nb_code.py:module:metagpt.logs"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/ci/execute_nb_code.py:names:['logger']"}, {"id": "{\"lineno\":31,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteNbCode\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":214,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"truncate\"],\"properties\":{}}"}, {"id": "{\"lineno\":217,\"end_lineno\":221,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_escape_and_color_codes\"],\"properties\":{}}"}, {"id": "{\"lineno\":224,\"end_lineno\":249,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"display_markdown\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/ml_action.py"}, {"id": "metagpt/actions/ci/ml_action.py:WriteCodeWithToolsML"}, {"id": "metagpt/actions/ci/ml_action.py:WriteCodeWithToolsML:run"}, {"id": "metagpt/actions/ci/ml_action.py:UpdateDataColumns"}, {"id": "metagpt/actions/ci/ml_action.py:UpdateDataColumns:run"}, {"id": "metagpt/actions/ci/ml_action.py:module:__future__"}, {"id": "metagpt/actions/ci/ml_action.py:names:['annotations']"}, {"id": "metagpt/actions/ci/ml_action.py:module:typing"}, {"id": "metagpt/actions/ci/ml_action.py:names:['Tuple']"}, {"id": "metagpt/actions/ci/ml_action.py:module:metagpt.actions"}, {"id": "metagpt/actions/ci/ml_action.py:names:['Action']"}, {"id": "metagpt/actions/ci/ml_action.py:module:metagpt.actions.ci.write_analysis_code"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithTools\"]}}"}, {"id": "metagpt/actions/ci/ml_action.py:names:['WriteCodeWithTools']"}, {"id": "metagpt/actions/ci/ml_action.py:module:metagpt.prompts.ci.ml_action"}, {"id": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.ml_action\",\"names\":[\"ML_GENERATE_CODE_PROMPT\",\"ML_TOOL_USAGE_PROMPT\",\"PRINT_DATA_COLUMNS\",\"UPDATE_DATA_COLUMNS\"]}}"}, {"id": "metagpt/actions/ci/ml_action.py:names:['ML_GENERATE_CODE_PROMPT', 'ML_TOOL_USAGE_PROMPT', 'PRINT_DATA_COLUMNS', 'UPDATE_DATA_COLUMNS']"}, {"id": "metagpt/actions/ci/ml_action.py:module:metagpt.prompts.ci.write_analysis_code"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"CODE_GENERATOR_WITH_TOOLS\"]}}"}, {"id": "metagpt/actions/ci/ml_action.py:names:['CODE_GENERATOR_WITH_TOOLS']"}, {"id": "metagpt/actions/ci/ml_action.py:module:metagpt.schema"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\"]}}"}, {"id": "metagpt/actions/ci/ml_action.py:names:['Message', 'Plan']"}, {"id": "metagpt/actions/ci/ml_action.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\",\"remove_comments\"]}}"}, {"id": "metagpt/actions/ci/ml_action.py:names:['create_func_call_config', 'remove_comments']"}, {"id": "{\"lineno\":18,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeWithToolsML\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UpdateDataColumns\"],\"properties\":{}}"}, {"id": "metagpt/actions/ci/debug_code.py"}, {"id": "metagpt/actions/ci/debug_code.py:DebugCode"}, {"id": "metagpt/actions/ci/debug_code.py:DebugCode:run"}, {"id": "metagpt/actions/ci/debug_code.py:DEBUG_REFLECTION_EXAMPLE"}, {"id": "metagpt/actions/ci/debug_code.py:REFLECTION_PROMPT"}, {"id": "metagpt/actions/ci/debug_code.py:CODE_REFLECTION"}, {"id": "metagpt/actions/ci/debug_code.py:module:__future__"}, {"id": "metagpt/actions/ci/debug_code.py:names:['annotations']"}, {"id": "metagpt/actions/ci/debug_code.py:module:metagpt.actions.ci.write_analysis_code"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"BaseWriteAnalysisCode\"]}}"}, {"id": "metagpt/actions/ci/debug_code.py:names:['BaseWriteAnalysisCode']"}, {"id": "metagpt/actions/ci/debug_code.py:module:metagpt.logs"}, {"id": "metagpt/actions/ci/debug_code.py:names:['logger']"}, {"id": "metagpt/actions/ci/debug_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/ci/debug_code.py:names:['Message']"}, {"id": "metagpt/actions/ci/debug_code.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\"]}}"}, {"id": "metagpt/actions/ci/debug_code.py:names:['create_func_call_config']"}, {"id": "{\"lineno\":8,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEBUG_REFLECTION_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFLECTION_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REFLECTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugCode\"],\"properties\":{}}"}, {"id": "metagpt/prompts/sales.py"}, {"id": "metagpt/prompts/sales.py:SALES_ASSISTANT"}, {"id": "metagpt/prompts/sales.py:SALES"}, {"id": "metagpt/prompts/sales.py:conversation_stages"}, {"id": "metagpt/prompts/sales.py:ast.Constant:\n@Time : 2023/5/8 15:29\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 15:29\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES_ASSISTANT\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"conversation_stages\"],\"properties\":{}}"}, {"id": "metagpt/prompts/__init__.py"}, {"id": "metagpt/prompts/__init__.py:ast.Constant:\n@Time : 2023/5/30 09:51\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/30 09:51\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/prompts/tool_types.py"}, {"id": "metagpt/prompts/tool_types.py:DATA_PREPROCESS_PROMPT"}, {"id": "metagpt/prompts/tool_types.py:FEATURE_ENGINEERING_PROMPT"}, {"id": "metagpt/prompts/tool_types.py:MODEL_TRAIN_PROMPT"}, {"id": "metagpt/prompts/tool_types.py:MODEL_EVALUATE_PROMPT"}, {"id": "metagpt/prompts/tool_types.py:IMAGE2WEBPAGE_PROMPT"}, {"id": "{\"lineno\":2,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PREPROCESS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":14,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"FEATURE_ENGINEERING_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_TRAIN_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_EVALUATE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMAGE2WEBPAGE_PROMPT\"],\"properties\":{}}"}, {"id": "metagpt/prompts/summarize.py"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5"}, {"id": "metagpt/prompts/summarize.py:ast.Constant:\n@Time : 2023/6/19 23:07\n@Author : alexanderwu\n@File : summarize.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/19 23:07\\n@Author : alexanderwu\\n@File : summarize.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_2\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_3\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_4\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_5\"],\"properties\":{}}"}, {"id": "metagpt/prompts/metagpt_sample.py"}, {"id": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE"}, {"id": "metagpt/prompts/metagpt_sample.py:ast.Constant:\n@Time : 2023/6/7 20:29\n@Author : alexanderwu\n@File : metagpt_sample.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/7 20:29\\n@Author : alexanderwu\\n@File : metagpt_sample.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_SAMPLE\"],\"properties\":{}}"}, {"id": "metagpt/prompts/tutorial_assistant.py"}, {"id": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Tutorial Assistant's prompt templates.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Tutorial Assistant's prompt templates.\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":15,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"DIRECTORY_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTENT_PROMPT\"],\"properties\":{}}"}, {"id": "metagpt/prompts/invoice_ocr.py"}, {"id": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS"}, {"id": "metagpt/prompts/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 16:30:25\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Prompts of the invoice ocr assistant.\n"}, {"id": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 16:30:25\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Prompts of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":13,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"REPLY_OCR_QUESTION_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_SUCCESS\"],\"properties\":{}}"}, {"id": "metagpt/prompts/ci/write_analysis_code.py"}, {"id": "metagpt/prompts/ci/write_analysis_code.py:ASSIGN_TASK_TYPE_PROMPT"}, {"id": "metagpt/prompts/ci/write_analysis_code.py:ASSIGN_TASK_TYPE_CONFIG"}, {"id": "metagpt/prompts/ci/write_analysis_code.py:TOOL_RECOMMENDATION_PROMPT"}, {"id": "metagpt/prompts/ci/write_analysis_code.py:SELECT_FUNCTION_TOOLS"}, {"id": "metagpt/prompts/ci/write_analysis_code.py:CODE_GENERATOR_WITH_TOOLS"}, {"id": "metagpt/prompts/ci/write_analysis_code.py:TOOL_USAGE_PROMPT"}, {"id": "{\"lineno\":1,\"end_lineno\":7,\"type_name\":\"ast.Assign\",\"tokens\":[\"ASSIGN_TASK_TYPE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"ASSIGN_TASK_TYPE_CONFIG\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_RECOMMENDATION_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"SELECT_FUNCTION_TOOLS\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_GENERATOR_WITH_TOOLS\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_USAGE_PROMPT\"],\"properties\":{}}"}, {"id": "metagpt/prompts/ci/ml_action.py"}, {"id": "metagpt/prompts/ci/ml_action.py:UPDATE_DATA_COLUMNS"}, {"id": "metagpt/prompts/ci/ml_action.py:PRINT_DATA_COLUMNS"}, {"id": "metagpt/prompts/ci/ml_action.py:ML_COMMON_PROMPT"}, {"id": "metagpt/prompts/ci/ml_action.py:USE_NO_TOOLS_EXAMPLE"}, {"id": "metagpt/prompts/ci/ml_action.py:USE_TOOLS_EXAMPLE"}, {"id": "metagpt/prompts/ci/ml_action.py:ML_GENERATE_CODE_PROMPT"}, {"id": "metagpt/prompts/ci/ml_action.py:ML_TOOL_USAGE_PROMPT"}, {"id": "{\"lineno\":7,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"UPDATE_DATA_COLUMNS\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRINT_DATA_COLUMNS\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":64,\"type_name\":\"ast.Assign\",\"tokens\":[\"ML_COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":66,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"USE_NO_TOOLS_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"USE_TOOLS_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":127,\"end_lineno\":127,\"type_name\":\"ast.Assign\",\"tokens\":[\"ML_GENERATE_CODE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":128,\"end_lineno\":128,\"type_name\":\"ast.Assign\",\"tokens\":[\"ML_TOOL_USAGE_PROMPT\"],\"properties\":{}}"}, {"id": "metagpt/environment/__init__.py"}, {"id": "metagpt/environment/__init__.py:__all__"}, {"id": "metagpt/environment/__init__.py:module:metagpt.environment.base_env"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/environment/__init__.py:names:['Environment']"}, {"id": "metagpt/environment/__init__.py:module:metagpt.environment.android_env.android_env"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.android_env\",\"names\":[\"AndroidEnv\"]}}"}, {"id": "metagpt/environment/__init__.py:names:['AndroidEnv']"}, {"id": "metagpt/environment/__init__.py:module:metagpt.environment.mincraft_env.mincraft_env"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.mincraft_env\",\"names\":[\"MincraftExtEnv\"]}}"}, {"id": "metagpt/environment/__init__.py:names:['MincraftExtEnv']"}, {"id": "metagpt/environment/__init__.py:module:metagpt.environment.werewolf_env.werewolf_env"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.werewolf_env.werewolf_env\",\"names\":[\"WerewolfEnv\"]}}"}, {"id": "metagpt/environment/__init__.py:names:['WerewolfEnv']"}, {"id": "metagpt/environment/__init__.py:module:metagpt.environment.stanford_town_env.stanford_town_env"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.stanford_town_env.stanford_town_env\",\"names\":[\"StanfordTownEnv\"]}}"}, {"id": "metagpt/environment/__init__.py:names:['StanfordTownEnv']"}, {"id": "metagpt/environment/__init__.py:module:metagpt.environment.software_env.software_env"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.software_env.software_env\",\"names\":[\"SoftwareEnv\"]}}"}, {"id": "metagpt/environment/__init__.py:names:['SoftwareEnv']"}, {"id": "metagpt/environment/base_env.py:ExtEnv:_check_api_exist"}, {"id": "metagpt/environment/base_env.py:mark_as_readable"}, {"id": "metagpt/environment/base_env.py:mark_as_writeable"}, {"id": "metagpt/environment/base_env.py:env_write_api_registry"}, {"id": "metagpt/environment/base_env.py:env_read_api_registry"}, {"id": "metagpt/environment/base_env.py:asyncio"}, {"id": "metagpt/environment/base_env.py:module:enum"}, {"id": "metagpt/environment/base_env.py:names:['Enum']"}, {"id": "metagpt/environment/base_env.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"TYPE_CHECKING\",\"Any\",\"Dict\",\"Iterable\",\"Optional\",\"Set\",\"Union\"]}}"}, {"id": "metagpt/environment/base_env.py:names:['TYPE_CHECKING', 'Any', 'Dict', 'Iterable', 'Optional', 'Set', 'Union']"}, {"id": "metagpt/environment/base_env.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"id": "metagpt/environment/base_env.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']"}, {"id": "metagpt/environment/base_env.py:module:metagpt.context"}, {"id": "metagpt/environment/base_env.py:names:['Context']"}, {"id": "metagpt/environment/base_env.py:module:metagpt.environment.api.env_api"}, {"id": "{\"lineno\":12,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.api.env_api\",\"names\":[\"EnvAPIAbstract\",\"ReadAPIRegistry\",\"WriteAPIRegistry\"]}}"}, {"id": "metagpt/environment/base_env.py:names:['EnvAPIAbstract', 'ReadAPIRegistry', 'WriteAPIRegistry']"}, {"id": "metagpt/environment/base_env.py:module:metagpt.logs"}, {"id": "metagpt/environment/base_env.py:names:['logger']"}, {"id": "metagpt/environment/base_env.py:module:metagpt.schema"}, {"id": "metagpt/environment/base_env.py:names:['Message']"}, {"id": "metagpt/environment/base_env.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"get_function_schema\",\"is_coroutine_func\",\"is_send_to\"]}}"}, {"id": "metagpt/environment/base_env.py:names:['get_function_schema', 'is_coroutine_func', 'is_send_to']"}, {"id": "metagpt/environment/base_env.py:TYPE_CHECKING"}, {"id": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.If\",\"tokens\":[\"TYPE_CHECKING\"],\"properties\":{}}"}, {"id": "{\"lineno\":25,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnvType\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.Assign\",\"tokens\":[\"env_write_api_registry\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"env_read_api_registry\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"mark_as_readable\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":46,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"mark_as_writeable\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":95,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExtEnv\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":209,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Environment\"],\"properties\":{}}"}, {"id": "metagpt/environment/base_env.py:ast.Call:Environment.model_rebuild"}, {"id": "{\"lineno\":212,\"end_lineno\":212,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Call\",\"Environment.model_rebuild\"],\"properties\":{}}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:__init__"}, {"id": "metagpt/environment/android_env/android_ext_env.py:subprocess"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:module:pathlib"}, {"id": "metagpt/environment/android_env/android_ext_env.py:names:['Path']"}, {"id": "metagpt/environment/android_env/android_ext_env.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:names:['Any', 'Optional']"}, {"id": "metagpt/environment/android_env/android_ext_env.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:names:['Field']"}, {"id": "metagpt/environment/android_env/android_ext_env.py:module:metagpt.environment.android_env.const"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.const\",\"names\":[\"ADB_EXEC_FAIL\"]}}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:names:['ADB_EXEC_FAIL']"}, {"id": "metagpt/environment/android_env/android_ext_env.py:module:metagpt.environment.base_env"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_readable\",\"mark_as_writeable\"]}}"}, {"id": "metagpt/environment/android_env/android_ext_env.py:names:['ExtEnv', 'mark_as_readable', 'mark_as_writeable']"}, {"id": "{\"lineno\":15,\"end_lineno\":157,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AndroidExtEnv\"],\"properties\":{}}"}, {"id": "metagpt/environment/android_env/android_env.py:module:pydantic"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/environment/android_env/android_env.py:names:['Field']"}, {"id": "metagpt/environment/android_env/android_env.py:module:metagpt.environment.android_env.android_ext_env"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.android_ext_env\",\"names\":[\"AndroidExtEnv\"]}}"}, {"id": "metagpt/environment/android_env/android_env.py:names:['AndroidExtEnv']"}, {"id": "metagpt/environment/android_env/android_env.py:module:metagpt.environment.base_env"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/environment/android_env/android_env.py:names:['Environment']"}, {"id": "{\"lineno\":11,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AndroidEnv\"],\"properties\":{}}"}, {"id": "metagpt/environment/android_env/__init__.py"}, {"id": "metagpt/environment/android_env/const.py"}, {"id": "metagpt/environment/android_env/const.py:ADB_EXEC_FAIL"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"ADB_EXEC_FAIL\"],\"properties\":{}}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:_init_maze"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:math"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"math\"],\"properties\":{}}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:pathlib"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['Path']"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['Optional', 'Tuple']"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['ConfigDict', 'Field', 'model_validator']"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:metagpt.environment.base_env"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['ExtEnv', 'mark_as_readable', 'mark_as_writeable']"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"read_csv_to_list\",\"read_json_file\"]}}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['read_csv_to_list', 'read_json_file']"}, {"id": "{\"lineno\":16,\"end_lineno\":379,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"StanfordTownExtEnv\"],\"properties\":{}}"}, {"id": "metagpt/environment/stanford_town_env/__init__.py"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_env.py:module:metagpt.environment.base_env"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_env.py:names:['Environment']"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_env.py:module:metagpt.environment.stanford_town_env.stanford_town_ext_env"}, {"id": "{\"lineno\":6,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.stanford_town_env.stanford_town_ext_env\",\"names\":[\"StanfordTownExtEnv\"]}}"}, {"id": "metagpt/environment/stanford_town_env/stanford_town_env.py:names:['StanfordTownExtEnv']"}, {"id": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"StanfordTownEnv\"],\"properties\":{}}"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:module:pydantic"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:names:['Field']"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:module:metagpt.environment.base_env"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:names:['Environment']"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:module:metagpt.environment.werewolf_env.werewolf_ext_env"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.werewolf_env.werewolf_ext_env\",\"names\":[\"WerewolfExtEnv\"]}}"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:names:['WerewolfExtEnv']"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:module:metagpt.logs"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:names:['logger']"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:module:metagpt.schema"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/environment/werewolf_env/werewolf_env.py:names:['Message']"}, {"id": "{\"lineno\":13,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WerewolfEnv\"],\"properties\":{}}"}, {"id": "metagpt/environment/werewolf_env/__init__.py"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_role_type_players"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_init_players_state"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_update_players_state"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_check_valid_role"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_check_player_continue"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:STEP_INSTRUCTIONS"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:random"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"random\"],\"properties\":{}}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:collections"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"Counter\"]}}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['Counter']"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:enum"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['Enum']"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:typing"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['Callable', 'Optional']"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['ConfigDict', 'Field']"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:metagpt.environment.base_env"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['ExtEnv', 'mark_as_readable', 'mark_as_writeable']"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:metagpt.logs"}, {"id": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['logger']"}, {"id": "{\"lineno\":16,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleState\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"STEP_INSTRUCTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":335,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WerewolfExtEnv\"],\"properties\":{}}"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__getitem__"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__setitem__"}, {"id": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__len__"}, {"id": "metagpt/environment/api/env_api.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"id": "metagpt/environment/api/env_api.py:names:['Any', 'Callable', 'Union']"}, {"id": "metagpt/environment/api/env_api.py:module:pydantic"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/environment/api/env_api.py:names:['BaseModel', 'Field']"}, {"id": "{\"lineno\":10,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnvAPIAbstract\"],\"properties\":{}}"}, {"id": "{\"lineno\":18,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnvAPIRegistry\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteAPIRegistry\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReadAPIRegistry\"],\"properties\":{}}"}, {"id": "metagpt/environment/api/__init__.py"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:json"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:re"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:time"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['Any', 'Iterable']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:langchain.embeddings.openai"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings.openai\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:langchain.vectorstores"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"Chroma\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['Chroma']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['ConfigDict', 'Field']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.config2"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config as CONFIG\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['config as CONFIG']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.environment.base_env"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['Environment']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.environment.mincraft_env.const"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.const\",\"names\":[\"MC_CKPT_DIR\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['MC_CKPT_DIR']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.environment.mincraft_env.mincraft_ext_env"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.mincraft_ext_env\",\"names\":[\"MincraftExtEnv\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['MincraftExtEnv']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.logs"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['logger']"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"load_mc_skills_code\",\"read_json_file\",\"write_json_file\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_env.py:names:['load_mc_skills_code', 'read_json_file', 'write_json_file']"}, {"id": "{\"lineno\":23,\"end_lineno\":391,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MincraftEnv\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/__init__.py"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:__init__"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:_start"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:re"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:subprocess"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:threading"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:warnings"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:module:typing"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:names:['List']"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:psutil"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"psutil\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:module:metagpt.logs"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"define_log_level\"]}}"}, {"id": "metagpt/environment/mincraft_env/process_monitor.py:names:['define_log_level']"}, {"id": "{\"lineno\":16,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubprocessMonitor\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:_post_init_ext_env"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:json"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:time"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:typing"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['Optional']"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:requests"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['ConfigDict', 'Field', 'model_validator']"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:metagpt.environment.base_env"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_writeable\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['ExtEnv', 'mark_as_writeable']"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:metagpt.environment.mincraft_env.const"}, {"id": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.const\",\"names\":[\"MC_CKPT_DIR\",\"MC_CORE_INVENTORY_ITEMS\",\"MC_CURRICULUM_OB\",\"MC_DEFAULT_WARMUP\",\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['MC_CKPT_DIR', 'MC_CORE_INVENTORY_ITEMS', 'MC_CURRICULUM_OB', 'MC_DEFAULT_WARMUP', 'METAGPT_ROOT']"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:metagpt.environment.mincraft_env.process_monitor"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.process_monitor\",\"names\":[\"SubprocessMonitor\"]}}"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['SubprocessMonitor']"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:metagpt.logs"}, {"id": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['logger']"}, {"id": "{\"lineno\":25,\"end_lineno\":180,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MincraftExtEnv\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/const.py"}, {"id": "metagpt/environment/mincraft_env/const.py:MC_CKPT_DIR"}, {"id": "metagpt/environment/mincraft_env/const.py:MC_LOG_DIR"}, {"id": "metagpt/environment/mincraft_env/const.py:MC_DEFAULT_WARMUP"}, {"id": "metagpt/environment/mincraft_env/const.py:MC_CURRICULUM_OB"}, {"id": "metagpt/environment/mincraft_env/const.py:MC_CORE_INVENTORY_ITEMS"}, {"id": "metagpt/environment/mincraft_env/const.py:module:metagpt.const"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/environment/mincraft_env/const.py:names:['METAGPT_ROOT']"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_CKPT_DIR\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_LOG_DIR\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_DEFAULT_WARMUP\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_CURRICULUM_OB\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_CORE_INVENTORY_ITEMS\"],\"properties\":{}}"}, {"id": "metagpt/environment/mincraft_env/const.py:ast.Tuple:['|cobblestone|dirt|coal|.*_pickaxe|.*_sword|.*_axe']"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Tuple\",[\"|cobblestone|dirt|coal|.*_pickaxe|.*_sword|.*_axe\"]],\"properties\":{}}"}, {"id": "metagpt/environment/software_env/__init__.py"}, {"id": "metagpt/environment/software_env/software_env.py:module:metagpt.environment.base_env"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/environment/software_env/software_env.py:names:['Environment']"}, {"id": "{\"lineno\":9,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SoftwareEnv\"],\"properties\":{}}"}, {"id": "metagpt/strategy/planner.py:Planner:__init__"}, {"id": "metagpt/strategy/planner.py:STRUCTURAL_CONTEXT"}, {"id": "metagpt/strategy/planner.py:module:__future__"}, {"id": "metagpt/strategy/planner.py:names:['annotations']"}, {"id": "metagpt/strategy/planner.py:json"}, {"id": "metagpt/strategy/planner.py:module:pydantic"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/strategy/planner.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/strategy/planner.py:module:metagpt.actions.ci.ask_review"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ask_review\",\"names\":[\"AskReview\",\"ReviewConst\"]}}"}, {"id": "metagpt/strategy/planner.py:names:['AskReview', 'ReviewConst']"}, {"id": "metagpt/strategy/planner.py:module:metagpt.actions.ci.write_plan"}, {"id": "{\"lineno\":8,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_plan\",\"names\":[\"WritePlan\",\"precheck_update_plan_from_rsp\",\"update_plan_from_rsp\"]}}"}, {"id": "metagpt/strategy/planner.py:names:['WritePlan', 'precheck_update_plan_from_rsp', 'update_plan_from_rsp']"}, {"id": "metagpt/strategy/planner.py:module:metagpt.logs"}, {"id": "metagpt/strategy/planner.py:names:['logger']"}, {"id": "metagpt/strategy/planner.py:module:metagpt.memory"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/strategy/planner.py:names:['Memory']"}, {"id": "metagpt/strategy/planner.py:module:metagpt.schema"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"Task\",\"TaskResult\"]}}"}, {"id": "metagpt/strategy/planner.py:names:['Message', 'Plan', 'Task', 'TaskResult']"}, {"id": "{\"lineno\":17,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRUCTURAL_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Planner\"],\"properties\":{}}"}, {"id": "metagpt/strategy/solver.py:BaseSolver:__init__"}, {"id": "metagpt/strategy/solver.py:ast.Constant:\n@Time : 2024/1/30 17:13\n@Author : alexanderwu\n@File : solver.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/30 17:13\\n@Author : alexanderwu\\n@File : solver.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/strategy/solver.py:module:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"abstractmethod\"]}}"}, {"id": "metagpt/strategy/solver.py:names:['abstractmethod']"}, {"id": "metagpt/strategy/solver.py:module:metagpt.actions.action_graph"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_graph\",\"names\":[\"ActionGraph\"]}}"}, {"id": "metagpt/strategy/solver.py:names:['ActionGraph']"}, {"id": "metagpt/strategy/solver.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/strategy/solver.py:names:['BaseLLM']"}, {"id": "metagpt/strategy/solver.py:module:metagpt.strategy.search_space"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.search_space\",\"names\":[\"SearchSpace\"]}}"}, {"id": "metagpt/strategy/solver.py:names:['SearchSpace']"}, {"id": "{\"lineno\":15,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NaiveSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TOTSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeInterpreterSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":63,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReActSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":66,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IOSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"COTSolver\"],\"properties\":{}}"}, {"id": "metagpt/strategy/tot_schema.py:module:enum"}, {"id": "metagpt/strategy/tot_schema.py:names:['Enum']"}, {"id": "metagpt/strategy/tot_schema.py:module:pydantic"}, {"id": "metagpt/strategy/tot_schema.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/strategy/tot_schema.py:module:metagpt.strategy.base"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"id": "metagpt/strategy/tot_schema.py:names:['BaseEvaluator', 'BaseParser']"}, {"id": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MethodSelect\"],\"properties\":{}}"}, {"id": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Strategy\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverConfig\"],\"properties\":{}}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__"}, {"id": "metagpt/strategy/tot.py:BFSSolver:_bfs_build"}, {"id": "metagpt/strategy/tot.py:DFSSolver:_dfs"}, {"id": "metagpt/strategy/tot.py:TreeofThought:__init__"}, {"id": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver"}, {"id": "metagpt/strategy/tot.py:OUTPUT_FORMAT"}, {"id": "metagpt/strategy/tot.py:module:__future__"}, {"id": "metagpt/strategy/tot.py:names:['annotations']"}, {"id": "metagpt/strategy/tot.py:asyncio"}, {"id": "metagpt/strategy/tot.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['Any', 'List', 'Optional']"}, {"id": "metagpt/strategy/tot.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.llm"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['LLM']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.logs"}, {"id": "metagpt/strategy/tot.py:names:['logger']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/strategy/tot.py:names:['BaseLLM']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.strategy.base"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['ThoughtNode', 'ThoughtTree']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.strategy.tot_schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['MethodSelect', 'Strategy', 'ThoughtSolverConfig']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.utils.common"}, {"id": "metagpt/strategy/tot.py:names:['CodeParser']"}, {"id": "{\"lineno\":19,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"OUTPUT_FORMAT\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverBase\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BFSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DFSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":230,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MCTSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":235,\"end_lineno\":277,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeofThought\"],\"properties\":{}}"}, {"id": "metagpt/strategy/__init__.py"}, {"id": "metagpt/strategy/search_space.py:SearchSpace:__init__"}, {"id": "metagpt/strategy/search_space.py:ast.Constant:\n@Time : 2024/1/30 17:15\n@Author : alexanderwu\n@File : search_space.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/30 17:15\\n@Author : alexanderwu\\n@File : search_space.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchSpace\"],\"properties\":{}}"}, {"id": "metagpt/strategy/base.py:BaseParser:__call__"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:__call__"}, {"id": "metagpt/strategy/base.py:module:abc"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/strategy/base.py:names:['ABC']"}, {"id": "metagpt/strategy/base.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/strategy/base.py:names:['List']"}, {"id": "metagpt/strategy/base.py:module:anytree"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"id": "metagpt/strategy/base.py:names:['Node', 'RenderTree']"}, {"id": "metagpt/strategy/base.py:module:pydantic"}, {"id": "metagpt/strategy/base.py:names:['BaseModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseEvaluator\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtTree\"],\"properties\":{}}"}, {"id": "{\"name\":\"AIMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"APIRequestor\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"AZURE_AD,OPEN_AI\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Action\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"node\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionGraph\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"edges\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"execution_order\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"nodes\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"children\",\"visibility\":\"+\",\"value_type\":\"dict[str,ActionNode]\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"example\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expected_type\",\"visibility\":\"+\",\"value_type\":\"Type\",\"default_value\":\"\"},{\"name\":\"func\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"},{\"name\":\"instruction\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"nexts\",\"visibility\":\"+\",\"value_type\":\"List[ActionNode]\",\"default_value\":\"\"},{\"name\":\"params\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Type]\",\"default_value\":\"\"},{\"name\":\"prevs\",\"visibility\":\"+\",\"value_type\":\"List[ActionNode]\",\"default_value\":\"\"},{\"name\":\"schema\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionOutput\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AndroidEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cols\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"rows\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AndroidExtEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"adb_prefix\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"adb_prefix_shell\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"adb_prefix_si\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"device_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"device_shape\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"height\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"screenshot_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"width\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"xml_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ApiType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Architect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ArgumentsParingAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict]\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Assistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"Optional[SkillsDeclaration]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AsyncSSEClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"AttrDict\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AudioData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"audio\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ced\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AzureOpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncAzureOpenAI\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AzureTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"region\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"subscription_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BEAGECTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseContext\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BaseEvaluator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BaseLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[AsyncOpenAI]]\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BasePostProcessPlugin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"search_space\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseStore\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BrainMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cacheable\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"historical_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"history_text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_dirty\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_history_available\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"last_history_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"last_talk\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BrowserConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit','chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BugFixContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CLIParams\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"git_reinit\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"COTSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"CatCount\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"encoder_dict\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CatCross\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"combs\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"combs_map\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"max_cat_num\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ChangeType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ChromaStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"collection\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Claude2\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeBlockInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"end_lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"properties\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"tokens\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"type_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeInterpreterSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"CodeParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"CodePlanAndChangeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeSummarizeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"codes_filenames\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"design_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CollectLinks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rank_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[list[str]],None]]\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"},{\"name\":\"search_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Components\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ConductResearch\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"azure_tts_region\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"azure_tts_subscription_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_review_k_times\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"enable_longterm_memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"iflytek_api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"iflytek_api_secret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"iflytek_app_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metagpt_tti_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"Literal['json','markdown','raw']\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"redis\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"},{\"name\":\"redis_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"repair_llm_output\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"s3\",\"visibility\":\"+\",\"value_type\":\"Optional[S3Config]\",\"default_value\":\"\"},{\"name\":\"search\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"alias\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Context\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"Optional[GitRepository]\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"Optional[ProjectRepo]\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ContextMixin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"private_config\",\"visibility\":\"+\",\"value_type\":\"Optional[Config]\",\"default_value\":\"\"},{\"name\":\"private_context\",\"visibility\":\"+\",\"value_type\":\"Optional[Context]\",\"default_value\":\"\"},{\"name\":\"private_llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"max_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Costs\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CustomDecoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"parse_object\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parse_string\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"scan_once\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CustomerService\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DDGAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ddgs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DataPreprocessTool\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DataSource\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DebugError\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DependencyFile\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"exists\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DesignReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DiGraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"pathname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"class_view\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocstringCollector\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocstringParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstring\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocstringTransformer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"author\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"reviews\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocumentStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Documents\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"default_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassMethod]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"return_args\",\"visibility\":\"+\",\"value_type\":\"Optional[DotReturn]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassRelationship\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dest\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotReturn\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"List[float]\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"object\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Engineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_borg\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_summarize\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"next_todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"summarize_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"use_code_review\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"EnronTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Entity\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"List[Skill]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"EnvAPIAbstract\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"set\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"EnvAPIRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"registry\",\"visibility\":\"+\",\"value_type\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"EnvType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Environment\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"member_addrs\",\"visibility\":\"+\",\"value_type\":\"Dict[Role,Set]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"roles\",\"visibility\":\"+\",\"value_type\":\"dict[str,SerializeAsAny[Role]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Example\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"answer\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ExecuteTask\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ExtEnv\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ExtractTimeComps\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"time_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"time_comps\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FaissStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"File\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CHUNK_SIZE\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FileRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FillMissingValue\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"SimpleImputer\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FireworksCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FireworksLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FixBug\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GPTPromptGenerator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GPTvGenerator\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GeminiGenerativeModel\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GeminiLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GeneralAPIRequestor\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GeneralSelection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"feats\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"label_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GenerateQuestions\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GenerateTable\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GetMessageFromWeb\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GitRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_valid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GoogleAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"cse_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"google_api_client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GoogleDocstringParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstring\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GraphKeyword\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"GLOBAL_VARIABLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_USE_CASE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_DETAIL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PAGE_INFO\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PARTICIPANT\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW_VER\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_AGGREGATE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_COMPOSITE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"NULL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ON\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"SOURCE_CODE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GroupStat\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"agg_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"agg_funcs\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"group_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"group_df\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"HumanInteraction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stop_list\",\"visibility\":\"+\",\"value_type\":\"tuple\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"HumanProvider\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTSResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Optional[AudioData]\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"sid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTSStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IOSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ImageResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"images\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IndexableDocument\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Union[pd.DataFrame,list]\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"invoice_data\",\"visibility\":\"+\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceOCR\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceOCRAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"orc_data\",\"visibility\":\"+\",\"value_type\":\"Optional[list]\",\"default_value\":\"\"},{\"name\":\"origin_query\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoicePath\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"file_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"KFoldTargetMeanEncoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"encoder_dict\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_splits\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"random_state\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"best_of\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"calc_usage\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"frequency_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[bool]\",\"default_value\":\"\"},{\"name\":\"max_token\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"n\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"presence_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"repetition_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"stop\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"stream\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"temperature\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"timeout\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_k\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"top_p\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMProviderRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"providers\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LabelEncode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"le_encoders\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LanceStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"LanceDBConnection,RemoteDBConnection\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"table\",\"visibility\":\"+\",\"value_type\":\"LanceTable,NoneType,RemoteTable\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LocalStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cache_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"fname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"raw_data_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LongTermMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"memory_storage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_from_recover\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"Optional[RoleContext]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MCTSSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"MLProcess\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"MaxAbsScale\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"MaxAbsScaler\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MeilisearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"Client\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Memory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ignore_id\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_value\":\"\"},{\"name\":\"storage\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Message]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MemoryStorage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"is_initialized\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mem_ttl\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"role_mem_path\",\"visibility\":\"+\",\"value_type\":\"Optional[str],Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"NoneType,Optional[FAISS]\",\"default_value\":\"\"},{\"name\":\"threshold\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MermaidConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pyppeteer_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Message\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cause_by\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseModel]\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"send_to\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"sent_from\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MessageQueue\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MessageType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MetaGPTLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"MetaGPTText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MethodSelect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MinMaxScale\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"MinMaxScaler\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MincraftEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"chest_memory\",\"visibility\":\"+\",\"value_type\":\"dict[str,Any]\",\"default_value\":\"\"},{\"name\":\"chest_observation\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"completed_tasks\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"critique\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"current_task\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"event\",\"visibility\":\"+\",\"value_type\":\"dict[str,Any]\",\"default_value\":\"\"},{\"name\":\"event_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"failed_tasks\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"program_code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"program_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"programs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"progress\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"qa_cache\",\"visibility\":\"+\",\"value_type\":\"dict[str,str]\",\"default_value\":\"\"},{\"name\":\"qa_cache_questions_vectordb\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"retrieve_skills\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"runtime_status\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"skill_desp\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"task_execution_time\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"vectordb\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MincraftExtEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"connected\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"has_reset\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"mc_port\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"mineflayer\",\"visibility\":\"+\",\"value_type\":\"Optional[SubprocessMonitor]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_timeout\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"reset_options\",\"visibility\":\"+\",\"value_type\":\"Optional[dict]\",\"default_value\":\"\"},{\"name\":\"server\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"server_host\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"server_paused\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"server_port\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"warm_up\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Moderation\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"NaiveSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"NoMoneyException\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"amount\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OCRResults\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ocr_result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OllamaLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"http_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"suffix_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OneHotEncode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"OneHotEncoder\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncOpenAI\",\"default_value\":\"\"},{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"operation_location\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"response_ms\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"retry_after\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIText2Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OrdinalEncode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"OrdinalEncoder\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OutputParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Parameter\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Plan\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"current_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_task_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_map\",\"visibility\":\"+\",\"value_type\":\"dict[str,Task]\",\"default_value\":\"\"},{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"list[Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Planner\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auto_run\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"current_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_task_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"use_tools\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"working_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PlaywrightWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\",\"default_value\":\"\"},{\"name\":\"context_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PolynomialExpansion\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"degree\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"label_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"poly\",\"visibility\":\"+\",\"value_type\":\"PolynomialFeatures\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PrepareDocuments\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PrepareInterview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProductManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProjectManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProjectRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"resources\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"src_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"srcs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"test_outputs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tests\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PromptString\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QaEngineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_round\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"test_round_allowed\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QdrantConnection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QdrantStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"QdrantClient\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReActSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ReadAPIRegistry\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"RebuildClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RebuildSequenceView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Redis\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RedisConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"password\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"username\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepairType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReplyData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReplyQuestion\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Repo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"assets\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"codes\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoFileInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"classes\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"functions\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"globals\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"page_info\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoMetadata\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"n_chars\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_docs\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"symbols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"base_directory\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Report\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"links\",\"visibility\":\"+\",\"value_type\":\"Optional[dict[str,list[str]]]\",\"default_value\":\"\"},{\"name\":\"summaries\",\"visibility\":\"+\",\"value_type\":\"Optional[list[tuple[str,str]]]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Researcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ResourceFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_spec_and_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"competitive_analysis\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"data_api_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_output\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"seq_flow\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ResultEmbedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"List[Embedding]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"usage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Returns\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"format\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReverseUseCase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"actors\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"outputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"steps\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReverseUseCaseDetails\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"use_cases\",\"visibility\":\"+\",\"value_type\":\"List[ReverseUseCase]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReviewMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReviseMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RobustScale\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"RobustScaler\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Role\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"actions\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Action]]\",\"default_value\":\"\"},{\"name\":\"addresses\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_human\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"latest_observed_msg\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"planner\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"recovered\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"states\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RoleContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"important_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_react_loop\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_buffer\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"news\",\"visibility\":\"+\",\"value_type\":\"list[Type[Message]]\",\"default_value\":\"\"},{\"name\":\"react_mode\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"state\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"watch\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"working_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RoleReactMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RoleState\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCodeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"additional_python_paths\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"code_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"command\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"mode\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"output\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"output_filename\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"working_directory\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCodeResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stderr\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"stdout\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"S3\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auth_config\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"visibility\":\"+\",\"value_type\":\"Session\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"S3Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"access_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"bucket\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"endpoint\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"secret_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SDEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"payload\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"sd_t2i_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SPO\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"subject\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Sales\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cse_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchSpace\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"search_space\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Searcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SeleniumWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"executable_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"launch_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SerializationMixin\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SerpAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SerperWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SimpleMessage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Singleton\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SkAgent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"import_semantic_skill_from_directory\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"import_skill\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"kernel\",\"visibility\":\"+\",\"value_type\":\"Kernel\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"plan\",\"visibility\":\"+\",\"value_type\":\"Plan\",\"default_value\":\"\"},{\"name\":\"planner\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_value\":\"\"},{\"name\":\"planner_cls\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkSearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Skill\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arguments\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"examples\",\"visibility\":\"+\",\"value_type\":\"List[Example]\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,Parameter]]\",\"default_value\":\"\"},{\"name\":\"returns\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"x_prerequisite\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkillAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkillManager\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SkillsDeclaration\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"components\",\"visibility\":\"+\",\"value_type\":\"Optional[Components]\",\"default_value\":\"\"},{\"name\":\"entities\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Entity]\",\"default_value\":\"\"},{\"name\":\"skillapi\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SoftwareEnv\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SparkLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SplitBins\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"encoder\",\"visibility\":\"+\",\"value_type\":\"KBinsDiscretizer,NoneType\",\"default_value\":\"\"},{\"name\":\"strategy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"StandardScale\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"StandardScaler\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"StanfordTownEnv\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"StanfordTownExtEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"address_tiles\",\"visibility\":\"+\",\"value_type\":\"dict[str,set]\",\"default_value\":\"\"},{\"name\":\"collision_maze\",\"visibility\":\"+\",\"value_type\":\"list[list]\",\"default_value\":\"\"},{\"name\":\"maze_asset_path\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"maze_height\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"maze_width\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"special_constraint\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"sq_tile_size\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"tiles\",\"visibility\":\"+\",\"value_type\":\"list[list[dict]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Strategy\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SubprocessMonitor\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"callback\",\"visibility\":\"+\",\"value_type\":\"Optional[callable]\",\"default_value\":\"\"},{\"name\":\"callback_match\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"commands\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"finished_callback\",\"visibility\":\"+\",\"value_type\":\"Optional[callable]\",\"default_value\":\"\"},{\"name\":\"is_running\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"logger\",\"visibility\":\"+\",\"value_type\":\"Logger\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"process\",\"visibility\":\"+\",\"value_type\":\"NoneType,Popen\",\"default_value\":\"\"},{\"name\":\"ready_event\",\"visibility\":\"+\",\"value_type\":\"Event,NoneType\",\"default_value\":\"\"},{\"name\":\"ready_line\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ready_match\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"thread\",\"visibility\":\"+\",\"value_type\":\"NoneType,Thread\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SubscriptionRunner\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"dict[Role,asyncio.Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SummarizeCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SystemMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"TOTSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"TalkAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aask_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"agent_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"history_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_gpt4\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TalkActionPrompt\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION_LOOSE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TargetMeanEncoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"encoder_dict\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Task\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"dependent_task_ids\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"instruction\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_finished\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_success\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TaskResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_success\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Teacher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"course_title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TeachingPlanBlock\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"COURSE_TITLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_BEGIN_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_END_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"TOPICS\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"TOPIC_STATEMENTS\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Team\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"Optional[Environment]\",\"default_value\":\"\"},{\"name\":\"idea\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"investment\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TestingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"valid_status\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"value\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtSolverBase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"Optional[ThoughtTree]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtSolverConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"evaluator\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_steps\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"method_select\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_generate_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_select_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_solution_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"parser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtTree\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_nodes\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TokenCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Tool\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"schemas\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ToolRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tool_types\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"tools\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"tools_by_types\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ToolSchema\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ToolType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"type_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ToolTypeDef\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"usage_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Translator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"TreeBasedSelection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"feats\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"label_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TreeofThought\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"solver\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strategy\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TutorialAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"main_title\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"total_content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"default_value\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"value_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassMeta\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"visibility\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"return_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassMethod]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UTGenerator\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"chatgpt_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"icl_sample\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"questions_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"swagger_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"template_prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ut_py_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Usage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UserMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"UserRequirement\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"VarianceBasedSelection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"feats\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"label_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"selector\",\"visibility\":\"+\",\"value_type\":\"VarianceThreshold\",\"default_value\":\"\"},{\"name\":\"threshold\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"VisualDiGraphRepo\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"VisualGraphRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WDMHttpProxyClient\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowseAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browse_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[WebBrowserEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowserEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[...,Coroutine[Any,Any,Union[WebPage,list[WebPage]]]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowserEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebPage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"html\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inner_text\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"soup\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WerewolfEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timestamp\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WerewolfExtEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"eval_step_idx\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"game_setup\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_hunted_player_saved\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"living_players\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"per_round_steps\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"player_current_dead\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"player_hunted\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"player_poisoned\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"player_protected\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"players_state\",\"visibility\":\"+\",\"value_type\":\"dict[str,tuple[str,RoleState]]\",\"default_value\":\"\"},{\"name\":\"round_hunts\",\"visibility\":\"+\",\"value_type\":\"dict[str,str]\",\"default_value\":\"\"},{\"name\":\"round_idx\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"round_votes\",\"visibility\":\"+\",\"value_type\":\"dict[str,str]\",\"default_value\":\"\"},{\"name\":\"special_role_players\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"step_idx\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"villager_players\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"werewolf_players\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"win_reason\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"winner\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"witch_antidote_left\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"witch_poison_left\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WikiHowTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WorkspaceConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"uid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_uid\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteAPIRegistry\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodeAN\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodePlanAndChange\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodeReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteContent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"directory\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDesign\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDirectory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDocstring\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WritePRD\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WritePRDReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"prd_review_prompt_template\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTeachingPlanPart\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTest\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[TestingContext]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WsParam\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"YamlModel\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"extra_fields\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,str]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"YamlModelWithoutDefault\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuEvent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuModelAPI\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"_AgentSkill\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"_VisualClassView\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"generalizations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"uml\",\"visibility\":\"+\",\"value_type\":\"Optional[UMLClassView]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"reSTDocstringParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}], "links": [{"predicate": "is", "source": "metagpt/schema.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/schema.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:AIMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:BugFixContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodePlanAndChangeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Document"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Documents"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:MessageQueue"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Plan"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:RunCodeResult"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SimpleMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SystemMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Task"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:TaskResult"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassMethod"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassView"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UserMessage"}, {"predicate": "is", "source": "metagpt/schema.py:AIMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:AIMessage", "target": "{\"name\":\"AIMessage\",\"package\":\"metagpt/schema.py:AIMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:AIMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:AIMessage", "target": "metagpt/schema.py:AIMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:AIMessage", "target": "{\"lineno\":324,\"end_lineno\":330,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AIMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:AIMessage", "target": "{\"name\":\"AIMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:APIRequestor"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:ApiType"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:OpenAIResponse"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_console_log_level"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_debug"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_info"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_warn"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:logfmt"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_build_api_url"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_requests_proxies_arg"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_make_session"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream_helper"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream_async"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:aiohttp_session"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"name\":\"APIRequestor\",\"package\":\"metagpt/provider/general_api_base.py:APIRequestor\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version : NoneType\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}},\"methods\":{\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]},\"arequest_raw\":{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]},\"request\":{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]},\"request_headers\":{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]},\"request_raw\":{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}},\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"],\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\",\"aiohttp.ClientResponse\",\"requests.Response\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_type"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_version"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:base_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:organization"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request_headers"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request_raw"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:AZURE_AD"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:OPEN_AI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:OpenAIResponse"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:AsyncGenerator"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:aiohttp.ClientResponse"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:requests.Response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"lineno\":227,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"APIRequestor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"name\":\"APIRequestor\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"AZURE_AD,OPEN_AI\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_version", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_version", "target": "{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:base_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:base_url", "target": "{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:organization", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:organization", "target": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest", "target": "{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw", "target": "{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request", "target": "{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_headers", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_headers", "target": "{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_raw", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_raw", "target": "{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}"}, {"predicate": "is", "source": "metagpt/actions/action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action.py", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action", "target": "{\"name\":\"Action\",\"package\":\"metagpt/actions/action.py:Action\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"node\":{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},\"prefix\":{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"set_name_if_empty\":{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]},\"set_prefix\":{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}},\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:model_config"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:node"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:prefix"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:project_name"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:project_path"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:prompt_schema"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:repo"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:set_name_if_empty"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:set_prefix"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action.py:Action", "target": "metagpt/roles/role.py:RoleContext:todo"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodePlanAndChangeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_init_with_instruction"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:__repr__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_aask"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_run_action_node"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:Action", "target": "{\"lineno\":28,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Action\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action.py:Action", "target": "{\"name\":\"Action\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"node\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodePlanAndChangeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodeSummarizeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodingContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:RunCodeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:TestingContext"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:node", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:node", "target": "{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prefix", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:prefix", "target": "{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:repo", "target": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:set_name_if_empty", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:set_name_if_empty", "target": "{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:set_prefix", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:set_prefix", "target": "{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_graph.py", "target": "metagpt/actions/action_graph.py:ActionGraph"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "{\"name\":\"ActionGraph\",\"package\":\"metagpt/actions/action_graph.py:ActionGraph\",\"attributes\":{\"edges\":{\"name\":\"edges\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"edges : dict\",\"compositions\":[]},\"execution_order\":{\"name\":\"execution_order\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"execution_order : list\",\"compositions\":[]},\"nodes\":{\"name\":\"nodes\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"nodes : dict\",\"compositions\":[]}},\"methods\":{\"add_edge\":{\"name\":\"add_edge\",\"args\":[{\"name\":\"from_node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"from_node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]},{\"name\":\"to_node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"to_node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_edge(from_node: 'ActionNode', to_node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_node\":{\"name\":\"add_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_node(node)\",\"aggregations\":[]},\"topological_sort\":{\"name\":\"topological_sort\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"topological_sort()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/actions/action_graph.py:ActionGraph:edges"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/actions/action_graph.py:ActionGraph:execution_order"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/actions/action_graph.py:ActionGraph:nodes"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/actions/action_graph.py:ActionGraph:add_edge"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/actions/action_graph.py:ActionGraph:add_node"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/actions/action_graph.py:ActionGraph:topological_sort"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "?:ActionNode"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "isAggregateOn", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/strategy/solver.py:BaseSolver:graph"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "metagpt/actions/action_graph.py:ActionGraph:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "{\"lineno\":13,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionGraph\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_graph.py:ActionGraph", "target": "{\"name\":\"ActionGraph\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"edges\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"execution_order\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"nodes\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py:ActionGraph:edges", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_graph.py:ActionGraph:edges", "target": "{\"name\":\"edges\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"edges : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py:ActionGraph:execution_order", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_graph.py:ActionGraph:execution_order", "target": "{\"name\":\"execution_order\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"execution_order : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py:ActionGraph:nodes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_graph.py:ActionGraph:nodes", "target": "{\"name\":\"nodes\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"nodes : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py:ActionGraph:add_edge", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_graph.py:ActionGraph:add_edge", "target": "{\"name\":\"add_edge\",\"args\":[{\"name\":\"from_node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"from_node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]},{\"name\":\"to_node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"to_node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_edge(from_node: 'ActionNode', to_node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py:ActionGraph:add_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_graph.py:ActionGraph:add_node", "target": "{\"name\":\"add_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_node(node)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py:ActionGraph:topological_sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_graph.py:ActionGraph:topological_sort", "target": "{\"name\":\"topological_sort\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"topological_sort()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_node.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ReviewMode"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ReviseMode"}, {"predicate": "has_function", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:dict_to_markdown"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"name\":\"ActionNode\",\"package\":\"metagpt/actions/action_node.py:ActionNode\",\"attributes\":{\"children\":{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"example\":{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]},\"expected_type\":{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]},\"func\":{\"name\":\"func\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"func : Callable\",\"compositions\":[\"Callable\"]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]},\"instruction\":{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]},\"key\":{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"nexts\":{\"name\":\"nexts\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nexts : List['ActionNode']\",\"compositions\":[\"ActionNode\"]},\"params\":{\"name\":\"params\",\"type_\":\"Dict[str,Type]\",\"default_\":\"\",\"description\":\"params : Dict[str, Type]\",\"compositions\":[\"Type\"]},\"prevs\":{\"name\":\"prevs\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"prevs : List['ActionNode']\",\"compositions\":[\"ActionNode\"]},\"schema\":{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}},\"methods\":{\"add_child\":{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_children\":{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"add_next\":{\"name\":\"add_next\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_next(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_prev\":{\"name\":\"add_prev\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_prev(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"auto_review\":{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]},\"auto_revise\":{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"compile\":{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]},\"compile_example\":{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_instruction\":{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_to\":{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]},\"create_class\":{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]},\"create_model_class\":{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]},\"fill\":{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, images: Optional[Union[str, list[str]]], timeout, exclude)\",\"aggregations\":[]},\"from_children\":{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"from_pydantic\":{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]},\"get_child\":{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]},\"get_mapping\":{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"human_review\":{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]},\"human_revise\":{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]},\"keys\":{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]},\"review\":{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"revise\":{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]},\"set_recursive\":{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]},\"simple_fill\":{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, images: Optional[Union[str, list[str]]], timeout, exclude)\",\"aggregations\":[]},\"simple_review\":{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"simple_revise\":{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"tagging\":{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]},\"update_instruct_content\":{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}},\"compositions\":[\"ActionNode\",\"Type\",\"Callable\",\"BaseModel\"],\"aggregations\":[\"ReviseMode\",\"ReviewMode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:children"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:example"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:expected_type"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:func"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:instruct_content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:instruction"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:key"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:nexts"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:params"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:prevs"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:schema"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_child"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_children"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_next"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_prev"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:auto_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:auto_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_example"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_instruction"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_to"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_model_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:fill"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:from_children"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:from_pydantic"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_child"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:human_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:human_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:keys"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_llm"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_recursive"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_fill"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:tagging"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:to_dict"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:update_instruct_content"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:Type"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:BaseModel"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ReviseMode"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ReviewMode"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action.py:Action:node"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__init__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__repr__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_get_children_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_get_self_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_create_children_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_to_dict"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_compile_f"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_aask_v1"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"lineno\":122,\"end_lineno\":720,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionNode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"name\":\"ActionNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"children\",\"visibility\":\"+\",\"value_type\":\"dict[str,ActionNode]\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"example\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expected_type\",\"visibility\":\"+\",\"value_type\":\"Type\",\"default_value\":\"\"},{\"name\":\"func\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"},{\"name\":\"instruction\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"nexts\",\"visibility\":\"+\",\"value_type\":\"List[ActionNode]\",\"default_value\":\"\"},{\"name\":\"params\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Type]\",\"default_value\":\"\"},{\"name\":\"prevs\",\"visibility\":\"+\",\"value_type\":\"List[ActionNode]\",\"default_value\":\"\"},{\"name\":\"schema\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ActionNode"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:children", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:children", "target": "{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:context", "target": "{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:example", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:example", "target": "{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:expected_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:expected_type", "target": "{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:func", "target": "{\"name\":\"func\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"func : Callable\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:instruction", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:instruction", "target": "{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:key", "target": "{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:nexts", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:nexts", "target": "{\"name\":\"nexts\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nexts : List['ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:params", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:params", "target": "{\"name\":\"params\",\"type_\":\"Dict[str,Type]\",\"default_\":\"\",\"description\":\"params : Dict[str, Type]\",\"compositions\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:prevs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:prevs", "target": "{\"name\":\"prevs\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"prevs : List['ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:schema", "target": "{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_child", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:add_child", "target": "{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_children", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:add_children", "target": "{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_next", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:add_next", "target": "{\"name\":\"add_next\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_next(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_prev", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:add_prev", "target": "{\"name\":\"add_prev\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_prev(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:auto_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:auto_review", "target": "{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:auto_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:auto_revise", "target": "{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile", "target": "{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_example", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_example", "target": "{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_instruction", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_instruction", "target": "{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_to", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_to", "target": "{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_class", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:create_class", "target": "{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_model_class", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:create_model_class", "target": "{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:fill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:fill", "target": "{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, images: Optional[Union[str, list[str]]], timeout, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:from_children", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:from_children", "target": "{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:from_pydantic", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:from_pydantic", "target": "{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_child", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_child", "target": "{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_mapping", "target": "{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:human_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:human_review", "target": "{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:human_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:human_revise", "target": "{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:keys", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:keys", "target": "{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:review", "target": "{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:revise", "target": "{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_context", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_context", "target": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_llm", "target": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_recursive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_recursive", "target": "{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_fill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_fill", "target": "{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, images: Optional[Union[str, list[str]]], timeout, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_review", "target": "{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_revise", "target": "{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:tagging", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:tagging", "target": "{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:to_dict", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:to_dict", "target": "{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:update_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:update_instruct_content", "target": "{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_output.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_output.py", "target": "metagpt/actions/action_output.py:ActionOutput"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"name\":\"ActionOutput\",\"package\":\"metagpt/actions/action_output.py:ActionOutput\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}},\"methods\":{},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:instruct_content"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "?:BaseModel"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"lineno\":12,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionOutput\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"name\":\"ActionOutput\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/actions", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions", "target": ""}, {"predicate": "has_class", "source": "metagpt/actions", "target": "metagpt/actions:ActionType"}, {"predicate": "is", "source": "metagpt/actions:ActionType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions:ActionType", "target": "{\"name\":\"ActionType\",\"package\":\"metagpt/actions:ActionType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions:ActionType", "target": "metagpt/actions:ActionType:name"}, {"predicate": "has_class_view", "source": "metagpt/actions:ActionType", "target": "{\"name\":\"ActionType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions:ActionType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions:ActionType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/android_env/android_env.py", "target": "metagpt/environment/android_env/android_env.py:AndroidEnv"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv", "target": "{\"name\":\"AndroidEnv\",\"package\":\"metagpt/environment/android_env/android_env.py:AndroidEnv\",\"attributes\":{\"cols\":{\"name\":\"cols\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"cols : int\",\"compositions\":[]},\"rows\":{\"name\":\"rows\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"rows : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv", "target": "metagpt/environment/android_env/android_env.py:AndroidEnv:cols"}, {"predicate": "has_class_property", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv", "target": "metagpt/environment/android_env/android_env.py:AndroidEnv:rows"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv", "target": "metagpt/environment/base_env.py:Environment"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv", "target": "{\"lineno\":11,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AndroidEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv", "target": "{\"name\":\"AndroidEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cols\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"rows\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv:cols", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv:cols", "target": "{\"name\":\"cols\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"cols : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv:rows", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_env.py:AndroidEnv:rows", "target": "{\"name\":\"rows\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"rows : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/android_env/android_ext_env.py", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "{\"name\":\"AndroidExtEnv\",\"package\":\"metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv\",\"attributes\":{\"adb_prefix\":{\"name\":\"adb_prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix\",\"compositions\":[]},\"adb_prefix_shell\":{\"name\":\"adb_prefix_shell\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix_shell\",\"compositions\":[]},\"adb_prefix_si\":{\"name\":\"adb_prefix_si\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix_si\",\"compositions\":[]},\"device_id\":{\"name\":\"device_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"device_id : Optional[str]\",\"compositions\":[]},\"device_shape\":{\"name\":\"device_shape\",\"type_\":\"\",\"default_\":\"\",\"description\":\"device_shape\",\"compositions\":[]},\"height\":{\"name\":\"height\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"height : int\",\"compositions\":[]},\"screenshot_dir\":{\"name\":\"screenshot_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"screenshot_dir : Optional[Path]\",\"compositions\":[\"Path\"]},\"width\":{\"name\":\"width\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"width : int\",\"compositions\":[]},\"xml_dir\":{\"name\":\"xml_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"xml_dir : Optional[Path]\",\"compositions\":[\"Path\"]}},\"methods\":{\"execute_adb_with_cmd\":{\"name\":\"execute_adb_with_cmd\",\"args\":[{\"name\":\"adb_cmd\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"adb_cmd: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"execute_adb_with_cmd(adb_cmd: str): str\",\"aggregations\":[]},\"get_screenshot\":{\"name\":\"get_screenshot\",\"args\":[{\"name\":\"ss_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ss_name: str\",\"compositions\":[]},{\"name\":\"local_save_dir\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_save_dir: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"get_screenshot(ss_name: str, local_save_dir: Path): Path\",\"aggregations\":[\"Path\"]},\"get_xml\":{\"name\":\"get_xml\",\"args\":[{\"name\":\"xml_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"xml_name: str\",\"compositions\":[]},{\"name\":\"local_save_dir\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_save_dir: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"get_xml(xml_name: str, local_save_dir: Path): Path\",\"aggregations\":[\"Path\"]},\"list_devices\":{\"name\":\"list_devices\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"list_devices()\",\"aggregations\":[]},\"system_back\":{\"name\":\"system_back\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"system_back(): str\",\"aggregations\":[]},\"system_tap\":{\"name\":\"system_tap\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"system_tap(x: int, y: int): str\",\"aggregations\":[]},\"user_input\":{\"name\":\"user_input\",\"args\":[{\"name\":\"input_txt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_txt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_input(input_txt: str): str\",\"aggregations\":[]},\"user_longpress\":{\"name\":\"user_longpress\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]},{\"name\":\"duration\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"duration: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_longpress(x: int, y: int, duration: int): str\",\"aggregations\":[]},\"user_swipe\":{\"name\":\"user_swipe\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]},{\"name\":\"orient\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"orient: str\",\"compositions\":[]},{\"name\":\"dist\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dist: str\",\"compositions\":[]},{\"name\":\"if_quick\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"if_quick: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_swipe(x: int, y: int, orient: str, dist: str, if_quick: bool): str\",\"aggregations\":[]},\"user_swipe_to\":{\"name\":\"user_swipe_to\",\"args\":[{\"name\":\"start\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"start: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"end\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"end: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"duration\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"duration: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"user_swipe_to(start: tuple[int, int], end: tuple[int, int], duration: int)\",\"aggregations\":[\"tuple\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"tuple\"]}"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_shell"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_si"}, {"predicate": "has_class_property", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_id"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_shape"}, {"predicate": "has_class_property", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:height"}, {"predicate": "has_class_property", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:screenshot_dir"}, {"predicate": "has_class_property", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:width"}, {"predicate": "has_class_property", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:xml_dir"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:execute_adb_with_cmd"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:get_screenshot"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:get_xml"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:list_devices"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:system_back"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:system_tap"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_input"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_longpress"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_swipe"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_swipe_to"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "?:tuple"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/base_env.py:ExtEnv"}, {"predicate": "has_class_method", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:__init__"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "{\"lineno\":15,\"end_lineno\":157,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AndroidExtEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv", "target": "{\"name\":\"AndroidExtEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"adb_prefix\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"adb_prefix_shell\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"adb_prefix_si\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"device_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"device_shape\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"height\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"screenshot_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"width\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"xml_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix", "target": "{\"name\":\"adb_prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_shell", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_shell", "target": "{\"name\":\"adb_prefix_shell\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix_shell\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_shell", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_si", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_si", "target": "{\"name\":\"adb_prefix_si\",\"type_\":\"\",\"default_\":\"\",\"description\":\"adb_prefix_si\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:adb_prefix_si", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_id", "target": "{\"name\":\"device_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"device_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_shape", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_shape", "target": "{\"name\":\"device_shape\",\"type_\":\"\",\"default_\":\"\",\"description\":\"device_shape\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:device_shape", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:height", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:height", "target": "{\"name\":\"height\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"height : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:screenshot_dir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:screenshot_dir", "target": "{\"name\":\"screenshot_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"screenshot_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:width", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:width", "target": "{\"name\":\"width\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"width : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:xml_dir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:xml_dir", "target": "{\"name\":\"xml_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"xml_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:execute_adb_with_cmd", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:execute_adb_with_cmd", "target": "{\"name\":\"execute_adb_with_cmd\",\"args\":[{\"name\":\"adb_cmd\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"adb_cmd: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"execute_adb_with_cmd(adb_cmd: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:get_screenshot", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:get_screenshot", "target": "{\"name\":\"get_screenshot\",\"args\":[{\"name\":\"ss_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ss_name: str\",\"compositions\":[]},{\"name\":\"local_save_dir\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_save_dir: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"get_screenshot(ss_name: str, local_save_dir: Path): Path\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:get_xml", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:get_xml", "target": "{\"name\":\"get_xml\",\"args\":[{\"name\":\"xml_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"xml_name: str\",\"compositions\":[]},{\"name\":\"local_save_dir\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_save_dir: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"get_xml(xml_name: str, local_save_dir: Path): Path\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:list_devices", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:list_devices", "target": "{\"name\":\"list_devices\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"list_devices()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:system_back", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:system_back", "target": "{\"name\":\"system_back\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"system_back(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:system_tap", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:system_tap", "target": "{\"name\":\"system_tap\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"system_tap(x: int, y: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_input", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_input", "target": "{\"name\":\"user_input\",\"args\":[{\"name\":\"input_txt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_txt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_input(input_txt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_longpress", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_longpress", "target": "{\"name\":\"user_longpress\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]},{\"name\":\"duration\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"duration: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_longpress(x: int, y: int, duration: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_swipe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_swipe", "target": "{\"name\":\"user_swipe\",\"args\":[{\"name\":\"x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"x: int\",\"compositions\":[]},{\"name\":\"y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"y: int\",\"compositions\":[]},{\"name\":\"orient\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"orient: str\",\"compositions\":[]},{\"name\":\"dist\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dist: str\",\"compositions\":[]},{\"name\":\"if_quick\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"if_quick: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"user_swipe(x: int, y: int, orient: str, dist: str, if_quick: bool): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_swipe_to", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:user_swipe_to", "target": "{\"name\":\"user_swipe_to\",\"args\":[{\"name\":\"start\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"start: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"end\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"end: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"duration\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"duration: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"user_swipe_to(start: tuple[int, int], end: tuple[int, int], duration: int)\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"name\":\"ApiType\",\"package\":\"metagpt/provider/general_api_base.py:ApiType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"from_str\":{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "metagpt/provider/general_api_base.py:ApiType:name"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "metagpt/provider/general_api_base.py:ApiType:from_str"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"lineno\":52,\"end_lineno\":68,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ApiType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"name\":\"ApiType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType:from_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType:from_str", "target": "{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/architect.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/architect.py", "target": "metagpt/roles/architect.py:Architect"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect", "target": "{\"name\":\"Architect\",\"package\":\"metagpt/roles/architect.py:Architect\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:__init__"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:Architect", "target": "{\"lineno\":14,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Architect\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/architect.py:Architect", "target": "{\"name\":\"Architect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/skill_action.py", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "has_class", "source": "metagpt/actions/skill_action.py", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"name\":\"ArgumentsParingAction\",\"package\":\"metagpt/actions/skill_action.py:ArgumentsParingAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"parse_arguments\":{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:args"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"lineno\":24,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ArgumentsParingAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"name\":\"ArgumentsParingAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict]\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:args", "target": "{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask", "target": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill", "target": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments", "target": "{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/assistant.py", "target": "metagpt/roles/assistant.py:Assistant"}, {"predicate": "has_class", "source": "metagpt/roles/assistant.py", "target": "metagpt/roles/assistant.py:MessageType"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"name\":\"Assistant\",\"package\":\"metagpt/roles/assistant.py:Assistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]},\"get_memory\":{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]},\"load_memory\":{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]},\"refine_memory\":{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]},\"skill_handler\":{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]},\"talk\":{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]},\"talk_handler\":{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}},\"compositions\":[\"SkillsDeclaration\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:skills"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:act"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:get_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:load_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:refine_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:skill_handler"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:talk"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:talk_handler"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:think"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "is_composite_of", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:_plan"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"lineno\":37,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Assistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"name\":\"Assistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"Optional[SkillsDeclaration]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "?:SkillsDeclaration"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:memory", "target": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:skills", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:skills", "target": "{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:act", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:act", "target": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:get_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:get_memory", "target": "{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:load_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:load_memory", "target": "{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:refine_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:refine_memory", "target": "{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:skill_handler", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:skill_handler", "target": "{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:talk", "target": "{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:talk_handler", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:talk_handler", "target": "{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:think", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:think", "target": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"name\":\"AsyncSSEClient\",\"package\":\"metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient\",\"attributes\":{},\"methods\":{\"stream\":{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"lineno\":10,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AsyncSSEClient\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"name\":\"AsyncSSEClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream", "target": "{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/context.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/context.py", "target": "metagpt/context.py:AttrDict"}, {"predicate": "has_class", "source": "metagpt/context.py", "target": "metagpt/context.py:Context"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict", "target": "{\"name\":\"AttrDict\",\"package\":\"metagpt/context.py:AttrDict\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]},\"remove\":{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:model_config"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:get"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:remove"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:set"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:Context:kwargs"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__init__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__getattr__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__setattr__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__delattr__"}, {"predicate": "has_page_info", "source": "metagpt/context.py:AttrDict", "target": "{\"lineno\":23,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AttrDict\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context.py:AttrDict", "target": "{\"name\":\"AttrDict\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:remove", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:remove", "target": "{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:AudioData"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus"}, {"predicate": "has_function", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"name\":\"AudioData\",\"package\":\"metagpt/tools/iflytek_tts.py:AudioData\",\"attributes\":{\"audio\":{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]},\"ced\":{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:audio"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:ced"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:status"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"lineno\":35,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AudioData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"name\":\"AudioData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"audio\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ced\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:audio", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:audio", "target": "{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:ced", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:ced", "target": "{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:status", "target": "{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/azure_openai_api.py", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"name\":\"AzureOpenAILLM\",\"package\":\"metagpt/provider/azure_openai_api.py:AzureOpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AsyncAzureOpenAI\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:pricing_plan"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "?:AsyncAzureOpenAI"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client"}, {"predicate": "has_class_method", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"lineno\":18,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureOpenAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"name\":\"AzureOpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncAzureOpenAI\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:pricing_plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:pricing_plan", "target": "{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/azure_tts.py", "target": "metagpt/tools/azure_tts.py:AzureTTS"}, {"predicate": "has_function", "source": "metagpt/tools/azure_tts.py", "target": "metagpt/tools/azure_tts.py:oas3_azsure_tts"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"name\":\"AzureTTS\",\"package\":\"metagpt/tools/azure_tts.py:AzureTTS\",\"attributes\":{\"region\":{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]},\"subscription_key\":{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}},\"methods\":{\"role_style_text\":{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]},\"role_text\":{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]},\"style_text\":{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]},\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:region"}, {"predicate": "has_class_property", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:role_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:style_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"lineno\":19,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureTTS\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"name\":\"AzureTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"region\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"subscription_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:region", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:region", "target": "{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key", "target": "{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text", "target": "{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_text", "target": "{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:style_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:style_text", "target": "{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech", "target": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:EnronTemplate"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"name\":\"BEAGECTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:BEAGECTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"lineno\":95,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BEAGECTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"name\":\"BEAGECTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/tot.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:BFSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:TreeofThought:Config"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:DFSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:MCTSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"name\":\"BFSSolver\",\"package\":\"metagpt/strategy/tot.py:BFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"generate_and_evaluate_nodes\":{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:_bfs_build"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"lineno\":126,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BFSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"name\":\"BFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes", "target": "{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BaseContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BaseContext", "target": "{\"name\":\"BaseContext\",\"package\":\"metagpt/schema.py:BaseContext\",\"attributes\":{},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}},\"compositions\":[],\"aggregations\":[\"T\"]}"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:BaseContext", "target": "metagpt/schema.py:BaseContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:BaseContext", "target": "?:T"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:BaseContext", "target": "{\"lineno\":603,\"end_lineno\":608,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:BaseContext", "target": "{\"name\":\"BaseContext\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BaseContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BaseContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/base.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:BaseEvaluator"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:BaseParser"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:ThoughtNode"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:ThoughtTree"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"name\":\"BaseEvaluator\",\"package\":\"metagpt/strategy/base.py:BaseEvaluator\",\"attributes\":{},\"methods\":{\"status_verify\":{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:status_verify"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:__call__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseEvaluator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"name\":\"BaseEvaluator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify", "target": "{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/base_llm.py", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"name\":\"BaseLLM\",\"package\":\"metagpt/provider/base_llm.py:BaseLLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"pricing_plan : Optional[str]\",\"compositions\":[]},\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], images: Optional[Union[str, list[str]]], timeout, stream): str\",\"aggregations\":[]},\"aask_batch\":{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]},\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code (messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion (messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text (messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"get_choice_delta_text\":{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]},\"get_choice_function\":{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]},\"messages_to_dict\":{\"name\":\"messages_to_dict\",\"args\":[{\"name\":\"messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"messages_to_dict(messages)\",\"aggregations\":[]},\"messages_to_prompt\":{\"name\":\"messages_to_prompt\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"messages_to_prompt(messages: list[dict])\",\"aggregations\":[]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:pricing_plan"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:system_prompt"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask_batch"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask_code"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:messages_to_dict"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:messages_to_prompt"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:AsyncOpenAI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action_node.py:ActionNode:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/solver.py:BaseSolver:llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/moderation.py:Moderation"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/moderation.py:Moderation:llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"predicate": "is_composite_of", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_user_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_user_msg_with_imgs"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_system_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_update_costs"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"lineno\":25,\"end_lineno\":197,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"name\":\"BaseLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[AsyncOpenAI]]\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:CostManager"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:model", "target": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:pricing_plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:pricing_plan", "target": "{\"name\":\"pricing_plan\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"pricing_plan : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:system_prompt", "target": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"images\",\"type_\":\"Optional[Union[str,list[str]]]\",\"default_\":\"\",\"description\":\"images: Optional[Union[str, list[str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], images: Optional[Union[str, list[str]]], timeout, stream): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_batch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_batch", "target": "{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_code", "target": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code (messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion (messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text (messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text", "target": "{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function", "target": "{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments", "target": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:messages_to_dict", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:messages_to_dict", "target": "{\"name\":\"messages_to_dict\",\"args\":[{\"name\":\"messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"messages_to_dict(messages)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:messages_to_prompt", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:messages_to_prompt", "target": "{\"name\":\"messages_to_prompt\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"messages_to_prompt(messages: list[dict])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"name\":\"BaseParser\",\"package\":\"metagpt/strategy/base.py:BaseParser\",\"attributes\":{},\"methods\":{\"propose\":{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose (current_state: str): str\",\"aggregations\":[]},\"sample\":{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample (current_state: str): str\",\"aggregations\":[]},\"value\":{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value (input: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:propose"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:sample"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:value"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:__call__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"name\":\"BaseParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:propose", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:propose", "target": "{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose (current_state: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:sample", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:sample", "target": "{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample (current_state: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:value", "target": "{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value (input: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"name\":\"BasePostProcessPlugin\",\"package\":\"metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin\",\"attributes\":{\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_extract_content_from_output\":{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]},\"run_repair_llm_output\":{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_repair_llm_raw_output\":{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]},\"run_retry_parse_json_text\":{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"lineno\":15,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BasePostProcessPlugin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"name\":\"BasePostProcessPlugin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output", "target": "{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output", "target": "{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output", "target": "{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text", "target": "{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/solver.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/solver.py", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/solver.py", "target": "metagpt/strategy/solver.py:COTSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/solver.py", "target": "metagpt/strategy/solver.py:CodeInterpreterSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/solver.py", "target": "metagpt/strategy/solver.py:IOSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/solver.py", "target": "metagpt/strategy/solver.py:NaiveSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/solver.py", "target": "metagpt/strategy/solver.py:ReActSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/solver.py", "target": "metagpt/strategy/solver.py:TOTSolver"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "{\"name\":\"BaseSolver\",\"package\":\"metagpt/strategy/solver.py:BaseSolver\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"graph\":{\"name\":\"graph\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"search_space\":{\"name\":\"search_space\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_space\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "metagpt/strategy/solver.py:BaseSolver:context"}, {"predicate": "has_class_property", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "metagpt/strategy/solver.py:BaseSolver:graph"}, {"predicate": "has_class_property", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "metagpt/strategy/solver.py:BaseSolver:llm"}, {"predicate": "has_class_property", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "metagpt/strategy/solver.py:BaseSolver:search_space"}, {"predicate": "has_class_method", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "metagpt/strategy/solver.py:BaseSolver:solve"}, {"predicate": "has_class_method", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "metagpt/strategy/solver.py:BaseSolver:__init__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "{\"lineno\":15,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/solver.py:BaseSolver", "target": "{\"name\":\"BaseSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"search_space\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:BaseSolver:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:BaseSolver:context", "target": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:BaseSolver:graph", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:BaseSolver:graph", "target": "{\"name\":\"graph\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:BaseSolver:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:BaseSolver:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:BaseSolver:search_space", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:BaseSolver:search_space", "target": "{\"name\":\"search_space\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_space\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:BaseSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:BaseSolver:solve", "target": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/base_store.py", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class", "source": "metagpt/document_store/base_store.py", "target": "metagpt/document_store/base_store.py:LocalStore"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"name\":\"BaseStore\",\"package\":\"metagpt/document_store/base_store.py:BaseStore\",\"attributes\":{},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search ()\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"lineno\":12,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"name\":\"BaseStore\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:add", "target": "{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:search", "target": "{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/brain_memory.py", "target": "metagpt/memory/brain_memory.py:BrainMemory"}, {"predicate": "has_class", "source": "metagpt/memory/brain_memory.py", "target": "metagpt/memory/brain_memory.py:BrainMemory:Config"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"name\":\"BrainMemory\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory\",\"attributes\":{\"cacheable\":{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]},\"historical_summary\":{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]},\"history_text\":{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]},\"is_dirty\":{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]},\"is_history_available\":{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]},\"last_history_id\":{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]},\"last_talk\":{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"add_answer\":{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_history\":{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_talk\":{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]},\"dumps\":{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]},\"exists\":{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]},\"extract_info\":{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]},\"get_knowledge\":{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]},\"get_title\":{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]},\"is_related\":{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]},\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]},\"pop_last_talk\":{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]},\"rewrite\":{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]},\"set_history_summary\":{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]},\"split_texts\":{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]},\"summarize\":{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]},\"to_int\":{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]},\"to_metagpt_history_format\":{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]},\"to_redis_key\":{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"BaseLLM\"],\"aggregations\":[\"BrainMemory\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:cacheable"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:history"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:history_text"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:knowledge"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:last_talk"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:llm"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_answer"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_history"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_talk"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:dumps"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:exists"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:extract_info"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:get_title"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:loads"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:split_texts"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_int"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:BrainMemory"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/roles/assistant.py:Assistant"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/roles/assistant.py:Assistant:memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/schema.py:Message"}, {"predicate": "is_composite_of", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"lineno\":26,\"end_lineno\":338,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrainMemory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"name\":\"BrainMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cacheable\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"historical_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"history_text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_dirty\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_history_available\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"last_history_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"last_talk\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:cacheable", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:cacheable", "target": "{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary", "target": "{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:history", "target": "{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty", "target": "{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:knowledge", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:knowledge", "target": "{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id", "target": "{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_talk", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_talk", "target": "{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:llm", "target": "{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_answer", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_answer", "target": "{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_history", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_history", "target": "{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_talk", "target": "{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:dumps", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:dumps", "target": "{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:exists", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:exists", "target": "{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:extract_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:extract_info", "target": "{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge", "target": "{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_title", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_title", "target": "{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_related", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_related", "target": "{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk", "target": "{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:rewrite", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:rewrite", "target": "{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary", "target": "{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:split_texts", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:split_texts", "target": "{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:summarize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:summarize", "target": "{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_int", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_int", "target": "{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format", "target": "{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key", "target": "{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/browser_config.py", "target": "metagpt/configs/browser_config.py:BrowserConfig"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"name\":\"BrowserConfig\",\"package\":\"metagpt/configs/browser_config.py:BrowserConfig\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit','chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit', 'chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:browser_type"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/config2.py:Config:browser"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrowserConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"name\":\"BrowserConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit','chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:browser_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:browser_type", "target": "{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit','chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit', 'chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BugFixContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BugFixContext", "target": "{\"name\":\"BugFixContext\",\"package\":\"metagpt/schema.py:BugFixContext\",\"attributes\":{\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:BugFixContext", "target": "metagpt/schema.py:BugFixContext:filename"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:BugFixContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:BugFixContext", "target": "{\"lineno\":666,\"end_lineno\":667,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BugFixContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:BugFixContext", "target": "{\"name\":\"BugFixContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BugFixContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BugFixContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/config2.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/config2.py", "target": "metagpt/config2.py:CLIParams"}, {"predicate": "has_class", "source": "metagpt/config2.py", "target": "metagpt/config2.py:Config"}, {"predicate": "has_function", "source": "metagpt/config2.py", "target": "metagpt/config2.py:merge_dict"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams", "target": "{\"name\":\"CLIParams\",\"package\":\"metagpt/config2.py:CLIParams\",\"attributes\":{\"git_reinit\":{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}},\"methods\":{\"check_project_path\":{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:git_reinit"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:inc"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:max_auto_summarize_code"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:project_name"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:project_path"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:reqa_file"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:check_project_path"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:CLIParams", "target": "{\"lineno\":25,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CLIParams\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config2.py:CLIParams", "target": "{\"name\":\"CLIParams\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"git_reinit\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:git_reinit", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:git_reinit", "target": "{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:inc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:inc", "target": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:max_auto_summarize_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:max_auto_summarize_code", "target": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:reqa_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:reqa_file", "target": "{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:check_project_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:check_project_path", "target": "{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:COTSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:COTSolver", "target": "{\"name\":\"COTSolver\",\"package\":\"metagpt/strategy/solver.py:COTSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/solver.py:COTSolver", "target": "metagpt/strategy/solver.py:COTSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/solver.py:COTSolver", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:COTSolver", "target": "{\"lineno\":73,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"COTSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/solver.py:COTSolver", "target": "{\"name\":\"COTSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:COTSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:COTSolver:solve", "target": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:CatCount"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:CatCross"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:GeneralSelection"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:GroupStat"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:SplitBins"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection"}, {"predicate": "has_class", "source": "metagpt/tools/libs/feature_engineering.py", "target": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "{\"name\":\"CatCount\",\"package\":\"metagpt/tools/libs/feature_engineering.py:CatCount\",\"attributes\":{\"col\":{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]},\"encoder_dict\":{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "metagpt/tools/libs/feature_engineering.py:CatCount:col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "metagpt/tools/libs/feature_engineering.py:CatCount:encoder_dict"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "metagpt/tools/libs/feature_engineering.py:CatCount:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "metagpt/tools/libs/feature_engineering.py:CatCount:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "metagpt/tools/libs/feature_engineering.py:CatCount:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "{\"lineno\":71,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CatCount\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:CatCount", "target": "{\"name\":\"CatCount\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"encoder_dict\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:col", "target": "{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:encoder_dict", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:encoder_dict", "target": "{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "{\"name\":\"CatCross\",\"package\":\"metagpt/tools/libs/feature_engineering.py:CatCross\",\"attributes\":{\"cols\":{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]},\"combs\":{\"name\":\"combs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"combs : list\",\"compositions\":[]},\"combs_map\":{\"name\":\"combs_map\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"combs_map : dict\",\"compositions\":[]},\"max_cat_num\":{\"name\":\"max_cat_num\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_cat_num : int\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/feature_engineering.py:CatCross:cols"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/feature_engineering.py:CatCross:combs"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/feature_engineering.py:CatCross:combs_map"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/feature_engineering.py:CatCross:max_cat_num"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/feature_engineering.py:CatCross:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/feature_engineering.py:CatCross:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/feature_engineering.py:CatCross:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "metagpt/tools/libs/feature_engineering.py:CatCross:_cross_two"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "{\"lineno\":163,\"end_lineno\":216,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CatCross\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:CatCross", "target": "{\"name\":\"CatCross\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"combs\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"combs_map\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"max_cat_num\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:cols", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:cols", "target": "{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:combs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:combs", "target": "{\"name\":\"combs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"combs : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:combs_map", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:combs_map", "target": "{\"name\":\"combs_map\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"combs_map : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:max_cat_num", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:max_cat_num", "target": "{\"name\":\"max_cat_num\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_cat_num : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/git_repository.py", "target": "metagpt/utils/git_repository.py:ChangeType"}, {"predicate": "has_class", "source": "metagpt/utils/git_repository.py", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"name\":\"ChangeType\",\"package\":\"metagpt/utils/git_repository.py:ChangeType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "metagpt/utils/git_repository.py:ChangeType:name"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"lineno\":25,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChangeType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"name\":\"ChangeType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:ChangeType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:ChangeType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/chromadb_store.py", "target": "metagpt/document_store/chromadb_store.py:ChromaStore"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"name\":\"ChromaStore\",\"package\":\"metagpt/document_store/chromadb_store.py:ChromaStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"collection\":{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:client"}, {"predicate": "has_class_property", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/management/skill_manager.py:SkillManager"}, {"predicate": "isCompositeOn", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/management/skill_manager.py:SkillManager:_store"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"lineno\":11,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChromaStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"name\":\"ChromaStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"collection\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:client", "target": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:collection", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:collection", "target": "{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/anthropic_api.py", "target": "metagpt/provider/anthropic_api.py:Claude2"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"name\":\"Claude2\",\"package\":\"metagpt/provider/anthropic_api.py:Claude2\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:ask"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Claude2\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"name\":\"Claude2\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:ask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:ask", "target": "{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/repo_parser.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:CodeBlockInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassMethod"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassRelationship"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotReturn"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:RepoFileInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:RepoParser"}, {"predicate": "has_function", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:is_func"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"name\":\"CodeBlockInfo\",\"package\":\"metagpt/repo_parser.py:CodeBlockInfo\",\"attributes\":{\"end_lineno\":{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]},\"lineno\":{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]},\"properties\":{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]},\"tokens\":{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]},\"type_name\":{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:lineno"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:properties"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:tokens"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:type_name"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"lineno\":49,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeBlockInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"name\":\"CodeBlockInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"end_lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"properties\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"tokens\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"type_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno", "target": "{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:lineno", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:lineno", "target": "{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:properties", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:properties", "target": "{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:tokens", "target": "{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:type_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:type_name", "target": "{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:CodeInterpreterSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:CodeInterpreterSolver", "target": "{\"name\":\"CodeInterpreterSolver\",\"package\":\"metagpt/strategy/solver.py:CodeInterpreterSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/solver.py:CodeInterpreterSolver", "target": "metagpt/strategy/solver.py:CodeInterpreterSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/solver.py:CodeInterpreterSolver", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:CodeInterpreterSolver", "target": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeInterpreterSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/solver.py:CodeInterpreterSolver", "target": "{\"name\":\"CodeInterpreterSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:CodeInterpreterSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:CodeInterpreterSolver:solve", "target": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/common.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:CodeParser"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:NoMoneyException"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:OutputParser"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:check_cmd_exists"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:require_python_version"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:print_members"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:get_function_schema"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:parse_recipient"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:create_func_call_config"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:remove_comments"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:get_class_name"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_str"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_str_set"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:is_send_to"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_name"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:concat_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:split_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:auto_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:add_affix"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:remove_affix"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:general_after_log"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_json_file"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:write_json_file"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_csv_to_list"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:import_class"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:import_class_inst"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:format_trackback_info"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:serialize_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:role_raise_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:aread"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:awrite"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_file_block"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:list_files"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:parse_json_code_block"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:remove_white_spaces"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:aread_bin"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:awrite_bin"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:is_coroutine_func"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:load_mc_skills_code"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:encode_image"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:decode_image"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"name\":\"CodeParser\",\"package\":\"metagpt/utils/common.py:CodeParser\",\"attributes\":{},\"methods\":{\"parse_block\":{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_block"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_blocks"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_file_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_str"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"lineno\":240,\"end_lineno\":310,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"name\":\"CodeParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_block", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_block", "target": "{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_blocks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_blocks", "target": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_code", "target": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_file_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_file_list", "target": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_str", "target": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"name\":\"CodePlanAndChangeContext\",\"package\":\"metagpt/schema.py:CodePlanAndChangeContext\",\"attributes\":{\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"prd_filename\":{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:design_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:requirement"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:task_filename"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "?:CodePlanAndChangeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"lineno\":670,\"end_lineno\":690,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodePlanAndChangeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"name\":\"CodePlanAndChangeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:design_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:design_filename", "target": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename", "target": "{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:requirement", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:requirement", "target": "{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:task_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:task_filename", "target": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"name\":\"CodeSummarizeContext\",\"package\":\"metagpt/schema.py:CodeSummarizeContext\",\"attributes\":{\"codes_filenames\":{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]},\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:codes_filenames"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:design_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:reason"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:task_filename"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "?:CodeSummarizeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:__hash__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"lineno\":644,\"end_lineno\":663,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeSummarizeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"name\":\"CodeSummarizeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"codes_filenames\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:codes_filenames", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:codes_filenames", "target": "{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:design_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:design_filename", "target": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:reason", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:reason", "target": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:task_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:task_filename", "target": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext", "target": "{\"name\":\"CodingContext\",\"package\":\"metagpt/schema.py:CodingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"code_plan_and_change_doc\":{\"name\":\"code_plan_and_change_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_plan_and_change_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"design_doc\":{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"task_doc\":{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:code_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:code_plan_and_change_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:design_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:task_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodingContext", "target": "?:Document"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodingContext", "target": "{\"lineno\":611,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodingContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodingContext", "target": "{\"name\":\"CodingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"design_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:code_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:code_doc", "target": "{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:code_plan_and_change_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:code_plan_and_change_doc", "target": "{\"name\":\"code_plan_and_change_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_plan_and_change_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:design_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:design_doc", "target": "{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:task_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:task_doc", "target": "{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/research.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:CollectLinks"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:ConductResearch"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "has_function", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:get_research_system_text"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"name\":\"CollectLinks\",\"package\":\"metagpt/actions/research.py:CollectLinks\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"rank_func\":{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]},\"search_func\":{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]},\"validate_engine_and_run_func\":{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"SearchEngine\"],\"aggregations\":[\"str\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:rank_func"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:search_func"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:validate_engine_and_run_func"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "?:Callable"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "?:str\\"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"lineno\":78,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CollectLinks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"name\":\"CollectLinks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rank_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[list[str]],None]]\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"},{\"name\":\"search_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "?:SearchEngine"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:rank_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:rank_func", "target": "{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:search_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:search_func", "target": "{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:validate_engine_and_run_func", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:validate_engine_and_run_func", "target": "{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Components"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Entity"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Example"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Parameter"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Returns"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Components", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"name\":\"Components\",\"package\":\"metagpt/learn/skill_loader.py:Components\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"lineno\":58,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Components\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"name\":\"Components\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"name\":\"ConductResearch\",\"package\":\"metagpt/actions/research.py:ConductResearch\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"lineno\":248,\"end_lineno\":273,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ConductResearch\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"name\":\"ConductResearch\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:ConductResearch:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/config2.py:Config\",\"attributes\":{\"azure_tts_region\":{\"name\":\"azure_tts_region\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"azure_tts_region : str\",\"compositions\":[]},\"azure_tts_subscription_key\":{\"name\":\"azure_tts_subscription_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"azure_tts_subscription_key : str\",\"compositions\":[]},\"browser\":{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]},\"code_review_k_times\":{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]},\"enable_longterm_memory\":{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]},\"iflytek_api_key\":{\"name\":\"iflytek_api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_api_key : str\",\"compositions\":[]},\"iflytek_api_secret\":{\"name\":\"iflytek_api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_api_secret : str\",\"compositions\":[]},\"iflytek_app_id\":{\"name\":\"iflytek_app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_app_id : str\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]},\"mermaid\":{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]},\"metagpt_tti_url\":{\"name\":\"metagpt_tti_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"metagpt_tti_url : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]},\"redis\":{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]},\"redis_key\":{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]},\"repair_llm_output\":{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},\"s3\":{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]},\"search\":{\"name\":\"search\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search\",\"compositions\":[]},\"workspace\":{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}},\"methods\":{\"default\":{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]},\"from_home\":{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]},\"get_azure_llm\":{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"get_openai_llm\":{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"update_via_cli\":{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\",\"S3Config\"],\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:azure_tts_region"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:azure_tts_subscription_key"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:browser"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:code_review_k_times"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:enable_longterm_memory"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:iflytek_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:iflytek_api_secret"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:iflytek_app_id"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:inc"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:language"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:llm"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:max_auto_summarize_code"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:mermaid"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:metagpt_tti_url"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:project_name"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:project_path"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:prompt_schema"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:proxy"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:redis"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:redis_key"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:repair_llm_output"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:reqa_file"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:s3"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:search"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:workspace"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:default"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:from_home"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:get_azure_llm"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:get_openai_llm"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:update_via_cli"}, {"predicate": "isAggregateOf", "source": "metagpt/config2.py:Config", "target": "?:LLMConfig"}, {"predicate": "isGeneralizeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:CLIParams"}, {"predicate": "isGeneralizeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/config2.py:Config", "target": "metagpt/context.py:Context:config"}, {"predicate": "is_composite_of", "source": "metagpt/config2.py:Config", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "is_composite_of", "source": "metagpt/config2.py:Config", "target": "metagpt/configs/s3_config.py:S3Config"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:Config", "target": "{\"lineno\":44,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Config\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config2.py:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"azure_tts_region\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"azure_tts_subscription_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_review_k_times\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"enable_longterm_memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"iflytek_api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"iflytek_api_secret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"iflytek_app_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metagpt_tti_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"Literal['json','markdown','raw']\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"redis\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"},{\"name\":\"redis_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"repair_llm_output\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"s3\",\"visibility\":\"+\",\"value_type\":\"Optional[S3Config]\",\"default_value\":\"\"},{\"name\":\"search\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "?:RedisConfig"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "?:S3Config"}, {"predicate": "is", "source": "metagpt/config2.py:Config:azure_tts_region", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:azure_tts_region", "target": "{\"name\":\"azure_tts_region\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"azure_tts_region : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:azure_tts_subscription_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:azure_tts_subscription_key", "target": "{\"name\":\"azure_tts_subscription_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"azure_tts_subscription_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:browser", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:browser", "target": "{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:code_review_k_times", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:code_review_k_times", "target": "{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:enable_longterm_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:enable_longterm_memory", "target": "{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:iflytek_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:iflytek_api_key", "target": "{\"name\":\"iflytek_api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:iflytek_api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:iflytek_api_secret", "target": "{\"name\":\"iflytek_api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_api_secret : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:iflytek_app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:iflytek_app_id", "target": "{\"name\":\"iflytek_app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"iflytek_app_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:inc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:inc", "target": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:max_auto_summarize_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:max_auto_summarize_code", "target": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:mermaid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:mermaid", "target": "{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:metagpt_tti_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:metagpt_tti_url", "target": "{\"name\":\"metagpt_tti_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"metagpt_tti_url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:redis", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:redis", "target": "{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:redis_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:redis_key", "target": "{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:repair_llm_output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:repair_llm_output", "target": "{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:reqa_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:reqa_file", "target": "{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:s3", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:s3", "target": "{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:search", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:search", "target": "{\"name\":\"search\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:workspace", "target": "{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:default", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:default", "target": "{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:from_home", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:from_home", "target": "{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:get_azure_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:get_azure_llm", "target": "{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:get_openai_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:get_openai_llm", "target": "{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:update_via_cli", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:update_via_cli", "target": "{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:Usage"}, {"predicate": "has_function", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config\",\"attributes\":{\"alias\":{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"alias\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias", "target": "{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed"}, {"predicate": "has_class_view", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed", "target": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/strategy/tot.py:TreeofThought:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed", "target": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context", "target": "{\"name\":\"Context\",\"package\":\"metagpt/context.py:Context\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]},\"kwargs\":{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}},\"methods\":{\"llm\":{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]},\"llm_with_cost_manager_from_llm_config\":{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"LLMConfig\",\"BaseLLM\"]},\"new_environ\":{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}},\"compositions\":[\"GitRepository\",\"ProjectRepo\",\"Path\"],\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:config"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:git_repo"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:kwargs"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:model_config"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:repo"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:src_workspace"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:llm"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:new_environ"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/context.py:Context", "target": "?:BaseLLM"}, {"predicate": "isAggregateOf", "source": "metagpt/context.py:Context", "target": "?:LLMConfig"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "metagpt/environment/base_env.py:Environment"}, {"predicate": "isCompositeOn", "source": "metagpt/context.py:Context", "target": "metagpt/environment/base_env.py:Environment:context"}, {"predicate": "is_composite_of", "source": "metagpt/context.py:Context", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "is_composite_of", "source": "metagpt/context.py:Context", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "has_page_info", "source": "metagpt/context.py:Context", "target": "{\"lineno\":55,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Context\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context.py:Context", "target": "{\"name\":\"Context\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"Optional[GitRepository]\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"Optional[ProjectRepo]\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:GitRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:ProjectRepo"}, {"predicate": "is", "source": "metagpt/context.py:Context:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:kwargs", "target": "{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:repo", "target": "{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:llm", "target": "{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config", "target": "{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"LLMConfig\",\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:new_environ", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:new_environ", "target": "{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/context_mixin.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/context_mixin.py", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"name\":\"ContextMixin\",\"package\":\"metagpt/context_mixin.py:ContextMixin\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"private_config\":{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]},\"private_context\":{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]},\"private_llm\":{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]},\"set_config\":{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]},\"validate_context_mixin_extra\":{\"name\":\"validate_context_mixin_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_context_mixin_extra()\",\"aggregations\":[]}},\"compositions\":[\"Config\",\"Context\",\"BaseLLM\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:config"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:context"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:llm"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:model_config"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_config"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_context"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_config"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_context"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_llm"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:validate_context_mixin_extra"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/config2.py:Config"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context.py:Context"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:_process_context_mixin_extra"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"lineno\":17,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ContextMixin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"name\":\"ContextMixin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"private_config\",\"visibility\":\"+\",\"value_type\":\"Optional[Config]\",\"default_value\":\"\"},{\"name\":\"private_context\",\"visibility\":\"+\",\"value_type\":\"Optional[Context]\",\"default_value\":\"\"},{\"name\":\"private_llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:Config"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:Context"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_config", "target": "{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_context", "target": "{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_llm", "target": "{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_config", "target": "{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_context", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_context", "target": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_llm", "target": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:validate_context_mixin_extra", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:validate_context_mixin_extra", "target": "{\"name\":\"validate_context_mixin_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_context_mixin_extra()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:Costs"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:TokenCostManager"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"name\":\"CostManager\",\"package\":\"metagpt/utils/cost_manager.py:CostManager\",\"attributes\":{\"max_budget\":{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]},\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]},\"get_total_completion_tokens\":{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]},\"get_total_cost\":{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]},\"get_total_prompt_tokens\":{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:max_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_costs"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_cost"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:update_cost"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "?:Costs"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/context.py:Context:cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"lineno\":24,\"end_lineno\":84,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"name\":\"CostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"max_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:max_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:max_budget", "target": "{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_budget", "target": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens", "target": "{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_cost", "target": "{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens", "target": "{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"name\":\"Costs\",\"package\":\"metagpt/utils/cost_manager.py:Costs\",\"attributes\":{\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Costs\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"name\":\"Costs\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_budget", "target": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:CustomDecoder"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:py_make_scanner"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:JSONObject"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:py_scanstring"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"name\":\"CustomDecoder\",\"package\":\"metagpt/utils/custom_decoder.py:CustomDecoder\",\"attributes\":{\"parse_object\":{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]},\"parse_string\":{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]},\"scan_once\":{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}},\"methods\":{\"decode\":{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once"}, {"predicate": "has_class_method", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:decode"}, {"predicate": "has_class_method", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"lineno\":273,\"end_lineno\":297,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomDecoder\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"name\":\"CustomDecoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"parse_object\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parse_string\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"scan_once\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object", "target": "{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string", "target": "{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once", "target": "{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:decode", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:decode", "target": "{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/customer_service.py", "target": "metagpt/roles/customer_service.py:CustomerService"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"name\":\"CustomerService\",\"package\":\"metagpt/roles/customer_service.py:CustomerService\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:store"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/sales.py:Sales"}, {"predicate": "is_composite_of", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomerService\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"name\":\"CustomerService\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "?:BaseStore"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:store", "target": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_ddg.py", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"name\":\"DDGAPIWrapper\",\"package\":\"metagpt/tools/search_engine_ddg.py:DDGAPIWrapper\",\"attributes\":{\"ddgs\":{\"name\":\"ddgs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ddgs\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"\\\\\"]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "?:futures.Executor"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "?:asyncio.AbstractEventLoop"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "?:\\"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"lineno\":21,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DDGAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"name\":\"DDGAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ddgs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "{\"name\":\"ddgs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ddgs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"name\":\"DFSSolver\",\"package\":\"metagpt/strategy/tot.py:DFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:_dfs"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DFSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"name\":\"DFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:FillMissingValue"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:LabelEncode"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:MinMaxScale"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:OneHotEncode"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:RobustScale"}, {"predicate": "has_class", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:StandardScale"}, {"predicate": "has_function", "source": "metagpt/tools/libs/data_preprocess.py", "target": "metagpt/tools/libs/data_preprocess.py:get_column_info"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "{\"name\":\"DataPreprocessTool\",\"package\":\"metagpt/tools/libs/data_preprocess.py:DataPreprocessTool\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:model"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "{\"lineno\":60,\"end_lineno\":85,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataPreprocessTool\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool", "target": "{\"name\":\"DataPreprocessTool\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"name\":\"DataSource\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:DataSource\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:name"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:url"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataSource\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"name\":\"DataSource\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:url", "target": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/debug_error.py", "target": "metagpt/actions/debug_error.py:DebugError"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"name\":\"DebugError\",\"package\":\"metagpt/actions/debug_error.py:DebugError\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"lineno\":48,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugError\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"name\":\"DebugError\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/dependency_file.py", "target": "metagpt/utils/dependency_file.py:DependencyFile"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"name\":\"DependencyFile\",\"package\":\"metagpt/utils/dependency_file.py:DependencyFile\",\"attributes\":{\"exists\":{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}},\"methods\":{\"delete_file\":{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]},\"load\":{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]},\"update\":{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:exists"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:delete_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:load"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:update"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "?:Path\\"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/git_repository.py:GitRepository:_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"lineno\":22,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DependencyFile\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"name\":\"DependencyFile\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"exists\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:delete_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:delete_file", "target": "{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:load", "target": "{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:save", "target": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:update", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:update", "target": "{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/design_api_review.py", "target": "metagpt/actions/design_api_review.py:DesignReview"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"name\":\"DesignReview\",\"package\":\"metagpt/actions/design_api_review.py:DesignReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"lineno\":14,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DesignReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"name\":\"DesignReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/di_graph_repository.py", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"name\":\"DiGraphRepository\",\"package\":\"metagpt/utils/di_graph_repository.py:DiGraphRepository\",\"attributes\":{\"pathname\":{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]},\"root\":{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"json\":{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"str\\\\\",\"GraphRepository\",\"Path\"]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\",\"GraphRepository\",\"SPO\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:GraphRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:SPO"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"lineno\":23,\"end_lineno\":299,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DiGraphRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"name\":\"DiGraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"pathname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert", "target": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json", "target": "{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from", "target": "{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"str\\\\\",\"GraphRepository\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select", "target": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:DocFileRepositories"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"name\":\"DocFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:DocFileRepositories\",\"attributes\":{\"class_view\":{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]},\"task\":{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:class_view"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:prd"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:system_design"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:task"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"lineno\":42,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocFileRepositories\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"name\":\"DocFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"class_view\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:class_view", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:class_view", "target": "{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change", "target": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary", "target": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo", "target": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:prd", "target": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:system_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:system_design", "target": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:task", "target": "{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/pycst.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:DocstringCollector"}, {"predicate": "has_class", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:DocstringTransformer"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:get_docstring_statement"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:has_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:merge_docstring"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"name\":\"DocstringCollector\",\"package\":\"metagpt/utils/pycst.py:DocstringCollector\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"bool\\\\\",\"cst.ClassDef\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.FunctionDef\",\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:docstrings"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:stack"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_Module"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.SimpleStatementLine"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.ClassDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.FunctionDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.Module"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:bool\\"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:_leave"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"lineno\":60,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringCollector\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"name\":\"DocstringCollector\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:docstrings", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:docstrings", "target": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:stack", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:stack", "target": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef", "target": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef", "target": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_Module", "target": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef", "target": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"bool\\\\\",\"cst.ClassDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef", "target": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_Module", "target": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/parse_docstring.py", "target": "metagpt/utils/parse_docstring.py:DocstringParser"}, {"predicate": "has_class", "source": "metagpt/utils/parse_docstring.py", "target": "metagpt/utils/parse_docstring.py:GoogleDocstringParser"}, {"predicate": "has_class", "source": "metagpt/utils/parse_docstring.py", "target": "metagpt/utils/parse_docstring.py:reSTDocstringParser"}, {"predicate": "has_function", "source": "metagpt/utils/parse_docstring.py", "target": "metagpt/utils/parse_docstring.py:remove_spaces"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "{\"name\":\"DocstringParser\",\"package\":\"metagpt/utils/parse_docstring.py:DocstringParser\",\"attributes\":{\"docstring\":{\"name\":\"docstring\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"docstring : str\",\"compositions\":[]}},\"methods\":{\"check_and_parse_default_value\":{\"name\":\"check_and_parse_default_value\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_default_value (param_desc: str): Tuple[bool, str]\",\"aggregations\":[]},\"check_and_parse_enum\":{\"name\":\"check_and_parse_enum\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_enum (param_desc: str): Tuple[bool, str]\",\"aggregations\":[]},\"check_and_parse_optional\":{\"name\":\"check_and_parse_optional\",\"args\":[{\"name\":\"param_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_optional (param_type: str): Tuple[bool, str]\",\"aggregations\":[]},\"parse_desc\":{\"name\":\"parse_desc\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_desc (): str\",\"aggregations\":[]},\"parse_params\":{\"name\":\"parse_params\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str,str]]\",\"description\":\"list[Tuple[str, str, str]]\",\"compositions\":[]},\"description\":\"parse_params (): list[Tuple[str, str, str]]\",\"aggregations\":[]},\"parse_returns\":{\"name\":\"parse_returns\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str]]\",\"description\":\"list[Tuple[str, str]]\",\"compositions\":[]},\"description\":\"parse_returns (): list[Tuple[str, str]]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser:docstring"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_default_value"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_enum"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_optional"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser:parse_desc"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser:parse_params"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser:parse_returns"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "{\"lineno\":11,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/parse_docstring.py:DocstringParser", "target": "{\"name\":\"DocstringParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstring\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:DocstringParser:docstring", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:DocstringParser:docstring", "target": "{\"name\":\"docstring\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"docstring : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_default_value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_default_value", "target": "{\"name\":\"check_and_parse_default_value\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_default_value (param_desc: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_enum", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_enum", "target": "{\"name\":\"check_and_parse_enum\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_enum (param_desc: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_optional", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:DocstringParser:check_and_parse_optional", "target": "{\"name\":\"check_and_parse_optional\",\"args\":[{\"name\":\"param_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_optional (param_type: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:DocstringParser:parse_desc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:DocstringParser:parse_desc", "target": "{\"name\":\"parse_desc\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_desc (): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:DocstringParser:parse_params", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:DocstringParser:parse_params", "target": "{\"name\":\"parse_params\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str,str]]\",\"description\":\"list[Tuple[str, str, str]]\",\"compositions\":[]},\"description\":\"parse_params (): list[Tuple[str, str, str]]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:DocstringParser:parse_returns", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:DocstringParser:parse_returns", "target": "{\"name\":\"parse_returns\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str]]\",\"description\":\"list[Tuple[str, str]]\",\"compositions\":[]},\"description\":\"parse_returns (): list[Tuple[str, str]]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"name\":\"DocstringTransformer\",\"package\":\"metagpt/utils/pycst.py:DocstringTransformer\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.ClassDef\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"bool\\\\\",\"cst.ClassDef\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.CSTNode\",\"cst.ClassDef\",\"cst.FunctionDef\",\"Module\",\"bool\\\\\",\"cst.Module\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:docstrings"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:stack"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.SimpleStatementLine"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.CSTNode"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.ClassDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.FunctionDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:Module"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:bool\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:_leave"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"lineno\":101,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringTransformer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"name\":\"DocstringTransformer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:docstrings", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:docstrings", "target": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:stack", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:stack", "target": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef", "target": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.ClassDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef", "target": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module", "target": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef", "target": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"bool\\\\\",\"cst.ClassDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef", "target": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module", "target": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/document.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:Document"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:DocumentStatus"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:IndexableDocument"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:Repo"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:RepoMetadata"}, {"predicate": "has_function", "source": "metagpt/document.py", "target": "metagpt/document.py:validate_cols"}, {"predicate": "has_function", "source": "metagpt/document.py", "target": "metagpt/document.py:read_data"}, {"predicate": "is", "source": "metagpt/document.py:Document", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document", "target": "{\"name\":\"Document\",\"package\":\"metagpt/document.py:Document\",\"attributes\":{\"author\":{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"reviews\":{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"from_text\":{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:author"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:content"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:path"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:reviews"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:status"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:from_text"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:persist"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:to_path"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Document", "target": "?:Path"}, {"predicate": "has_page_info", "source": "metagpt/document.py:Document", "target": "{\"lineno\":63,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:Document", "target": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"author\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"reviews\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:author", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:author", "target": "{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:reviews", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:reviews", "target": "{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:status", "target": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:from_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:from_text", "target": "{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:to_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:to_path", "target": "{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document", "target": "{\"name\":\"Document\",\"package\":\"metagpt/schema.py:Document\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]},\"root_relative_path\":{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}},\"methods\":{\"get_meta\":{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Document\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:root_path"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:root_relative_path"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:get_meta"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Document", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/actions/write_code.py:WriteCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:CodingContext:code_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:TestingContext:code_doc"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:__str__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Document", "target": "{\"lineno\":126,\"end_lineno\":155,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Document", "target": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:root_path", "target": "{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_relative_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:root_relative_path", "target": "{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_relative_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:get_meta", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:get_meta", "target": "{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:DocumentStatus", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:DocumentStatus", "target": "{\"name\":\"DocumentStatus\",\"package\":\"metagpt/document.py:DocumentStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:DocumentStatus:name"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:Document"}, {"predicate": "isCompositeOn", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:Document:status"}, {"predicate": "has_page_info", "source": "metagpt/document.py:DocumentStatus", "target": "{\"lineno\":54,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocumentStatus\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:DocumentStatus", "target": "{\"name\":\"DocumentStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:DocumentStatus:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:DocumentStatus:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents", "target": "{\"name\":\"Documents\",\"package\":\"metagpt/schema.py:Documents\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}},\"methods\":{\"from_iterable\":{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Document\",\"Documents\",\"Iterable\"]},\"to_action_output\":{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}},\"compositions\":[\"Document\"],\"aggregations\":[\"Documents\",\"Iterable\",\"ActionOutput\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:docs"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:from_iterable"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:to_action_output"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Documents", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:Documents"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:Iterable"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:ActionOutput"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Documents", "target": "{\"lineno\":158,\"end_lineno\":185,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Documents\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Documents", "target": "{\"name\":\"Documents\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:docs", "target": "{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:from_iterable", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:from_iterable", "target": "{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Document\",\"Documents\",\"Iterable\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:to_action_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:to_action_output", "target": "{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"name\":\"DotClassAttribute\",\"package\":\"metagpt/repo_parser.py:DotClassAttribute\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"default_\":{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]},\"parse_compositions\":{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotClassAttribute\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:default_"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:type_"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:parse"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:sort"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "?:DotClassAttribute"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:_split_literal"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"lineno\":68,\"end_lineno\":226,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassAttribute\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"name\":\"DotClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"default_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:default_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:default_", "target": "{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:type_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:type_", "target": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions", "target": "{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"name\":\"DotClassInfo\",\"package\":\"metagpt/repo_parser.py:DotClassInfo\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"attributes\":{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"methods\":{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}},\"methods\":{\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[\"DotClassAttribute\",\"DotClassMethod\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:attributes"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:methods"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:package"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:sort"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassMethod"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"lineno\":229,\"end_lineno\":262,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"name\":\"DotClassInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassMethod]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "?:DotClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "?:DotClassMethod"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:attributes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:attributes", "target": "{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:methods", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:methods", "target": "{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:package", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:package", "target": "{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"name\":\"DotClassMethod\",\"package\":\"metagpt/repo_parser.py:DotClassMethod\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"args\":{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"return_args\":{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}},\"compositions\":[\"DotClassAttribute\",\"DotReturn\"],\"aggregations\":[\"DotClassMethod\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:args"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:return_args"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:parse"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotClassMethod"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotReturn"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:_parse_name"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:_parse_args"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"lineno\":330,\"end_lineno\":419,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassMethod\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"name\":\"DotClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"return_args\",\"visibility\":\"+\",\"value_type\":\"Optional[DotReturn]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotReturn"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:args", "target": "{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:return_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:return_args", "target": "{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"name\":\"DotClassRelationship\",\"package\":\"metagpt/repo_parser.py:DotClassRelationship\",\"attributes\":{\"dest\":{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]},\"src\":{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:dest"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:label"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:relationship"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:src"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"lineno\":265,\"end_lineno\":279,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassRelationship\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"name\":\"DotClassRelationship\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dest\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:dest", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:dest", "target": "{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:label", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:label", "target": "{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:relationship", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:relationship", "target": "{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:src", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:src", "target": "{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"name\":\"DotReturn\",\"package\":\"metagpt/repo_parser.py:DotReturn\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotReturn\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:type_"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:parse"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:sort"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotReturn", "target": "?:DotReturn\\"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"lineno\":282,\"end_lineno\":327,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotReturn\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"name\":\"DotReturn\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:type_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:type_", "target": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"name\":\"Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Embedding\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]},\"object\":{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:index"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:object"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"lineno\":19,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Embedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"name\":\"Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"List[float]\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"object\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:index", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:index", "target": "{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:object", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:object", "target": "{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/engineer.py", "target": "metagpt/roles/engineer.py:Engineer"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"name\":\"Engineer\",\"package\":\"metagpt/roles/engineer.py:Engineer\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"code_todos\":{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"n_borg\":{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]},\"n_summarize\":{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"next_todo_action\":{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"summarize_todos\":{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]},\"use_code_review\":{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:action_description"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:code_todos"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:n_borg"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:n_summarize"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:next_todo_action"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:src_workspace"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:summarize_todos"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:use_code_review"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_parse_tasks"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_write_code"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_summarize"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_is_pass"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_coding_context"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_coding_doc"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_code_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"lineno\":60,\"end_lineno\":386,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Engineer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"name\":\"Engineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_borg\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_summarize\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"next_todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"summarize_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"use_code_review\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:code_todos", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:code_todos", "target": "{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:n_borg", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:n_borg", "target": "{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:n_summarize", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:n_summarize", "target": "{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:next_todo_action", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:next_todo_action", "target": "{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:summarize_todos", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:summarize_todos", "target": "{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:use_code_review", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:use_code_review", "target": "{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"name\":\"EnronTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:EnronTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "metagpt/tools/prompt_writer.py:EnronTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"lineno\":77,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnronTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"name\":\"EnronTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"name\":\"Entity\",\"package\":\"metagpt/learn/skill_loader.py:Entity\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}},\"methods\":{},\"compositions\":[\"Skill\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Entity:name"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Entity:skills"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"lineno\":53,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Entity\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"name\":\"Entity\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"List[Skill]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Entity", "target": "?:Skill"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity:name", "target": "{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity:skills", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity:skills", "target": "{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/api/env_api.py", "target": "metagpt/environment/api/env_api.py:EnvAPIAbstract"}, {"predicate": "has_class", "source": "metagpt/environment/api/env_api.py", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry"}, {"predicate": "has_class", "source": "metagpt/environment/api/env_api.py", "target": "metagpt/environment/api/env_api.py:ReadAPIRegistry"}, {"predicate": "has_class", "source": "metagpt/environment/api/env_api.py", "target": "metagpt/environment/api/env_api.py:WriteAPIRegistry"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract", "target": "{\"name\":\"EnvAPIAbstract\",\"package\":\"metagpt/environment/api/env_api.py:EnvAPIAbstract\",\"attributes\":{\"api_name\":{\"name\":\"api_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_name : str\",\"compositions\":[]},\"args\":{\"name\":\"args\",\"type_\":\"set\",\"default_\":\"\",\"description\":\"args : set\",\"compositions\":[]},\"kwargs\":{\"name\":\"kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"kwargs : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract", "target": "metagpt/environment/api/env_api.py:EnvAPIAbstract:api_name"}, {"predicate": "has_class_property", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract", "target": "metagpt/environment/api/env_api.py:EnvAPIAbstract:args"}, {"predicate": "has_class_property", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract", "target": "metagpt/environment/api/env_api.py:EnvAPIAbstract:kwargs"}, {"predicate": "has_page_info", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract", "target": "{\"lineno\":10,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnvAPIAbstract\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract", "target": "{\"name\":\"EnvAPIAbstract\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"set\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract:api_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract:api_name", "target": "{\"name\":\"api_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract:args", "target": "{\"name\":\"args\",\"type_\":\"set\",\"default_\":\"\",\"description\":\"args : set\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract:kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:EnvAPIAbstract:kwargs", "target": "{\"name\":\"kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"kwargs : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "{\"name\":\"EnvAPIRegistry\",\"package\":\"metagpt/environment/api/env_api.py:EnvAPIRegistry\",\"attributes\":{\"registry\":{\"name\":\"registry\",\"type_\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"default_\":\"\",\"description\":\"registry : dict[str, dict[str, Union[dict, Any, str]]]\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"api_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(api_name: str)\",\"aggregations\":[]},\"get_apis\":{\"name\":\"get_apis\",\"args\":[{\"name\":\"as_str\",\"type_\":\"\",\"default_\":\"\",\"description\":\"as_str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"description\":\"dict[str, dict[str, Union[dict, Any, str]]]\",\"compositions\":[]},\"description\":\"get_apis(as_str): dict[str, dict[str, Union[dict, Any, str]]]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry:registry"}, {"predicate": "has_class_method", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry:get"}, {"predicate": "has_class_method", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry:get_apis"}, {"predicate": "has_class_method", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__getitem__"}, {"predicate": "has_class_method", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__setitem__"}, {"predicate": "has_class_method", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__len__"}, {"predicate": "has_page_info", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "{\"lineno\":18,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnvAPIRegistry\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry", "target": "{\"name\":\"EnvAPIRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"registry\",\"visibility\":\"+\",\"value_type\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:registry", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:registry", "target": "{\"name\":\"registry\",\"type_\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"default_\":\"\",\"description\":\"registry : dict[str, dict[str, Union[dict, Any, str]]]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"api_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(api_name: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:get_apis", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:get_apis", "target": "{\"name\":\"get_apis\",\"args\":[{\"name\":\"as_str\",\"type_\":\"\",\"default_\":\"\",\"description\":\"as_str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,dict[str,Union[dict,Any,str]]]\",\"description\":\"dict[str, dict[str, Union[dict, Any, str]]]\",\"compositions\":[]},\"description\":\"get_apis(as_str): dict[str, dict[str, Union[dict, Any, str]]]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/base_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/base_env.py", "target": "metagpt/environment/base_env.py:EnvType"}, {"predicate": "has_class", "source": "metagpt/environment/base_env.py", "target": "metagpt/environment/base_env.py:Environment"}, {"predicate": "has_class", "source": "metagpt/environment/base_env.py", "target": "metagpt/environment/base_env.py:ExtEnv"}, {"predicate": "has_function", "source": "metagpt/environment/base_env.py", "target": "metagpt/environment/base_env.py:mark_as_readable"}, {"predicate": "has_function", "source": "metagpt/environment/base_env.py", "target": "metagpt/environment/base_env.py:mark_as_writeable"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:EnvType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:EnvType", "target": "{\"name\":\"EnvType\",\"package\":\"metagpt/environment/base_env.py:EnvType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/base_env.py:EnvType", "target": "metagpt/environment/base_env.py:EnvType:name"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:EnvType", "target": "{\"lineno\":25,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnvType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/base_env.py:EnvType", "target": "{\"name\":\"EnvType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:EnvType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:EnvType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment", "target": "{\"name\":\"Environment\",\"package\":\"metagpt/environment/base_env.py:Environment\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"member_addrs\":{\"name\":\"member_addrs\",\"type_\":\"Dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : Dict['Role', Set]\",\"compositions\":[\"Role\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"roles\":{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny['Role']]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}},\"methods\":{\"add_role\":{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: 'Role'\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: 'Role')\",\"aggregations\":[\"Role\"]},\"add_roles\":{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable['Role']\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable['Role'])\",\"aggregations\":[\"Role\",\"Iterable\"]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]},\"get_addresses\":{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]},\"get_role\":{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'Role'\",\"description\":\"'Role'\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): 'Role'\",\"aggregations\":[\"Role\"]},\"get_roles\":{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,'Role']\",\"description\":\"dict[str, 'Role']\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, 'Role']\",\"aggregations\":[\"Role\"]},\"init_roles\":{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]},\"model_rebuild\":{\"name\":\"model_rebuild\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"model_rebuild()\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]},\"role_names\":{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}},\"compositions\":[\"Role\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\",\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:context"}, {"predicate": "has_class_property", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:desc"}, {"predicate": "has_class_property", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:history"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:is_idle"}, {"predicate": "has_class_property", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:member_addrs"}, {"predicate": "has_class_property", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:model_config"}, {"predicate": "has_class_property", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:roles"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:add_role"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:add_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:archive"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:get_addresses"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:get_role"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:get_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:init_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:model_rebuild"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:publish_message"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:role_names"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:run"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:Environment:set_addresses"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/base_env.py:Environment", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/base_env.py:Environment", "target": "?:Iterable"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/base_env.py:Environment", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/environment/base_env.py:ExtEnv"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/team.py:Team"}, {"predicate": "isCompositeOn", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/team.py:Team:env"}, {"predicate": "is_composite_of", "source": "metagpt/environment/base_env.py:Environment", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:Environment", "target": "{\"lineno\":98,\"end_lineno\":209,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Environment\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/base_env.py:Environment", "target": "{\"name\":\"Environment\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"member_addrs\",\"visibility\":\"+\",\"value_type\":\"Dict[Role,Set]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"roles\",\"visibility\":\"+\",\"value_type\":\"dict[str,SerializeAsAny[Role]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/base_env.py:Environment", "target": "?:Role"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:context", "target": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:history", "target": "{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:is_idle", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:is_idle", "target": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:is_idle", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:member_addrs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:member_addrs", "target": "{\"name\":\"member_addrs\",\"type_\":\"Dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : Dict['Role', Set]\",\"compositions\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:roles", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:roles", "target": "{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny['Role']]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:add_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:add_role", "target": "{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: 'Role'\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: 'Role')\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:add_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:add_roles", "target": "{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable['Role']\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable['Role'])\",\"aggregations\":[\"Role\",\"Iterable\"]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:archive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:archive", "target": "{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:get_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:get_addresses", "target": "{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:get_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:get_role", "target": "{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'Role'\",\"description\":\"'Role'\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): 'Role'\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:get_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:get_roles", "target": "{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,'Role']\",\"description\":\"dict[str, 'Role']\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, 'Role']\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:init_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:init_roles", "target": "{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:model_rebuild", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:model_rebuild", "target": "{\"name\":\"model_rebuild\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"model_rebuild()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:publish_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:publish_message", "target": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:role_names", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:role_names", "target": "{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:Environment:set_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:Environment:set_addresses", "target": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"name\":\"Example\",\"package\":\"metagpt/learn/skill_loader.py:Example\",\"attributes\":{\"answer\":{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Example", "target": "metagpt/learn/skill_loader.py:Example:answer"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Example", "target": "metagpt/learn/skill_loader.py:Example:ask"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"lineno\":19,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Example\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"name\":\"Example\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"answer\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example:answer", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example:answer", "target": "{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example:ask", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example:ask", "target": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/execute_task.py", "target": "metagpt/actions/execute_task.py:ExecuteTask"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"name\":\"ExecuteTask\",\"package\":\"metagpt/actions/execute_task.py:ExecuteTask\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run ()\",\"aggregations\":[]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteTask\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"name\":\"ExecuteTask\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "{\"name\":\"ExtEnv\",\"package\":\"metagpt/environment/base_env.py:ExtEnv\",\"attributes\":{},\"methods\":{\"get_all_available_apis\":{\"name\":\"get_all_available_apis\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Any]\",\"description\":\"list[Any]\",\"compositions\":[]},\"description\":\"get_all_available_apis(mode: str): list[Any]\",\"aggregations\":[]},\"observe\":{\"name\":\"observe\",\"args\":[{\"name\":\"env_action\",\"type_\":\"Union[str,EnvAPIAbstract]\",\"default_\":\"\",\"description\":\"env_action: Union[str, EnvAPIAbstract]\",\"compositions\":[\"EnvAPIAbstract\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"observe(env_action: Union[str, EnvAPIAbstract])\",\"aggregations\":[\"EnvAPIAbstract\"]},\"step\":{\"name\":\"step\",\"args\":[{\"name\":\"env_action\",\"type_\":\"Union[str,Message,EnvAPIAbstract,list[EnvAPIAbstract]]\",\"default_\":\"\",\"description\":\"env_action: Union[str, Message, EnvAPIAbstract, list[EnvAPIAbstract]]\",\"compositions\":[\"EnvAPIAbstract\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"step(env_action: Union[str, Message, EnvAPIAbstract, list[EnvAPIAbstract]])\",\"aggregations\":[\"Message\",\"EnvAPIAbstract\"]}},\"compositions\":[],\"aggregations\":[\"EnvAPIAbstract\",\"Message\"]}"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "metagpt/environment/base_env.py:ExtEnv:get_all_available_apis"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "metagpt/environment/base_env.py:ExtEnv:observe"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "metagpt/environment/base_env.py:ExtEnv:step"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "?:EnvAPIAbstract"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "?:Message"}, {"predicate": "has_class_method", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "metagpt/environment/base_env.py:ExtEnv:_check_api_exist"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "{\"lineno\":49,\"end_lineno\":95,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExtEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/base_env.py:ExtEnv", "target": "{\"name\":\"ExtEnv\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:ExtEnv:get_all_available_apis", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:ExtEnv:get_all_available_apis", "target": "{\"name\":\"get_all_available_apis\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Any]\",\"description\":\"list[Any]\",\"compositions\":[]},\"description\":\"get_all_available_apis(mode: str): list[Any]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:ExtEnv:observe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:ExtEnv:observe", "target": "{\"name\":\"observe\",\"args\":[{\"name\":\"env_action\",\"type_\":\"Union[str,EnvAPIAbstract]\",\"default_\":\"\",\"description\":\"env_action: Union[str, EnvAPIAbstract]\",\"compositions\":[\"EnvAPIAbstract\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"observe(env_action: Union[str, EnvAPIAbstract])\",\"aggregations\":[\"EnvAPIAbstract\"]}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:ExtEnv:step", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/base_env.py:ExtEnv:step", "target": "{\"name\":\"step\",\"args\":[{\"name\":\"env_action\",\"type_\":\"Union[str,Message,EnvAPIAbstract,list[EnvAPIAbstract]]\",\"default_\":\"\",\"description\":\"env_action: Union[str, Message, EnvAPIAbstract, list[EnvAPIAbstract]]\",\"compositions\":[\"EnvAPIAbstract\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"step(env_action: Union[str, Message, EnvAPIAbstract, list[EnvAPIAbstract]])\",\"aggregations\":[\"Message\",\"EnvAPIAbstract\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "{\"name\":\"ExtractTimeComps\",\"package\":\"metagpt/tools/libs/feature_engineering.py:ExtractTimeComps\",\"attributes\":{\"time_col\":{\"name\":\"time_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"time_col : str\",\"compositions\":[]},\"time_comps\":{\"name\":\"time_comps\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"time_comps : list\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit (df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:time_col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:time_comps"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "{\"lineno\":280,\"end_lineno\":316,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExtractTimeComps\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps", "target": "{\"name\":\"ExtractTimeComps\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"time_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"time_comps\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:time_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:time_col", "target": "{\"name\":\"time_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"time_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:time_comps", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:time_comps", "target": "{\"name\":\"time_comps\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"time_comps : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit (df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/faiss_store.py", "target": "metagpt/document_store/faiss_store.py:FaissStore"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"name\":\"FaissStore\",\"package\":\"metagpt/document_store/faiss_store.py:FaissStore\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]},\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]},\"asearch\":{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete ()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[\"OpenAIEmbeddings\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:content_col"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:embedding"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:meta_col"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:store"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:asearch"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "?:OpenAIEmbeddings"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/base_store.py:LocalStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:__init__"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:_load"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:_write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"lineno\":21,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FaissStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"name\":\"FaissStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:content_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:content_col", "target": "{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:meta_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:meta_col", "target": "{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:store", "target": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:asearch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:asearch", "target": "{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete", "target": "{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/file.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/file.py", "target": "metagpt/utils/file.py:File"}, {"predicate": "is", "source": "metagpt/utils/file.py:File", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File", "target": "{\"name\":\"File\",\"package\":\"metagpt/utils/file.py:File\",\"attributes\":{\"CHUNK_SIZE\":{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}},\"methods\":{\"read\":{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"Path\",\"bytes\"]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"Path\",\"bytes\"]}},\"compositions\":[],\"aggregations\":[\"Path\",\"bytes\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:CHUNK_SIZE"}, {"predicate": "has_class_method", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:read"}, {"predicate": "has_class_method", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:write"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file.py:File", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file.py:File", "target": "?:bytes"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:File", "target": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"File\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/file.py:File", "target": "{\"name\":\"File\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CHUNK_SIZE\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:CHUNK_SIZE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:CHUNK_SIZE", "target": "{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:read", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:read", "target": "{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"Path\",\"bytes\"]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"Path\",\"bytes\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/file_repository.py", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"name\":\"FileRepository\",\"package\":\"metagpt/utils/file_repository.py:FileRepository\",\"attributes\":{\"all_files\":{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]},\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]},\"get_all\":{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]},\"get_change_dir_files\":{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]},\"get_changed_dependency\":{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"new_filename\":{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Document\",\"Path\\\\\"]},\"save_doc\":{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]},\"save_pdf\":{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"Document\\\\\",\"Document\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:all_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:changed_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:root_path"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_all"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:new_filename"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_doc"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_pdf"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Path\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Document\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"lineno\":25,\"end_lineno\":240,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FileRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"name\":\"FileRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_all", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_all", "target": "{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files", "target": "{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency", "target": "{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_dependency", "target": "{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:new_filename", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:new_filename", "target": "{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Document\",\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_doc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save_doc", "target": "{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_pdf", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save_pdf", "target": "{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "{\"name\":\"FillMissingValue\",\"package\":\"metagpt/tools/libs/data_preprocess.py:FillMissingValue\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"SimpleImputer\",\"default_\":\"\",\"description\":\"model : SimpleImputer\",\"compositions\":[\"SimpleImputer\"]}},\"methods\":{},\"compositions\":[\"SimpleImputer\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:model"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "?:SimpleImputer"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "{\"lineno\":89,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FillMissingValue\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue", "target": "{\"name\":\"FillMissingValue\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"SimpleImputer\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:model", "target": "{\"name\":\"model\",\"type_\":\"SimpleImputer\",\"default_\":\"\",\"description\":\"model : SimpleImputer\",\"compositions\":[\"SimpleImputer\"]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/fireworks_api.py", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager"}, {"predicate": "has_class", "source": "metagpt/provider/fireworks_api.py", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"name\":\"FireworksCostManager\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"model_grade_token_costs\":{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"lineno\":32,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"name\":\"FireworksCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs", "target": "{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"name\":\"FireworksLLM\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksLLM\",\"attributes\":{\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}},\"methods\":{\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"lineno\":74,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"name\":\"FireworksLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens", "target": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/fix_bug.py", "target": "metagpt/actions/fix_bug.py:FixBug"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"name\":\"FixBug\",\"package\":\"metagpt/actions/fix_bug.py:FixBug\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "metagpt/actions/fix_bug.py:FixBug:name"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FixBug\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"name\":\"FixBug\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py:FixBug:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/fix_bug.py:FixBug:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"name\":\"GPTPromptGenerator\",\"package\":\"metagpt/tools/prompt_writer.py:GPTPromptGenerator\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]},\"gen_chatbot_style\":{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]},\"gen_instruction_style\":{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]},\"gen_query_style\":{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTPromptGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"name\":\"GPTPromptGenerator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style", "target": "{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style", "target": "{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style", "target": "{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/libs/gpt_v_generator.py", "target": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "{\"name\":\"GPTvGenerator\",\"package\":\"metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"analyze_layout\":{\"name\":\"analyze_layout\",\"args\":[{\"name\":\"image_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"image_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"analyze_layout(image_path: Path): str\",\"aggregations\":[\"Path\"]},\"generate_webpages\":{\"name\":\"generate_webpages\",\"args\":[{\"name\":\"image_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"image_path: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_webpages(image_path: str): str\",\"aggregations\":[]},\"save_webpages\":{\"name\":\"save_webpages\",\"args\":[{\"name\":\"image_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"image_path: str\",\"compositions\":[]},{\"name\":\"webpages\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"webpages: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"save_webpages(image_path: str, webpages: str): Path\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:llm"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:analyze_layout"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:generate_webpages"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:save_webpages"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "?:Path"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "{\"lineno\":34,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTvGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator", "target": "{\"name\":\"GPTvGenerator\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:analyze_layout", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:analyze_layout", "target": "{\"name\":\"analyze_layout\",\"args\":[{\"name\":\"image_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"image_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"analyze_layout(image_path: Path): str\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:generate_webpages", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:generate_webpages", "target": "{\"name\":\"generate_webpages\",\"args\":[{\"name\":\"image_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"image_path: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_webpages(image_path: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:save_webpages", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:save_webpages", "target": "{\"name\":\"save_webpages\",\"args\":[{\"name\":\"image_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"image_path: str\",\"compositions\":[]},{\"name\":\"webpages\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"webpages: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"save_webpages(image_path: str, webpages: str): Path\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/google_gemini_api.py", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel"}, {"predicate": "has_class", "source": "metagpt/provider/google_gemini_api.py", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"name\":\"GeminiGenerativeModel\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiGenerativeModel\",\"attributes\":{},\"methods\":{\"count_tokens\":{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]},\"count_tokens_async\":{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]}},\"compositions\":[],\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "?:glm.CountTokensResponse"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "?:content_types.ContentsType"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"lineno\":31,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiGenerativeModel\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"name\":\"GeminiGenerativeModel\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens", "target": "{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async", "target": "{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"glm.CountTokensResponse\",\"content_types.ContentsType\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"name\":\"GeminiLLM\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"aget_usage\":{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:pricing_plan"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "?:GenerateContentResponse"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"lineno\":47,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"name\":\"GeminiLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:pricing_plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:pricing_plan", "target": "{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage", "target": "{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion", "target": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage", "target": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:parse_stream_helper"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:parse_stream"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"name\":\"GeneralAPIRequestor\",\"package\":\"metagpt/provider/general_api_requestor.py:GeneralAPIRequestor\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"lineno\":38,\"end_lineno\":104,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralAPIRequestor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"name\":\"GeneralAPIRequestor\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "{\"name\":\"GeneralSelection\",\"package\":\"metagpt/tools/libs/feature_engineering.py:GeneralSelection\",\"attributes\":{\"feats\":{\"name\":\"feats\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"feats : list\",\"compositions\":[]},\"label_col\":{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:feats"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:label_col"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "{\"lineno\":320,\"end_lineno\":348,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralSelection\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection", "target": "{\"name\":\"GeneralSelection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"feats\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"label_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:feats", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:feats", "target": "{\"name\":\"feats\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"feats : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:label_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:label_col", "target": "{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/generate_questions.py", "target": "metagpt/actions/generate_questions.py:GenerateQuestions"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"name\":\"GenerateQuestions\",\"package\":\"metagpt/actions/generate_questions.py:GenerateQuestions\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}},\"compositions\":[],\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/generate_questions.py:GenerateQuestions:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/generate_questions.py:GenerateQuestions:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "?:ActionNode"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"lineno\":18,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateQuestions\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"name\":\"GenerateQuestions\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"name\":\"GenerateTable\",\"package\":\"metagpt/actions/invoice_ocr.py:GenerateTable\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"lineno\":122,\"end_lineno\":163,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateTable\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"name\":\"GenerateTable\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:SparkLLM"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"name\":\"GetMessageFromWeb\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb\",\"attributes\":{\"domain\":{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]},\"ret\":{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]},\"spark_api_key\":{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]},\"spark_api_secret\":{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]},\"spark_appid\":{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]},\"text\":{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}},\"methods\":{\"gen_params\":{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]},\"on_close\":{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close (ws, one, two)\",\"aggregations\":[]},\"on_error\":{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]},\"on_message\":{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]},\"on_open\":{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"send\":{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:text"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:run"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:send"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"lineno\":46,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GetMessageFromWeb\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"name\":\"GetMessageFromWeb\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain", "target": "{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret", "target": "{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key", "target": "{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret", "target": "{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid", "target": "{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url", "target": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:text", "target": "{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params", "target": "{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close", "target": "{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close (ws, one, two)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error", "target": "{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message", "target": "{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open", "target": "{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:send", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:send", "target": "{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"name\":\"GitRepository\",\"package\":\"metagpt/utils/git_repository.py:GitRepository\",\"attributes\":{\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"is_valid\":{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"add_change\":{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]},\"commit\":{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]},\"delete_repository\":{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]},\"filter_gitignore\":{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]},\"get_files\":{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]},\"is_git_dir\":{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]},\"new_file_repository\":{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"FileRepository\",\"Path\\\\\"]},\"open\":{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]},\"rename_root\":{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"DependencyFile\",\"FileRepository\",\"Path\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:changed_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:is_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:status"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:add_change"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:archive"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:commit"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:delete_repository"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:get_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:get_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:is_git_dir"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:new_file_repository"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:open"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:rename_root"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:Path\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:DependencyFile"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:FileRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:Path"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/context.py:Context:git_repo"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isAggregateOn", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:_git_repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:_init"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"lineno\":35,\"end_lineno\":285,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GitRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"name\":\"GitRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_valid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:add_change", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:add_change", "target": "{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:archive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:archive", "target": "{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:commit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:commit", "target": "{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:delete_repository", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:delete_repository", "target": "{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore", "target": "{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:get_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:get_dependency", "target": "{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:get_files", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:get_files", "target": "{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_git_dir", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:is_git_dir", "target": "{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:new_file_repository", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:new_file_repository", "target": "{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"FileRepository\",\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:open", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:open", "target": "{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:rename_root", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:rename_root", "target": "{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_googleapi.py", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper"}, {"predicate": "has_function", "source": "metagpt/tools/search_engine_googleapi.py", "target": "metagpt/tools/search_engine_googleapi.py:safe_google_results"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"name\":\"GoogleAPIWrapper\",\"package\":\"metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"cse_id\":{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"google_api_client\":{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]},\"validate_google\":{\"name\":\"validate_google\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_google(values: dict): dict\",\"aggregations\":[]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:cse_id"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:validate_google"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:futures.Executor"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:asyncio.AbstractEventLoop"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:\\"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"lineno\":24,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"name\":\"GoogleAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"cse_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"google_api_client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:cse_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:cse_id", "target": "{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:validate_google", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:validate_google", "target": "{\"name\":\"validate_google\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_google(values: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "{\"name\":\"GoogleDocstringParser\",\"package\":\"metagpt/utils/parse_docstring.py:GoogleDocstringParser\",\"attributes\":{\"docstring\":{\"name\":\"docstring\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"docstring : str\",\"compositions\":[]}},\"methods\":{\"check_and_parse_default_value\":{\"name\":\"check_and_parse_default_value\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_default_value(param_desc: str): Tuple[bool, str]\",\"aggregations\":[]},\"check_and_parse_enum\":{\"name\":\"check_and_parse_enum\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_enum(param_desc: str): Tuple[bool, str]\",\"aggregations\":[]},\"check_and_parse_optional\":{\"name\":\"check_and_parse_optional\",\"args\":[{\"name\":\"param_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_optional(param_type: str): Tuple[bool, str]\",\"aggregations\":[]},\"parse_desc\":{\"name\":\"parse_desc\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_desc(): str\",\"aggregations\":[]},\"parse_params\":{\"name\":\"parse_params\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str,str]]\",\"description\":\"list[Tuple[str, str, str]]\",\"compositions\":[]},\"description\":\"parse_params(): list[Tuple[str, str, str]]\",\"aggregations\":[]},\"parse_returns\":{\"name\":\"parse_returns\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str]]\",\"description\":\"list[Tuple[str, str]]\",\"compositions\":[]},\"description\":\"parse_returns(): list[Tuple[str, str]]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:docstring"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_default_value"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_enum"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_optional"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_desc"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_params"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_returns"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "{\"lineno\":48,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleDocstringParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser", "target": "{\"name\":\"GoogleDocstringParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstring\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:docstring", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:docstring", "target": "{\"name\":\"docstring\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"docstring : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_default_value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_default_value", "target": "{\"name\":\"check_and_parse_default_value\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_default_value(param_desc: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_enum", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_enum", "target": "{\"name\":\"check_and_parse_enum\",\"args\":[{\"name\":\"param_desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_desc: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_enum(param_desc: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_optional", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:check_and_parse_optional", "target": "{\"name\":\"check_and_parse_optional\",\"args\":[{\"name\":\"param_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"param_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[bool,str]\",\"description\":\"Tuple[bool, str]\",\"compositions\":[]},\"description\":\"check_and_parse_optional(param_type: str): Tuple[bool, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_desc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_desc", "target": "{\"name\":\"parse_desc\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_desc(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_params", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_params", "target": "{\"name\":\"parse_params\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str,str]]\",\"description\":\"list[Tuple[str, str, str]]\",\"compositions\":[]},\"description\":\"parse_params(): list[Tuple[str, str, str]]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_returns", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:GoogleDocstringParser:parse_returns", "target": "{\"name\":\"parse_returns\",\"args\":[],\"return_args\":{\"type_\":\"list[Tuple[str,str]]\",\"description\":\"list[Tuple[str, str]]\",\"compositions\":[]},\"description\":\"parse_returns(): list[Tuple[str, str]]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:GraphKeyword"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:SPO"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"name\":\"GraphKeyword\",\"package\":\"metagpt/utils/graph_repository.py:GraphKeyword\",\"attributes\":{\"CLASS\":{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]},\"CLASS_METHOD\":{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]},\"CLASS_PROPERTY\":{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]},\"FUNCTION\":{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]},\"GLOBAL_VARIABLE\":{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]},\"HAS_CLASS\":{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]},\"HAS_CLASS_METHOD\":{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]},\"HAS_CLASS_PROPERTY\":{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]},\"HAS_CLASS_USE_CASE\":{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]},\"HAS_CLASS_VIEW\":{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]},\"HAS_DETAIL\":{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]},\"HAS_FUNCTION\":{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]},\"HAS_PAGE_INFO\":{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]},\"HAS_PARTICIPANT\":{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]},\"HAS_SEQUENCE_VIEW\":{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]},\"HAS_SEQUENCE_VIEW_VER\":{\"name\":\"HAS_SEQUENCE_VIEW_VER\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW_VER : str\",\"compositions\":[]},\"IS\":{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]},\"IS_AGGREGATE_OF\":{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]},\"IS_COMPOSITE_OF\":{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]},\"NULL\":{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]},\"OF\":{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]},\"ON\":{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]},\"SOURCE_CODE\":{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW_VER"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:NULL"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:ON"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"lineno\":23,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphKeyword\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"name\":\"GraphKeyword\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"GLOBAL_VARIABLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_USE_CASE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_DETAIL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PAGE_INFO\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PARTICIPANT\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW_VER\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_AGGREGATE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_COMPOSITE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"NULL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ON\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"SOURCE_CODE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS", "target": "{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD", "target": "{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY", "target": "{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION", "target": "{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE", "target": "{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS", "target": "{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD", "target": "{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY", "target": "{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE", "target": "{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW", "target": "{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL", "target": "{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION", "target": "{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO", "target": "{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT", "target": "{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW", "target": "{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW_VER", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW_VER", "target": "{\"name\":\"HAS_SEQUENCE_VIEW_VER\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW_VER : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS", "target": "{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF", "target": "{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF", "target": "{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:NULL", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:NULL", "target": "{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:OF", "target": "{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:ON", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:ON", "target": "{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE", "target": "{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"name\":\"GraphRepository\",\"package\":\"metagpt/utils/graph_repository.py:GraphRepository\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete (subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert (subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"rebuild_composition_relationship\":{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save ()\",\"aggregations\":[]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select (subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]},\"update_graph_db_with_class_relationship_views\":{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]},\"update_graph_db_with_class_views\":{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]},\"update_graph_db_with_file_info\":{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}},\"compositions\":[],\"aggregations\":[\"GraphRepository\",\"SPO\",\"DotClassRelationship\",\"DotClassInfo\",\"RepoFileInfo\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:name"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:insert"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:select"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:GraphRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:SPO"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:DotClassRelationship"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:DotClassInfo"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:RepoFileInfo"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"lineno\":81,\"end_lineno\":499,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"name\":\"GraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete (subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert", "target": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert (subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship", "target": "{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:save", "target": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:select", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:select", "target": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select (subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views", "target": "{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views", "target": "{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info", "target": "{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "{\"name\":\"GroupStat\",\"package\":\"metagpt/tools/libs/feature_engineering.py:GroupStat\",\"attributes\":{\"agg_col\":{\"name\":\"agg_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"agg_col : str\",\"compositions\":[]},\"agg_funcs\":{\"name\":\"agg_funcs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"agg_funcs : list\",\"compositions\":[]},\"group_col\":{\"name\":\"group_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"group_col : str\",\"compositions\":[]},\"group_df\":{\"name\":\"group_df\",\"type_\":\"\",\"default_\":\"\",\"description\":\"group_df : NoneType\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "metagpt/tools/libs/feature_engineering.py:GroupStat:agg_col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "metagpt/tools/libs/feature_engineering.py:GroupStat:agg_funcs"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "metagpt/tools/libs/feature_engineering.py:GroupStat:group_col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "metagpt/tools/libs/feature_engineering.py:GroupStat:group_df"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "metagpt/tools/libs/feature_engineering.py:GroupStat:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "metagpt/tools/libs/feature_engineering.py:GroupStat:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "metagpt/tools/libs/feature_engineering.py:GroupStat:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "{\"lineno\":220,\"end_lineno\":248,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GroupStat\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat", "target": "{\"name\":\"GroupStat\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"agg_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"agg_funcs\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"group_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"group_df\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:agg_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:agg_col", "target": "{\"name\":\"agg_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"agg_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:agg_funcs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:agg_funcs", "target": "{\"name\":\"agg_funcs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"agg_funcs : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:group_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:group_col", "target": "{\"name\":\"group_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"group_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:group_df", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:group_df", "target": "{\"name\":\"group_df\",\"type_\":\"\",\"default_\":\"\",\"description\":\"group_df : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/human_interaction.py", "target": "metagpt/utils/human_interaction.py:HumanInteraction"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"name\":\"HumanInteraction\",\"package\":\"metagpt/utils/human_interaction.py:HumanInteraction\",\"attributes\":{\"stop_list\":{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}},\"methods\":{\"check_input_type\":{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]},\"input_num_until_valid\":{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]},\"input_until_valid\":{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]},\"interact_with_instruct_content\":{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]},\"multilines_input\":{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[\"tuple\"],\"aggregations\":[\"Type\",\"BaseModel\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:Type"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:BaseModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"lineno\":14,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanInteraction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"name\":\"HumanInteraction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stop_list\",\"visibility\":\"+\",\"value_type\":\"tuple\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list", "target": "{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type", "target": "{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid", "target": "{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid", "target": "{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content", "target": "{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input", "target": "{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/human_provider.py", "target": "metagpt/provider/human_provider.py:HumanProvider"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"name\":\"HumanProvider\",\"package\":\"metagpt/provider/human_provider.py:HumanProvider\",\"attributes\":{\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:ask"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/roles/role.py:Role:llm"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanProvider\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"name\":\"HumanProvider\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:system_prompt", "target": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:ask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:ask", "target": "{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"name\":\"IFlyTekTTS\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTS\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}},\"methods\":{\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"lineno\":51,\"end_lineno\":113,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTS\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"name\":\"IFlyTekTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech", "target": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"name\":\"IFlyTekTTSResponse\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]},\"sid\":{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AudioData\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid"}, {"predicate": "is_composite_of", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:AudioData"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"lineno\":41,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSResponse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"name\":\"IFlyTekTTSResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Optional[AudioData]\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"sid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "?:AudioData"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code", "target": "{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data", "target": "{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message", "target": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid", "target": "{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"name\":\"IFlyTekTTSStatus\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"lineno\":29,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSStatus\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"name\":\"IFlyTekTTSStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:IOSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:IOSolver", "target": "{\"name\":\"IOSolver\",\"package\":\"metagpt/strategy/solver.py:IOSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/solver.py:IOSolver", "target": "metagpt/strategy/solver.py:IOSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/solver.py:IOSolver", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:IOSolver", "target": "{\"lineno\":66,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IOSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/solver.py:IOSolver", "target": "{\"name\":\"IOSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:IOSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:IOSolver:solve", "target": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult"}, {"predicate": "has_class", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image"}, {"predicate": "has_function", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "{\"name\":\"ImageResult\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult\",\"attributes\":{\"images\":{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters"}, {"predicate": "has_class_view", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "{\"name\":\"ImageResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"images\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images", "target": "{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters", "target": "{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument", "target": "{\"name\":\"IndexableDocument\",\"package\":\"metagpt/document.py:IndexableDocument\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]},\"get_docs_and_metadatas\":{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}},\"compositions\":[\"pd.DataFrame\"],\"aggregations\":[\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:content_col"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:data"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:meta_col"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:model_config"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:IndexableDocument", "target": "?:pd.DataFrame"}, {"predicate": "isAggregateOf", "source": "metagpt/document.py:IndexableDocument", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:Document"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain"}, {"predicate": "has_page_info", "source": "metagpt/document.py:IndexableDocument", "target": "{\"lineno\":115,\"end_lineno\":165,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IndexableDocument\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:IndexableDocument", "target": "{\"name\":\"IndexableDocument\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Union[pd.DataFrame,list]\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:content_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:content_col", "target": "{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:data", "target": "{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:meta_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:meta_col", "target": "{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas", "target": "{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:OCRResults"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:ReplyData"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"name\":\"InvoiceData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceData\",\"attributes\":{\"invoice_data\":{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"name\":\"InvoiceData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"invoice_data\",\"visibility\":\"+\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data", "target": "{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"name\":\"InvoiceOCR\",\"package\":\"metagpt/actions/invoice_ocr.py:InvoiceOCR\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"lineno\":31,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCR\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"name\":\"InvoiceOCR\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"name\":\"InvoiceOCRAssistant\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"orc_data\":{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]},\"origin_query\":{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"lineno\":39,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCRAssistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"name\":\"InvoiceOCRAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"orc_data\",\"visibility\":\"+\",\"value_type\":\"Optional[list]\",\"default_value\":\"\"},{\"name\":\"origin_query\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data", "target": "{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query", "target": "{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"name\":\"InvoicePath\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoicePath\",\"attributes\":{\"file_path\":{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "?:Path"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"lineno\":23,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoicePath\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"name\":\"InvoicePath\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"file_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path", "target": "{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "{\"name\":\"KFoldTargetMeanEncoder\",\"package\":\"metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder\",\"attributes\":{\"col\":{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]},\"encoder_dict\":{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label : str\",\"compositions\":[]},\"n_splits\":{\"name\":\"n_splits\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_splits : int\",\"compositions\":[]},\"random_state\":{\"name\":\"random_state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"random_state : int\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:encoder_dict"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:label"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:n_splits"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:random_state"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "{\"lineno\":123,\"end_lineno\":159,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"KFoldTargetMeanEncoder\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder", "target": "{\"name\":\"KFoldTargetMeanEncoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"encoder_dict\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_splits\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"random_state\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:col", "target": "{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:encoder_dict", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:encoder_dict", "target": "{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:label", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:label", "target": "{\"name\":\"label\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:n_splits", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:n_splits", "target": "{\"name\":\"n_splits\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_splits : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:random_state", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:random_state", "target": "{\"name\":\"random_state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"random_state : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/llm_config.py", "target": "metagpt/configs/llm_config.py:LLMConfig"}, {"predicate": "has_class", "source": "metagpt/configs/llm_config.py", "target": "metagpt/configs/llm_config.py:LLMType"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"name\":\"LLMConfig\",\"package\":\"metagpt/configs/llm_config.py:LLMConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]},\"best_of\":{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]},\"calc_usage\":{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]},\"domain\":{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]},\"frequency_penalty\":{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]},\"logprobs\":{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]},\"max_token\":{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"n\":{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]},\"presence_penalty\":{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"pricing_plan : Optional[str]\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"repetition_penalty\":{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]},\"stop\":{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]},\"stream\":{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]},\"temperature\":{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]},\"timeout\":{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]},\"top_k\":{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]},\"top_logprobs\":{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]},\"top_p\":{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}},\"methods\":{\"check_llm_key\":{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_version"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:app_id"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:base_url"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:best_of"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:calc_usage"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:domain"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:logprobs"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:max_token"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:model"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:n"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:pricing_plan"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:proxy"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:stop"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:stream"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:temperature"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:timeout"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_k"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_p"}, {"predicate": "has_class_method", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/config2.py:Config:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/anthropic_api.py:Claude2"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/spark_api.py:SparkLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"lineno\":32,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"name\":\"LLMConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"best_of\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"calc_usage\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"frequency_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[bool]\",\"default_value\":\"\"},{\"name\":\"max_token\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"n\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"presence_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"repetition_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"stop\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"stream\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"temperature\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"timeout\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_k\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"top_p\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_version", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_version", "target": "{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:base_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:base_url", "target": "{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:best_of", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:best_of", "target": "{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:calc_usage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:calc_usage", "target": "{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:domain", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:domain", "target": "{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty", "target": "{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:logprobs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:logprobs", "target": "{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:max_token", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:max_token", "target": "{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:model", "target": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:n", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:n", "target": "{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty", "target": "{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:pricing_plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:pricing_plan", "target": "{\"name\":\"pricing_plan\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"pricing_plan : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty", "target": "{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:stop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:stop", "target": "{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:stream", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:stream", "target": "{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:temperature", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:temperature", "target": "{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:timeout", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:timeout", "target": "{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_k", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_k", "target": "{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs", "target": "{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_p", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_p", "target": "{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key", "target": "{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry"}, {"predicate": "has_function", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:register_provider"}, {"predicate": "has_function", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:create_llm_instance"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"name\":\"LLMProviderRegistry\",\"package\":\"metagpt/provider/llm_provider_registry.py:LLMProviderRegistry\",\"attributes\":{\"providers\":{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}},\"methods\":{\"get_provider\":{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]},\"register\":{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"LLMType\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "?:LLMType"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"lineno\":12,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderRegistry\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"name\":\"LLMProviderRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"providers\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers", "target": "{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider", "target": "{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register", "target": "{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"name\":\"LLMType\",\"package\":\"metagpt/configs/llm_config.py:LLMType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"predicate": "has_class_method", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMType:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"lineno\":16,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"name\":\"LLMType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "{\"name\":\"LabelEncode\",\"package\":\"metagpt/tools/libs/data_preprocess.py:LabelEncode\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"le_encoders\":{\"name\":\"le_encoders\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"le_encoders : list\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "metagpt/tools/libs/data_preprocess.py:LabelEncode:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "metagpt/tools/libs/data_preprocess.py:LabelEncode:le_encoders"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "metagpt/tools/libs/data_preprocess.py:LabelEncode:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "metagpt/tools/libs/data_preprocess.py:LabelEncode:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "metagpt/tools/libs/data_preprocess.py:LabelEncode:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "{\"lineno\":184,\"end_lineno\":216,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LabelEncode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode", "target": "{\"name\":\"LabelEncode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"le_encoders\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:le_encoders", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:le_encoders", "target": "{\"name\":\"le_encoders\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"le_encoders : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/lancedb_store.py", "target": "metagpt/document_store/lancedb_store.py:LanceStore"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"name\":\"LanceStore\",\"package\":\"metagpt/document_store/lancedb_store.py:LanceStore\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"table\":{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"drop\":{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\",\"LanceTable\",\"RemoteTable\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:db"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:name"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:table"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:drop"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:LanceDBConnection"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:RemoteDBConnection"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:LanceTable"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:RemoteTable"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"lineno\":14,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LanceStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"name\":\"LanceStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"LanceDBConnection,RemoteDBConnection\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"table\",\"visibility\":\"+\",\"value_type\":\"LanceTable,NoneType,RemoteTable\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:db", "target": "{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:table", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:table", "target": "{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:drop", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:drop", "target": "{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"name\":\"LocalStore\",\"package\":\"metagpt/document_store/base_store.py:LocalStore\",\"attributes\":{\"cache_dir\":{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]},\"fname\":{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]},\"raw_data_path\":{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:cache_dir"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:fname"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:raw_data_path"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:store"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:__init__"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_load"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"lineno\":28,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LocalStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"name\":\"LocalStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cache_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"fname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"raw_data_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:cache_dir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:cache_dir", "target": "{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:fname", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:fname", "target": "{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:raw_data_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:raw_data_path", "target": "{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:store", "target": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/longterm_memory.py", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"name\":\"LongTermMemory\",\"package\":\"metagpt/memory/longterm_memory.py:LongTermMemory\",\"attributes\":{\"memory_storage\":{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_from_recover\":{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}},\"compositions\":[\"RoleContext\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:clear"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:delete"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/memory.py:Memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"lineno\":18,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LongTermMemory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"name\":\"LongTermMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"memory_storage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_from_recover\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"Optional[RoleContext]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "?:RoleContext"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage", "target": "{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover", "target": "{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:rc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:rc", "target": "{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:clear", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:clear", "target": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news", "target": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory", "target": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"name\":\"MCTSSolver\",\"package\":\"metagpt/strategy/tot.py:MCTSSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:MCTSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"lineno\":230,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MCTSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"name\":\"MCTSSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:MCTSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess", "target": "{\"name\":\"MLProcess\",\"package\":\"metagpt/tools/libs/data_preprocess.py:MLProcess\",\"attributes\":{},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit (df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"fit_transform\":{\"name\":\"fit_transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"fit_transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform (df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess:fit_transform"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess", "target": "?:pd.DataFrame"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess", "target": "{\"lineno\":24,\"end_lineno\":57,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MLProcess\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess", "target": "{\"name\":\"MLProcess\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit (df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess:fit_transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess:fit_transform", "target": "{\"name\":\"fit_transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"fit_transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MLProcess:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform (df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "{\"name\":\"MaxAbsScale\",\"package\":\"metagpt/tools/libs/data_preprocess.py:MaxAbsScale\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"MaxAbsScaler\",\"default_\":\"\",\"description\":\"model : MaxAbsScaler\",\"compositions\":[\"MaxAbsScaler\"]}},\"methods\":{},\"compositions\":[\"MaxAbsScaler\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:model"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "?:MaxAbsScaler"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "{\"lineno\":132,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MaxAbsScale\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale", "target": "{\"name\":\"MaxAbsScale\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"MaxAbsScaler\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:model", "target": "{\"name\":\"model\",\"type_\":\"MaxAbsScaler\",\"default_\":\"\",\"description\":\"model : MaxAbsScaler\",\"compositions\":[\"MaxAbsScaler\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"name\":\"MeilisearchEngine\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}},\"methods\":{\"add_documents\":{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]},\"set_index\":{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}},\"compositions\":[\"Client\"],\"aggregations\":[\"DataSource\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "?:Client"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "?:DataSource"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"lineno\":23,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MeilisearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"name\":\"MeilisearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"Client\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client", "target": "{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents", "target": "{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index", "target": "{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/memory.py", "target": "metagpt/memory/memory.py:Memory"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory", "target": "{\"name\":\"Memory\",\"package\":\"metagpt/memory/memory.py:Memory\",\"attributes\":{\"ignore_id\":{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]},\"storage\":{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"add_batch\":{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"count\":{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"delete_newest\":{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_action\":{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_actions\":{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_content\":{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_role\":{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]},\"try_remember\":{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:ignore_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:index"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:storage"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:add_batch"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:clear"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:count"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:delete"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:delete_newest"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:find_news"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_action"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_actions"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_content"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_role"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:try_remember"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:DefaultDict"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:Iterable"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext:memory"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext:working_memory"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/strategy/planner.py:Planner"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/strategy/planner.py:Planner:working_memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:Memory", "target": "{\"lineno\":19,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Memory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/memory.py:Memory", "target": "{\"name\":\"Memory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ignore_id\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_value\":\"\"},{\"name\":\"storage\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Message]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:ignore_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:ignore_id", "target": "{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:index", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:index", "target": "{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:storage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:storage", "target": "{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:add_batch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:add_batch", "target": "{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:clear", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:clear", "target": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:count", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:count", "target": "{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:delete_newest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:delete_newest", "target": "{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:find_news", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:find_news", "target": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_action", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_action", "target": "{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_actions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_actions", "target": "{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_content", "target": "{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_role", "target": "{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:try_remember", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:try_remember", "target": "{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/memory_storage.py", "target": "metagpt/memory/memory_storage.py:MemoryStorage"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"name\":\"MemoryStorage\",\"package\":\"metagpt/memory/memory_storage.py:MemoryStorage\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"is_initialized\":{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]},\"mem_ttl\":{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]},\"role_mem_path\":{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]},\"threshold\":{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]},\"clean\":{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]},\"search_dissimilar\":{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"OpenAIEmbeddings\",\"Path\",\"FAISS\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:embedding"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:role_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:store"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:threshold"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:clean"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:persist"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:OpenAIEmbeddings"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:Path"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:FAISS"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/document_store/faiss_store.py:FaissStore"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:__init__"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:_load"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"lineno\":21,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MemoryStorage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"name\":\"MemoryStorage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"is_initialized\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mem_ttl\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"role_mem_path\",\"visibility\":\"+\",\"value_type\":\"Optional[str],Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"NoneType,Optional[FAISS]\",\"default_value\":\"\"},{\"name\":\"threshold\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl", "target": "{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_id", "target": "{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path", "target": "{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:store", "target": "{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:threshold", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:threshold", "target": "{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:clean", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:clean", "target": "{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory", "target": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar", "target": "{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/mermaid_config.py", "target": "metagpt/configs/mermaid_config.py:MermaidConfig"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"name\":\"MermaidConfig\",\"package\":\"metagpt/configs/mermaid_config.py:MermaidConfig\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]},\"pyppeteer_path\":{\"name\":\"pyppeteer_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_path : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:engine"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:path"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:pyppeteer_path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/config2.py:Config:mermaid"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"lineno\":13,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MermaidConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"name\":\"MermaidConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pyppeteer_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:engine", "target": "{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:path", "target": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config", "target": "{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:pyppeteer_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:pyppeteer_path", "target": "{\"name\":\"pyppeteer_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message", "target": "{\"name\":\"Message\",\"package\":\"metagpt/schema.py:Message\",\"attributes\":{\"cause_by\":{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"id\":{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]},\"send_to\":{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]},\"sent_from\":{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}},\"methods\":{\"check_cause_by\":{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]},\"check_id\":{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]},\"check_instruct_content\":{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]},\"check_send_to\":{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]},\"check_sent_from\":{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]},\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]},\"ser_instruct_content\":{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:cause_by"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:id"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:instruct_content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:role"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:send_to"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:sent_from"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_cause_by"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_id"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_send_to"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_sent_from"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:dump"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:load"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:ser_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:to_dict"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "?:BaseModel"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/talk_action.py:TalkAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__init__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__setattr__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__str__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Message", "target": "{\"lineno\":188,\"end_lineno\":303,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Message\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Message", "target": "{\"name\":\"Message\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cause_by\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseModel]\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"send_to\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"sent_from\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:cause_by", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:cause_by", "target": "{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:id", "target": "{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:role", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:role", "target": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:send_to", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:send_to", "target": "{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:sent_from", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:sent_from", "target": "{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_cause_by", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_cause_by", "target": "{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_id", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_id", "target": "{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_instruct_content", "target": "{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_send_to", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_send_to", "target": "{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_sent_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_sent_from", "target": "{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:dump", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:dump", "target": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:ser_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:ser_instruct_content", "target": "{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:to_dict", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:to_dict", "target": "{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue", "target": "{\"name\":\"MessageQueue\",\"package\":\"metagpt/schema.py:MessageQueue\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"empty\":{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]},\"pop\":{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"pop_all\":{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]},\"push\":{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"MessageQueue\",\"Message\\\\\",\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:model_config"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:dump"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:empty"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:load"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:pop"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:pop_all"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:push"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:MessageQueue"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:Message\\"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:MessageQueue", "target": "{\"lineno\":527,\"end_lineno\":596,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageQueue\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:MessageQueue", "target": "{\"name\":\"MessageQueue\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:dump", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:dump", "target": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:empty", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:empty", "target": "{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:pop", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:pop", "target": "{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:pop_all", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:pop_all", "target": "{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:push", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:push", "target": "{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:MessageType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"name\":\"MessageType\",\"package\":\"metagpt/roles/assistant.py:MessageType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:MessageType", "target": "metagpt/roles/assistant.py:MessageType:name"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"lineno\":32,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"name\":\"MessageType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:MessageType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:MessageType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/metagpt_api.py", "target": "metagpt/provider/metagpt_api.py:MetaGPTLLM"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"name\":\"MetaGPTLLM\",\"package\":\"metagpt/provider/metagpt_api.py:MetaGPTLLM\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "metagpt/provider/metagpt_api.py:MetaGPTLLM:_calc_usage"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"lineno\":16,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"name\":\"MetaGPTLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"name\":\"MetaGPTText2Image\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image\",\"attributes\":{\"model_url\":{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}},\"methods\":{\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url"}, {"predicate": "has_class_method", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image"}, {"predicate": "has_class_method", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"lineno\":19,\"end_lineno\":81,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTText2Image\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"name\":\"MetaGPTText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url", "target": "{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image", "target": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:MethodSelect"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:Strategy"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"name\":\"MethodSelect\",\"package\":\"metagpt/strategy/tot_schema.py:MethodSelect\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "metagpt/strategy/tot_schema.py:MethodSelect:name"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MethodSelect\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"name\":\"MethodSelect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:MethodSelect:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:MethodSelect:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "{\"name\":\"MinMaxScale\",\"package\":\"metagpt/tools/libs/data_preprocess.py:MinMaxScale\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"MinMaxScaler\",\"default_\":\"\",\"description\":\"model : MinMaxScaler\",\"compositions\":[\"MinMaxScaler\"]}},\"methods\":{},\"compositions\":[\"MinMaxScaler\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:model"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "?:MinMaxScaler"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "{\"lineno\":110,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MinMaxScale\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale", "target": "{\"name\":\"MinMaxScale\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"MinMaxScaler\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:model", "target": "{\"name\":\"model\",\"type_\":\"MinMaxScaler\",\"default_\":\"\",\"description\":\"model : MinMaxScaler\",\"compositions\":[\"MinMaxScaler\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/mincraft_env/mincraft_env.py", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "{\"name\":\"MincraftEnv\",\"package\":\"metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv\",\"attributes\":{\"chest_memory\":{\"name\":\"chest_memory\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"chest_memory : dict[str, Any]\",\"compositions\":[]},\"chest_observation\":{\"name\":\"chest_observation\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chest_observation : str\",\"compositions\":[]},\"code\":{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]},\"completed_tasks\":{\"name\":\"completed_tasks\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"completed_tasks : list[str]\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"critique\":{\"name\":\"critique\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"critique : str\",\"compositions\":[]},\"current_task\":{\"name\":\"current_task\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_task : str\",\"compositions\":[]},\"event\":{\"name\":\"event\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"event : dict[str, Any]\",\"compositions\":[]},\"event_summary\":{\"name\":\"event_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"event_summary : str\",\"compositions\":[]},\"failed_tasks\":{\"name\":\"failed_tasks\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"failed_tasks : list[str]\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"program_code\":{\"name\":\"program_code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_code : str\",\"compositions\":[]},\"program_name\":{\"name\":\"program_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_name : str\",\"compositions\":[]},\"programs\":{\"name\":\"programs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"programs\",\"compositions\":[]},\"progress\":{\"name\":\"progress\",\"type_\":\"\",\"default_\":\"\",\"description\":\"progress\",\"compositions\":[]},\"qa_cache\":{\"name\":\"qa_cache\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"qa_cache : dict[str, str]\",\"compositions\":[]},\"qa_cache_questions_vectordb\":{\"name\":\"qa_cache_questions_vectordb\",\"type_\":\"\",\"default_\":\"\",\"description\":\"qa_cache_questions_vectordb\",\"compositions\":[]},\"retrieve_skills\":{\"name\":\"retrieve_skills\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"retrieve_skills : list[str]\",\"compositions\":[]},\"runtime_status\":{\"name\":\"runtime_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"runtime_status : bool\",\"compositions\":[]},\"skill_desp\":{\"name\":\"skill_desp\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_desp : str\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"skills : dict\",\"compositions\":[]},\"task_execution_time\":{\"name\":\"task_execution_time\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"task_execution_time : float\",\"compositions\":[]},\"vectordb\":{\"name\":\"vectordb\",\"type_\":\"\",\"default_\":\"\",\"description\":\"vectordb\",\"compositions\":[]}},\"methods\":{\"append_skill\":{\"name\":\"append_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"skill: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"append_skill(skill: dict)\",\"aggregations\":[]},\"on_event_execute\":{\"name\":\"on_event_execute\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_event_execute()\",\"aggregations\":[]},\"on_event_retrieve\":{\"name\":\"on_event_retrieve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_event_retrieve()\",\"aggregations\":[]},\"register_roles\":{\"name\":\"register_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Minecraft]\",\"default_\":\"\",\"description\":\"roles: Iterable['Minecraft']\",\"compositions\":[\"Iterable\",\"Minecraft\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register_roles(roles: Iterable['Minecraft'])\",\"aggregations\":[\"Minecraft\",\"Iterable\"]},\"reset_block_info\":{\"name\":\"reset_block_info\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset_block_info ()\",\"aggregations\":[]},\"save_sorted_tasks\":{\"name\":\"save_sorted_tasks\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_sorted_tasks()\",\"aggregations\":[]},\"set_mc_port\":{\"name\":\"set_mc_port\",\"args\":[{\"name\":\"mc_port\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mc_port\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_port(mc_port)\",\"aggregations\":[]},\"set_mc_resume\":{\"name\":\"set_mc_resume\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_resume()\",\"aggregations\":[]},\"summarize_chatlog\":{\"name\":\"summarize_chatlog\",\"args\":[{\"name\":\"events\",\"type_\":\"\",\"default_\":\"\",\"description\":\"events\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_chatlog(events)\",\"aggregations\":[]},\"update_chest_memory\":{\"name\":\"update_chest_memory\",\"args\":[{\"name\":\"events\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"events: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_chest_memory(events: dict)\",\"aggregations\":[]},\"update_chest_observation\":{\"name\":\"update_chest_observation\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_chest_observation()\",\"aggregations\":[]},\"update_code\":{\"name\":\"update_code\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_code(code: str)\",\"aggregations\":[]},\"update_context\":{\"name\":\"update_context\",\"args\":[{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_context(context: str)\",\"aggregations\":[]},\"update_critique\":{\"name\":\"update_critique\",\"args\":[{\"name\":\"critique\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"critique: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_critique(critique: str)\",\"aggregations\":[]},\"update_event\":{\"name\":\"update_event\",\"args\":[{\"name\":\"event\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"event: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_event(event: dict)\",\"aggregations\":[]},\"update_exploration_progress\":{\"name\":\"update_exploration_progress\",\"args\":[{\"name\":\"success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"success: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_exploration_progress(success: bool)\",\"aggregations\":[]},\"update_program_code\":{\"name\":\"update_program_code\",\"args\":[{\"name\":\"program_code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_code: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_program_code(program_code: str)\",\"aggregations\":[]},\"update_program_name\":{\"name\":\"update_program_name\",\"args\":[{\"name\":\"program_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_program_name(program_name: str)\",\"aggregations\":[]},\"update_qa_cache\":{\"name\":\"update_qa_cache\",\"args\":[{\"name\":\"qa_cache\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"qa_cache: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_qa_cache(qa_cache: dict)\",\"aggregations\":[]},\"update_retrieve_skills\":{\"name\":\"update_retrieve_skills\",\"args\":[{\"name\":\"retrieve_skills\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"retrieve_skills: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_retrieve_skills(retrieve_skills: list)\",\"aggregations\":[]},\"update_skill_desp\":{\"name\":\"update_skill_desp\",\"args\":[{\"name\":\"skill_desp\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_desp: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_skill_desp(skill_desp: str)\",\"aggregations\":[]},\"update_task\":{\"name\":\"update_task\",\"args\":[{\"name\":\"task\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_task(task: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Minecraft\",\"Iterable\"]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:chest_memory"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:chest_observation"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:code"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:completed_tasks"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:context"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:critique"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:current_task"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:event"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:event_summary"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:failed_tasks"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:model_config"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:program_code"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:program_name"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:programs"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:progress"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:qa_cache"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:qa_cache_questions_vectordb"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:retrieve_skills"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:runtime_status"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:skill_desp"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:skills"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:task_execution_time"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:vectordb"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:append_skill"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:on_event_execute"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:on_event_retrieve"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:register_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:reset_block_info"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:save_sorted_tasks"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:set_mc_port"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:set_mc_resume"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:summarize_chatlog"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_chest_memory"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_chest_observation"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_code"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_context"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_critique"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_event"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_exploration_progress"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_program_code"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_program_name"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_qa_cache"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_retrieve_skills"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_skill_desp"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_task"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "?:Minecraft"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "?:Iterable"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/base_env.py:Environment"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "{\"lineno\":23,\"end_lineno\":391,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MincraftEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv", "target": "{\"name\":\"MincraftEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"chest_memory\",\"visibility\":\"+\",\"value_type\":\"dict[str,Any]\",\"default_value\":\"\"},{\"name\":\"chest_observation\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"completed_tasks\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"critique\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"current_task\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"event\",\"visibility\":\"+\",\"value_type\":\"dict[str,Any]\",\"default_value\":\"\"},{\"name\":\"event_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"failed_tasks\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"program_code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"program_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"programs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"progress\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"qa_cache\",\"visibility\":\"+\",\"value_type\":\"dict[str,str]\",\"default_value\":\"\"},{\"name\":\"qa_cache_questions_vectordb\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"retrieve_skills\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"runtime_status\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"skill_desp\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"task_execution_time\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"vectordb\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:chest_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:chest_memory", "target": "{\"name\":\"chest_memory\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"chest_memory : dict[str, Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:chest_observation", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:chest_observation", "target": "{\"name\":\"chest_observation\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chest_observation : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:code", "target": "{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:completed_tasks", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:completed_tasks", "target": "{\"name\":\"completed_tasks\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"completed_tasks : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:context", "target": "{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:critique", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:critique", "target": "{\"name\":\"critique\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"critique : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:current_task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:current_task", "target": "{\"name\":\"current_task\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_task : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:event", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:event", "target": "{\"name\":\"event\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"event : dict[str, Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:event_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:event_summary", "target": "{\"name\":\"event_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"event_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:failed_tasks", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:failed_tasks", "target": "{\"name\":\"failed_tasks\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"failed_tasks : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:program_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:program_code", "target": "{\"name\":\"program_code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_code : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:program_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:program_name", "target": "{\"name\":\"program_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:programs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:programs", "target": "{\"name\":\"programs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"programs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:programs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:progress", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:progress", "target": "{\"name\":\"progress\",\"type_\":\"\",\"default_\":\"\",\"description\":\"progress\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:progress", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:qa_cache", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:qa_cache", "target": "{\"name\":\"qa_cache\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"qa_cache : dict[str, str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:qa_cache_questions_vectordb", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:qa_cache_questions_vectordb", "target": "{\"name\":\"qa_cache_questions_vectordb\",\"type_\":\"\",\"default_\":\"\",\"description\":\"qa_cache_questions_vectordb\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:retrieve_skills", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:retrieve_skills", "target": "{\"name\":\"retrieve_skills\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"retrieve_skills : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:runtime_status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:runtime_status", "target": "{\"name\":\"runtime_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"runtime_status : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:skill_desp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:skill_desp", "target": "{\"name\":\"skill_desp\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_desp : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:skills", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:skills", "target": "{\"name\":\"skills\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"skills : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:task_execution_time", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:task_execution_time", "target": "{\"name\":\"task_execution_time\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"task_execution_time : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:vectordb", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:vectordb", "target": "{\"name\":\"vectordb\",\"type_\":\"\",\"default_\":\"\",\"description\":\"vectordb\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:append_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:append_skill", "target": "{\"name\":\"append_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"skill: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"append_skill(skill: dict)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:on_event_execute", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:on_event_execute", "target": "{\"name\":\"on_event_execute\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_event_execute()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:on_event_retrieve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:on_event_retrieve", "target": "{\"name\":\"on_event_retrieve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_event_retrieve()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:register_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:register_roles", "target": "{\"name\":\"register_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Minecraft]\",\"default_\":\"\",\"description\":\"roles: Iterable['Minecraft']\",\"compositions\":[\"Iterable\",\"Minecraft\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register_roles(roles: Iterable['Minecraft'])\",\"aggregations\":[\"Minecraft\",\"Iterable\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:reset_block_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:reset_block_info", "target": "{\"name\":\"reset_block_info\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset_block_info ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:save_sorted_tasks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:save_sorted_tasks", "target": "{\"name\":\"save_sorted_tasks\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_sorted_tasks()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:set_mc_port", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:set_mc_port", "target": "{\"name\":\"set_mc_port\",\"args\":[{\"name\":\"mc_port\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mc_port\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_port(mc_port)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:set_mc_resume", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:set_mc_resume", "target": "{\"name\":\"set_mc_resume\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_resume()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:summarize_chatlog", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:summarize_chatlog", "target": "{\"name\":\"summarize_chatlog\",\"args\":[{\"name\":\"events\",\"type_\":\"\",\"default_\":\"\",\"description\":\"events\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_chatlog(events)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_chest_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_chest_memory", "target": "{\"name\":\"update_chest_memory\",\"args\":[{\"name\":\"events\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"events: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_chest_memory(events: dict)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_chest_observation", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_chest_observation", "target": "{\"name\":\"update_chest_observation\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_chest_observation()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_code", "target": "{\"name\":\"update_code\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_code(code: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_context", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_context", "target": "{\"name\":\"update_context\",\"args\":[{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_context(context: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_critique", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_critique", "target": "{\"name\":\"update_critique\",\"args\":[{\"name\":\"critique\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"critique: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_critique(critique: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_event", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_event", "target": "{\"name\":\"update_event\",\"args\":[{\"name\":\"event\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"event: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_event(event: dict)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_exploration_progress", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_exploration_progress", "target": "{\"name\":\"update_exploration_progress\",\"args\":[{\"name\":\"success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"success: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_exploration_progress(success: bool)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_program_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_program_code", "target": "{\"name\":\"update_program_code\",\"args\":[{\"name\":\"program_code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_code: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_program_code(program_code: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_program_name", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_program_name", "target": "{\"name\":\"update_program_name\",\"args\":[{\"name\":\"program_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"program_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_program_name(program_name: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_qa_cache", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_qa_cache", "target": "{\"name\":\"update_qa_cache\",\"args\":[{\"name\":\"qa_cache\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"qa_cache: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_qa_cache(qa_cache: dict)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_retrieve_skills", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_retrieve_skills", "target": "{\"name\":\"update_retrieve_skills\",\"args\":[{\"name\":\"retrieve_skills\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"retrieve_skills: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_retrieve_skills(retrieve_skills: list)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_skill_desp", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_skill_desp", "target": "{\"name\":\"update_skill_desp\",\"args\":[{\"name\":\"skill_desp\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_desp: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_skill_desp(skill_desp: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_task", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_env.py:MincraftEnv:update_task", "target": "{\"name\":\"update_task\",\"args\":[{\"name\":\"task\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_task(task: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "{\"name\":\"MincraftExtEnv\",\"package\":\"metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv\",\"attributes\":{\"connected\":{\"name\":\"connected\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"connected : bool\",\"compositions\":[]},\"has_reset\":{\"name\":\"has_reset\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"has_reset : bool\",\"compositions\":[]},\"mc_port\":{\"name\":\"mc_port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"mc_port : Optional[int]\",\"compositions\":[]},\"mineflayer\":{\"name\":\"mineflayer\",\"type_\":\"Optional[SubprocessMonitor]\",\"default_\":\"\",\"description\":\"mineflayer : Optional[SubprocessMonitor]\",\"compositions\":[\"SubprocessMonitor\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"request_timeout\":{\"name\":\"request_timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"request_timeout : int\",\"compositions\":[]},\"reset_options\":{\"name\":\"reset_options\",\"type_\":\"Optional[dict]\",\"default_\":\"\",\"description\":\"reset_options : Optional[dict]\",\"compositions\":[]},\"server\":{\"name\":\"server\",\"type_\":\"\",\"default_\":\"\",\"description\":\"server\",\"compositions\":[]},\"server_host\":{\"name\":\"server_host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"server_host : str\",\"compositions\":[]},\"server_paused\":{\"name\":\"server_paused\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"server_paused : bool\",\"compositions\":[]},\"server_port\":{\"name\":\"server_port\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"server_port : str\",\"compositions\":[]},\"warm_up\":{\"name\":\"warm_up\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"warm_up : dict\",\"compositions\":[]}},\"methods\":{\"check_process\":{\"name\":\"check_process\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"check_process(): dict\",\"aggregations\":[]},\"close\":{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"close(): bool\",\"aggregations\":[]},\"pause\":{\"name\":\"pause\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"pause(): bool\",\"aggregations\":[]},\"reset\":{\"name\":\"reset\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"reset(): dict\",\"aggregations\":[]},\"set_mc_port\":{\"name\":\"set_mc_port\",\"args\":[{\"name\":\"mc_port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mc_port: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_port(mc_port: int)\",\"aggregations\":[]},\"step\":{\"name\":\"step\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"programs\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"programs: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"step(code: str, programs: str): dict\",\"aggregations\":[]},\"unpause\":{\"name\":\"unpause\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"unpause(): bool\",\"aggregations\":[]}},\"compositions\":[\"SubprocessMonitor\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:connected"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:has_reset"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mc_port"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mineflayer"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:model_config"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:request_timeout"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:reset_options"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_host"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_paused"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_port"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:warm_up"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:check_process"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:close"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:pause"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:reset"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:set_mc_port"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:step"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:unpause"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/base_env.py:ExtEnv"}, {"predicate": "is_composite_of", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:_post_init_ext_env"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "{\"lineno\":25,\"end_lineno\":180,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MincraftExtEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "{\"name\":\"MincraftExtEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"connected\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"has_reset\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"mc_port\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"mineflayer\",\"visibility\":\"+\",\"value_type\":\"Optional[SubprocessMonitor]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_timeout\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"reset_options\",\"visibility\":\"+\",\"value_type\":\"Optional[dict]\",\"default_value\":\"\"},{\"name\":\"server\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"server_host\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"server_paused\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"server_port\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"warm_up\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv", "target": "?:SubprocessMonitor"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:connected", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:connected", "target": "{\"name\":\"connected\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"connected : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:has_reset", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:has_reset", "target": "{\"name\":\"has_reset\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"has_reset : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mc_port", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mc_port", "target": "{\"name\":\"mc_port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"mc_port : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mineflayer", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mineflayer", "target": "{\"name\":\"mineflayer\",\"type_\":\"Optional[SubprocessMonitor]\",\"default_\":\"\",\"description\":\"mineflayer : Optional[SubprocessMonitor]\",\"compositions\":[\"SubprocessMonitor\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:request_timeout", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:request_timeout", "target": "{\"name\":\"request_timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"request_timeout : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:reset_options", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:reset_options", "target": "{\"name\":\"reset_options\",\"type_\":\"Optional[dict]\",\"default_\":\"\",\"description\":\"reset_options : Optional[dict]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server", "target": "{\"name\":\"server\",\"type_\":\"\",\"default_\":\"\",\"description\":\"server\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_host", "target": "{\"name\":\"server_host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"server_host : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_paused", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_paused", "target": "{\"name\":\"server_paused\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"server_paused : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_port", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:server_port", "target": "{\"name\":\"server_port\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"server_port : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:warm_up", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:warm_up", "target": "{\"name\":\"warm_up\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"warm_up : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:check_process", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:check_process", "target": "{\"name\":\"check_process\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"check_process(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:close", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:close", "target": "{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"close(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:pause", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:pause", "target": "{\"name\":\"pause\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"pause(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:reset", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:reset", "target": "{\"name\":\"reset\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"reset(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:set_mc_port", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:set_mc_port", "target": "{\"name\":\"set_mc_port\",\"args\":[{\"name\":\"mc_port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mc_port: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_mc_port(mc_port: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:step", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:step", "target": "{\"name\":\"step\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"programs\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"programs: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"step(code: str, programs: str): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:unpause", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:unpause", "target": "{\"name\":\"unpause\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"unpause(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/moderation.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/moderation.py", "target": "metagpt/tools/moderation.py:Moderation"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"name\":\"Moderation\",\"package\":\"metagpt/tools/moderation.py:Moderation\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"amoderation_with_categories\":{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]},\"handle_moderation_results\":{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:llm"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:amoderation"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:handle_moderation_results"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Moderation\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"name\":\"Moderation\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:amoderation", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:amoderation", "target": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories", "target": "{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:handle_moderation_results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:handle_moderation_results", "target": "{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:NaiveSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:NaiveSolver", "target": "{\"name\":\"NaiveSolver\",\"package\":\"metagpt/strategy/solver.py:NaiveSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/solver.py:NaiveSolver", "target": "metagpt/strategy/solver.py:NaiveSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/solver.py:NaiveSolver", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:NaiveSolver", "target": "{\"lineno\":35,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NaiveSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/solver.py:NaiveSolver", "target": "{\"name\":\"NaiveSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:NaiveSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:NaiveSolver:solve", "target": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"name\":\"NoMoneyException\",\"package\":\"metagpt/utils/common.py:NoMoneyException\",\"attributes\":{\"amount\":{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:amount"}, {"predicate": "has_class_property", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:message"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:__str__"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"lineno\":313,\"end_lineno\":322,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NoMoneyException\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"name\":\"NoMoneyException\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"amount\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:amount", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException:amount", "target": "{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException:message", "target": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"name\":\"OCRResults\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:OCRResults\",\"attributes\":{\"ocr_result\":{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OCRResults\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"name\":\"OCRResults\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ocr_result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result", "target": "{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/ollama_api.py", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"name\":\"OllamaLLM\",\"package\":\"metagpt/provider/ollama_api.py:OllamaLLM\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"http_method\":{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]},\"suffix_url\":{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:http_method"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:pricing_plan"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"lineno\":27,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"name\":\"OllamaLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"http_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"suffix_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:client", "target": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:http_method", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:http_method", "target": "{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:pricing_plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:pricing_plan", "target": "{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url", "target": "{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage", "target": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "{\"name\":\"OneHotEncode\",\"package\":\"metagpt/tools/libs/data_preprocess.py:OneHotEncode\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"OneHotEncoder\",\"default_\":\"\",\"description\":\"model : OneHotEncoder\",\"compositions\":[\"OneHotEncoder\"]}},\"methods\":{\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[\"OneHotEncoder\"],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:model"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:transform"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "?:OneHotEncoder"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "{\"lineno\":165,\"end_lineno\":180,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OneHotEncode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode", "target": "{\"name\":\"OneHotEncode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"OneHotEncoder\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:model", "target": "{\"name\":\"model\",\"type_\":\"OneHotEncoder\",\"default_\":\"\",\"description\":\"model : OneHotEncoder\",\"compositions\":[\"OneHotEncoder\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/openai_api.py", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_function", "source": "metagpt/provider/openai_api.py", "target": "metagpt/provider/openai_api.py:log_and_reraise"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"name\":\"OpenAILLM\",\"package\":\"metagpt/provider/openai_api.py:OpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]},\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}},\"methods\":{\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: list[dict]): dict\",\"aggregations\":[]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"aspeech_to_text\":{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]},\"atext_to_speech\":{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]},\"gen_image\":{\"name\":\"gen_image\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"size\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"size: str\",\"compositions\":[]},{\"name\":\"quality\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"quality: str\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]},{\"name\":\"resp_format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list['Image']\",\"description\":\"list['Image']\",\"compositions\":[\"Image\"]},\"description\":\"gen_image(prompt: str, size: str, quality: str, model: str, resp_format: str): list['Image']\",\"aggregations\":[\"Image\"]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"ChatCompletion\",\"Image\",\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:pricing_plan"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aask_code"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:amoderation"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:gen_image"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_costs"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:AsyncOpenAI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:ChatCompletion"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:Image"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "is_composite_of", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_init_model"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_init_client"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_process_message"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"lineno\":54,\"end_lineno\":287,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"name\":\"OpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncOpenAI\",\"default_value\":\"\"},{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:CostManager"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens", "target": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:pricing_plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:pricing_plan", "target": "{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aask_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aask_code", "target": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: list[dict]): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:amoderation", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:amoderation", "target": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text", "target": "{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech", "target": "{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:gen_image", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:gen_image", "target": "{\"name\":\"gen_image\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"size\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"size: str\",\"compositions\":[]},{\"name\":\"quality\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"quality: str\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]},{\"name\":\"resp_format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list['Image']\",\"description\":\"list['Image']\",\"compositions\":[\"Image\"]},\"description\":\"gen_image(prompt: str, size: str, quality: str, model: str, resp_format: str): list['Image']\",\"aggregations\":[\"Image\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments", "target": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"name\":\"OpenAIResponse\",\"package\":\"metagpt/provider/general_api_base.py:OpenAIResponse\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},\"operation_location\":{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]},\"request_id\":{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]},\"response_ms\":{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]},\"retry_after\":{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:data"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:organization"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"lineno\":123,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIResponse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"name\":\"OpenAIResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"operation_location\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"response_ms\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"retry_after\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:data", "target": "{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"name\":\"OpenAIText2Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}},\"methods\":{\"text_2_embedding\":{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"lineno\":44,\"end_lineno\":71,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Embedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"name\":\"OpenAIText2Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding", "target": "{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_image.py", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"predicate": "has_function", "source": "metagpt/tools/openai_text_to_image.py", "target": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"name\":\"OpenAIText2Image\",\"package\":\"metagpt/tools/openai_text_to_image.py:OpenAIText2Image\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"get_image_data\":{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]},\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"lineno\":17,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Image\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"name\":\"OpenAIText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data", "target": "{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image", "target": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/open_llm_api.py", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"name\":\"OpenLLM\",\"package\":\"metagpt/provider/open_llm_api.py:OpenLLM\",\"attributes\":{\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:cost_manager"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"lineno\":16,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"name\":\"OpenLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/open_llm_api.py:OpenLLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "{\"name\":\"OrdinalEncode\",\"package\":\"metagpt/tools/libs/data_preprocess.py:OrdinalEncode\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"OrdinalEncoder\",\"default_\":\"\",\"description\":\"model : OrdinalEncoder\",\"compositions\":[\"OrdinalEncoder\"]}},\"methods\":{},\"compositions\":[\"OrdinalEncoder\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:model"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "?:OrdinalEncoder"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "{\"lineno\":154,\"end_lineno\":161,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OrdinalEncode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode", "target": "{\"name\":\"OrdinalEncode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"OrdinalEncoder\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:model", "target": "{\"name\":\"model\",\"type_\":\"OrdinalEncoder\",\"default_\":\"\",\"description\":\"model : OrdinalEncoder\",\"compositions\":[\"OrdinalEncoder\"]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"name\":\"OutputParser\",\"package\":\"metagpt/utils/common.py:OutputParser\",\"attributes\":{},\"methods\":{\"extract_content\":{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]},\"extract_struct\":{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]},\"parse_data\":{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]},\"parse_data_with_mapping\":{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]},\"parse_python_code\":{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"type\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:extract_content"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:extract_struct"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_blocks"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_data"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_file_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_python_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_str"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/common.py:OutputParser", "target": "?:type"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"lineno\":63,\"end_lineno\":237,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OutputParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"name\":\"OutputParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:extract_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:extract_content", "target": "{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:extract_struct", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:extract_struct", "target": "{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_blocks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_blocks", "target": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_code", "target": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_data", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_data", "target": "{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping", "target": "{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_file_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_file_list", "target": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_python_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_python_code", "target": "{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_str", "target": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"name\":\"Parameter\",\"package\":\"metagpt/learn/skill_loader.py:Parameter\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "metagpt/learn/skill_loader.py:Parameter:description"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "metagpt/learn/skill_loader.py:Parameter:type"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Parameter\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"name\":\"Parameter\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter:description", "target": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter:type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter:type", "target": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan", "target": "{\"name\":\"Plan\",\"package\":\"metagpt/schema.py:Plan\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"current_task\":{\"name\":\"current_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task\",\"compositions\":[]},\"current_task_id\":{\"name\":\"current_task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_task_id : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"task_map\":{\"name\":\"task_map\",\"type_\":\"dict[str,Task]\",\"default_\":\"\",\"description\":\"task_map : dict[str, Task]\",\"compositions\":[\"Task\"]},\"tasks\":{\"name\":\"tasks\",\"type_\":\"list[Task]\",\"default_\":\"\",\"description\":\"tasks : list[Task]\",\"compositions\":[\"Task\"]}},\"methods\":{\"add_tasks\":{\"name\":\"add_tasks\",\"args\":[{\"name\":\"tasks\",\"type_\":\"list[Task]\",\"default_\":\"\",\"description\":\"tasks: list[Task]\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_tasks(tasks: list[Task])\",\"aggregations\":[\"Task\"]},\"append_task\":{\"name\":\"append_task\",\"args\":[{\"name\":\"new_task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"new_task: Task\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"append_task(new_task: Task)\",\"aggregations\":[\"Task\"]},\"finish_current_task\":{\"name\":\"finish_current_task\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"finish_current_task()\",\"aggregations\":[]},\"get_finished_tasks\":{\"name\":\"get_finished_tasks\",\"args\":[],\"return_args\":{\"type_\":\"list[Task]\",\"description\":\"list[Task]\",\"compositions\":[\"Task\"]},\"description\":\"get_finished_tasks(): list[Task]\",\"aggregations\":[\"Task\"]},\"has_task_id\":{\"name\":\"has_task_id\",\"args\":[{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"has_task_id(task_id: str): bool\",\"aggregations\":[]},\"replace_task\":{\"name\":\"replace_task\",\"args\":[{\"name\":\"new_task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"new_task: Task\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"replace_task(new_task: Task)\",\"aggregations\":[\"Task\"]},\"reset_task\":{\"name\":\"reset_task\",\"args\":[{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset_task(task_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Task\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:context"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:current_task"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:current_task_id"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:goal"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:task_map"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:tasks"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:add_tasks"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:append_task"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:finish_current_task"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:get_finished_tasks"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:has_task_id"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:replace_task"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:reset_task"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Plan", "target": "metagpt/strategy/planner.py:Planner"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Plan", "target": "metagpt/strategy/planner.py:Planner:plan"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Task"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:_topological_sort"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Plan", "target": "metagpt/schema.py:Plan:_update_current_task"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Plan", "target": "{\"lineno\":363,\"end_lineno\":524,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Plan\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Plan", "target": "{\"name\":\"Plan\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"current_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_task_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_map\",\"visibility\":\"+\",\"value_type\":\"dict[str,Task]\",\"default_value\":\"\"},{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"list[Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Plan", "target": "?:Task"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:context", "target": "{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:current_task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:current_task", "target": "{\"name\":\"current_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:current_task", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:current_task_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:current_task_id", "target": "{\"name\":\"current_task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_task_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:task_map", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:task_map", "target": "{\"name\":\"task_map\",\"type_\":\"dict[str,Task]\",\"default_\":\"\",\"description\":\"task_map : dict[str, Task]\",\"compositions\":[\"Task\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:tasks", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:tasks", "target": "{\"name\":\"tasks\",\"type_\":\"list[Task]\",\"default_\":\"\",\"description\":\"tasks : list[Task]\",\"compositions\":[\"Task\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:add_tasks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:add_tasks", "target": "{\"name\":\"add_tasks\",\"args\":[{\"name\":\"tasks\",\"type_\":\"list[Task]\",\"default_\":\"\",\"description\":\"tasks: list[Task]\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_tasks(tasks: list[Task])\",\"aggregations\":[\"Task\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:append_task", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:append_task", "target": "{\"name\":\"append_task\",\"args\":[{\"name\":\"new_task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"new_task: Task\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"append_task(new_task: Task)\",\"aggregations\":[\"Task\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:finish_current_task", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:finish_current_task", "target": "{\"name\":\"finish_current_task\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"finish_current_task()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:get_finished_tasks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:get_finished_tasks", "target": "{\"name\":\"get_finished_tasks\",\"args\":[],\"return_args\":{\"type_\":\"list[Task]\",\"description\":\"list[Task]\",\"compositions\":[\"Task\"]},\"description\":\"get_finished_tasks(): list[Task]\",\"aggregations\":[\"Task\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:has_task_id", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:has_task_id", "target": "{\"name\":\"has_task_id\",\"args\":[{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"has_task_id(task_id: str): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:replace_task", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:replace_task", "target": "{\"name\":\"replace_task\",\"args\":[{\"name\":\"new_task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"new_task: Task\",\"compositions\":[\"Task\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"replace_task(new_task: Task)\",\"aggregations\":[\"Task\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:reset_task", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Plan:reset_task", "target": "{\"name\":\"reset_task\",\"args\":[{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset_task(task_id: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/planner.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/planner.py", "target": "metagpt/strategy/planner.py:Planner"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner", "target": "{\"name\":\"Planner\",\"package\":\"metagpt/strategy/planner.py:Planner\",\"attributes\":{\"auto_run\":{\"name\":\"auto_run\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_run : bool\",\"compositions\":[]},\"current_task\":{\"name\":\"current_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task\",\"compositions\":[]},\"current_task_id\":{\"name\":\"current_task_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task_id\",\"compositions\":[]},\"plan\":{\"name\":\"plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"plan\",\"compositions\":[]},\"use_tools\":{\"name\":\"use_tools\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_tools : bool\",\"compositions\":[]},\"working_memory\":{\"name\":\"working_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_memory\",\"compositions\":[]}},\"methods\":{\"ask_review\":{\"name\":\"ask_review\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]},{\"name\":\"auto_run\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_run: bool\",\"compositions\":[]},{\"name\":\"trigger\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"trigger: str\",\"compositions\":[]},{\"name\":\"review_context_len\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"review_context_len: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_review(task_result: TaskResult, auto_run: bool, trigger: str, review_context_len: int)\",\"aggregations\":[\"TaskResult\"]},\"confirm_task\":{\"name\":\"confirm_task\",\"args\":[{\"name\":\"task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"task: Task\",\"compositions\":[\"Task\"]},{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]},{\"name\":\"review\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"review: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"confirm_task(task: Task, task_result: TaskResult, review: str)\",\"aggregations\":[\"TaskResult\",\"Task\"]},\"get_useful_memories\":{\"name\":\"get_useful_memories\",\"args\":[{\"name\":\"task_exclude_field\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task_exclude_field\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_useful_memories(task_exclude_field): list[Message]\",\"aggregations\":[\"Message\"]},\"process_task_result\":{\"name\":\"process_task_result\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"process_task_result(task_result: TaskResult)\",\"aggregations\":[\"TaskResult\"]},\"update_plan\":{\"name\":\"update_plan\",\"args\":[{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal: str\",\"compositions\":[]},{\"name\":\"max_tasks\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_tasks: int\",\"compositions\":[]},{\"name\":\"max_retries\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_retries: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_plan(goal: str, max_tasks: int, max_retries: int)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"TaskResult\",\"Task\",\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:auto_run"}, {"predicate": "has_class_method", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:current_task"}, {"predicate": "has_class_method", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:current_task_id"}, {"predicate": "has_class_property", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:plan"}, {"predicate": "has_class_property", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:use_tools"}, {"predicate": "has_class_property", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:working_memory"}, {"predicate": "has_class_method", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:ask_review"}, {"predicate": "has_class_method", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:confirm_task"}, {"predicate": "has_class_method", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:get_useful_memories"}, {"predicate": "has_class_method", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:process_task_result"}, {"predicate": "has_class_method", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:update_plan"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/planner.py:Planner", "target": "?:TaskResult"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/planner.py:Planner", "target": "?:Task"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/planner.py:Planner", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/roles/role.py:Role:planner"}, {"predicate": "has_class_method", "source": "metagpt/strategy/planner.py:Planner", "target": "metagpt/strategy/planner.py:Planner:__init__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:Planner", "target": "{\"lineno\":29,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Planner\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/planner.py:Planner", "target": "{\"name\":\"Planner\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auto_run\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"current_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_task_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"use_tools\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"working_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:auto_run", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:auto_run", "target": "{\"name\":\"auto_run\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_run : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:current_task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:current_task", "target": "{\"name\":\"current_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:current_task", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:current_task_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:current_task_id", "target": "{\"name\":\"current_task_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_task_id\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:current_task_id", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:plan", "target": "{\"name\":\"plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"plan\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:use_tools", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:use_tools", "target": "{\"name\":\"use_tools\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_tools : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:working_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:working_memory", "target": "{\"name\":\"working_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:ask_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:ask_review", "target": "{\"name\":\"ask_review\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]},{\"name\":\"auto_run\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_run: bool\",\"compositions\":[]},{\"name\":\"trigger\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"trigger: str\",\"compositions\":[]},{\"name\":\"review_context_len\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"review_context_len: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_review(task_result: TaskResult, auto_run: bool, trigger: str, review_context_len: int)\",\"aggregations\":[\"TaskResult\"]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:confirm_task", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:confirm_task", "target": "{\"name\":\"confirm_task\",\"args\":[{\"name\":\"task\",\"type_\":\"Task\",\"default_\":\"\",\"description\":\"task: Task\",\"compositions\":[\"Task\"]},{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]},{\"name\":\"review\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"review: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"confirm_task(task: Task, task_result: TaskResult, review: str)\",\"aggregations\":[\"TaskResult\",\"Task\"]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:get_useful_memories", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:get_useful_memories", "target": "{\"name\":\"get_useful_memories\",\"args\":[{\"name\":\"task_exclude_field\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task_exclude_field\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_useful_memories(task_exclude_field): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:process_task_result", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:process_task_result", "target": "{\"name\":\"process_task_result\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"process_task_result(task_result: TaskResult)\",\"aggregations\":[\"TaskResult\"]}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:update_plan", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/planner.py:Planner:update_plan", "target": "{\"name\":\"update_plan\",\"args\":[{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal: str\",\"compositions\":[]},{\"name\":\"max_tasks\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_tasks: int\",\"compositions\":[]},{\"name\":\"max_retries\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_retries: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_plan(goal: str, max_tasks: int, max_retries: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_log_stream"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"name\":\"PlaywrightWrapper\",\"package\":\"metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]},\"context_kwargs\":{\"name\":\"context_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"context_kwargs : dict\",\"compositions\":[]},\"launch_kwargs\":{\"name\":\"launch_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"launch_kwargs : dict\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}},\"compositions\":[],\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:context_kwargs"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:WebPage"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:WebPage\\"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"lineno\":18,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PlaywrightWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"name\":\"PlaywrightWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\",\"default_value\":\"\"},{\"name\":\"context_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type", "target": "{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:context_kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:context_kwargs", "target": "{\"name\":\"context_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"context_kwargs : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs", "target": "{\"name\":\"launch_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"launch_kwargs : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "{\"name\":\"PolynomialExpansion\",\"package\":\"metagpt/tools/libs/feature_engineering.py:PolynomialExpansion\",\"attributes\":{\"cols\":{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]},\"degree\":{\"name\":\"degree\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"degree : int\",\"compositions\":[]},\"label_col\":{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]},\"poly\":{\"name\":\"poly\",\"type_\":\"PolynomialFeatures\",\"default_\":\"\",\"description\":\"poly : PolynomialFeatures\",\"compositions\":[\"PolynomialFeatures\"]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[\"PolynomialFeatures\"],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:cols"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:degree"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:label_col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:poly"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:transform"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "?:PolynomialFeatures"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "{\"lineno\":28,\"end_lineno\":67,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PolynomialExpansion\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion", "target": "{\"name\":\"PolynomialExpansion\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"degree\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"label_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"poly\",\"visibility\":\"+\",\"value_type\":\"PolynomialFeatures\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:cols", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:cols", "target": "{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:degree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:degree", "target": "{\"name\":\"degree\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"degree : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:label_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:label_col", "target": "{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:poly", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:poly", "target": "{\"name\":\"poly\",\"type_\":\"PolynomialFeatures\",\"default_\":\"\",\"description\":\"poly : PolynomialFeatures\",\"compositions\":[\"PolynomialFeatures\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/prepare_documents.py", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"name\":\"PrepareDocuments\",\"package\":\"metagpt/actions/prepare_documents.py:PrepareDocuments\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:config"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"lineno\":21,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareDocuments\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"name\":\"PrepareDocuments\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/prepare_interview.py", "target": "metagpt/actions/prepare_interview.py:PrepareInterview"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"name\":\"PrepareInterview\",\"package\":\"metagpt/actions/prepare_interview.py:PrepareInterview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/prepare_interview.py:PrepareInterview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/prepare_interview.py:PrepareInterview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareInterview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"name\":\"PrepareInterview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/product_manager.py", "target": "metagpt/roles/product_manager.py:ProductManager"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"name\":\"ProductManager\",\"package\":\"metagpt/roles/product_manager.py:ProductManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"todo_action\":{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:todo_action"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:_observe"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"lineno\":16,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProductManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"name\":\"ProductManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:todo_action", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:todo_action", "target": "{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/project_manager.py", "target": "metagpt/roles/project_manager.py:ProjectManager"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"name\":\"ProjectManager\",\"package\":\"metagpt/roles/project_manager.py:ProjectManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:__init__"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"name\":\"ProjectManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"name\":\"ProjectRepo\",\"package\":\"metagpt/utils/project_repo.py:ProjectRepo\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]},\"resources\":{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]},\"src_relative_path\":{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]},\"srcs\":{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]},\"test_outputs\":{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]},\"tests\":{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"code_files_exists\":{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]},\"with_src_path\":{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"Path\",\"ProjectRepo\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\",\"ProjectRepo\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:git_repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:requirement"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:srcs"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:ProjectRepo"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/context.py:Context:repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:__str__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"lineno\":90,\"end_lineno\":149,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"name\":\"ProjectRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"resources\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"src_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"srcs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"test_outputs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tests\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:docs", "target": "{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:resources", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:resources", "target": "{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs", "target": "{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:tests", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:tests", "target": "{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists", "target": "{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path", "target": "{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"Path\",\"ProjectRepo\"]}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/prompt.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/prompt.py", "target": "metagpt/roles/prompt.py:PromptString"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PromptString", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"name\":\"PromptString\",\"package\":\"metagpt/roles/prompt.py:PromptString\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/prompt.py:PromptString", "target": "metagpt/roles/prompt.py:PromptString:name"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"lineno\":27,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PromptString\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"name\":\"PromptString\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PromptString:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/prompt.py:PromptString:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/qa_engineer.py", "target": "metagpt/roles/qa_engineer.py:QaEngineer"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"name\":\"QaEngineer\",\"package\":\"metagpt/roles/qa_engineer.py:QaEngineer\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"test_round\":{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]},\"test_round_allowed\":{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:test_round"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_observe"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"lineno\":27,\"end_lineno\":181,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QaEngineer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"name\":\"QaEngineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_round\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"test_round_allowed\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round", "target": "{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed", "target": "{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/qdrant_store.py", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection"}, {"predicate": "has_class", "source": "metagpt/document_store/qdrant_store.py", "target": "metagpt/document_store/qdrant_store.py:QdrantStore"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"name\":\"QdrantConnection\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantConnection\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:host"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:port"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:url"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"lineno\":11,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantConnection\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"name\":\"QdrantConnection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:host", "target": "{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory", "target": "{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:port", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:port", "target": "{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:url", "target": "{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"name\":\"QdrantStore\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]},\"create_collection\":{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]},\"delete_collection\":{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]},\"has_collection\":{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}},\"compositions\":[\"QdrantClient\"],\"aggregations\":[\"PointStruct\",\"VectorParams\",\"Filter\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:client"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:QdrantClient"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:PointStruct"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:VectorParams"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:Filter"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"lineno\":28,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"name\":\"QdrantStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"QdrantClient\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:client", "target": "{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection", "target": "{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection", "target": "{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection", "target": "{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:ReActSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:ReActSolver", "target": "{\"name\":\"ReActSolver\",\"package\":\"metagpt/strategy/solver.py:ReActSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/solver.py:ReActSolver", "target": "metagpt/strategy/solver.py:ReActSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/solver.py:ReActSolver", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:ReActSolver", "target": "{\"lineno\":59,\"end_lineno\":63,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReActSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/solver.py:ReActSolver", "target": "{\"name\":\"ReActSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:ReActSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:ReActSolver:solve", "target": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:ReadAPIRegistry", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:ReadAPIRegistry", "target": "{\"name\":\"ReadAPIRegistry\",\"package\":\"metagpt/environment/api/env_api.py:ReadAPIRegistry\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/api/env_api.py:ReadAPIRegistry", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry"}, {"predicate": "has_page_info", "source": "metagpt/environment/api/env_api.py:ReadAPIRegistry", "target": "{\"lineno\":57,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReadAPIRegistry\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/api/env_api.py:ReadAPIRegistry", "target": "{\"name\":\"ReadAPIRegistry\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_class_view.py", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"name\":\"RebuildClassView\",\"package\":\"metagpt/actions/rebuild_class_view.py:RebuildClassView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"lineno\":32,\"end_lineno\":209,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"name\":\"RebuildClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "?:GraphRepository"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"name\":\"RebuildSequenceView\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"parse_participant\":{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"lineno\":76,\"end_lineno\":571,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildSequenceView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"name\":\"RebuildSequenceView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "?:GraphRepository"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant", "target": "{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/redis.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/redis.py", "target": "metagpt/utils/redis.py:Redis"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis", "target": "{\"name\":\"Redis\",\"package\":\"metagpt/utils/redis.py:Redis\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}},\"methods\":{\"close\":{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\"],\"aggregations\":[\"bytes\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:config"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:close"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:set"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/redis.py:Redis", "target": "?:bytes\\"}, {"predicate": "is_composite_of", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:_connect"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:Redis", "target": "{\"lineno\":19,\"end_lineno\":63,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Redis\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/redis.py:Redis", "target": "{\"name\":\"Redis\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/redis.py:Redis", "target": "?:RedisConfig"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:config", "target": "{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:close", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:close", "target": "{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/redis_config.py", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"name\":\"RedisConfig\",\"package\":\"metagpt/configs/redis_config.py:RedisConfig\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]},\"password\":{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]},\"username\":{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}},\"methods\":{\"to_kwargs\":{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]},\"to_url\":{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:db"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:host"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:password"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:port"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:username"}, {"predicate": "has_class_method", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:to_url"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"lineno\":11,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RedisConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"name\":\"RedisConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"password\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"username\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:db", "target": "{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:host", "target": "{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:password", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:password", "target": "{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:port", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:port", "target": "{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:username", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:username", "target": "{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs", "target": "{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:to_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:to_url", "target": "{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:RepairType"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_json_format"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"name\":\"RepairType\",\"package\":\"metagpt/utils/repair_llm_raw_output.py:RepairType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "metagpt/utils/repair_llm_raw_output.py:RepairType:name"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepairType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"name\":\"RepairType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"name\":\"ReplyData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:ReplyData\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"lineno\":35,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"name\":\"ReplyData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"name\":\"ReplyQuestion\",\"package\":\"metagpt/actions/invoice_ocr.py:ReplyQuestion\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"lineno\":166,\"end_lineno\":189,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyQuestion\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"name\":\"ReplyQuestion\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo", "target": "{\"name\":\"Repo\",\"package\":\"metagpt/document.py:Repo\",\"attributes\":{\"assets\":{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"codes\":{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"docs\":{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"eda\":{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]},\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]},\"get_text_documents\":{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}},\"compositions\":[\"Document\",\"Path\"],\"aggregations\":[\"RepoMetadata\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:assets"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:codes"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:docs"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:eda"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:get"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:get_text_documents"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:set"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:to_path"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Repo", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Repo", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/document.py:Repo", "target": "?:RepoMetadata"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:_set"}, {"predicate": "has_page_info", "source": "metagpt/document.py:Repo", "target": "{\"lineno\":175,\"end_lineno\":239,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Repo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:Repo", "target": "{\"name\":\"Repo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"assets\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"codes\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:assets", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:assets", "target": "{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:codes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:codes", "target": "{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:docs", "target": "{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:eda", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:eda", "target": "{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:get_text_documents", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:get_text_documents", "target": "{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:to_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:to_path", "target": "{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"name\":\"RepoFileInfo\",\"package\":\"metagpt/repo_parser.py:RepoFileInfo\",\"attributes\":{\"classes\":{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]},\"file\":{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]},\"functions\":{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]},\"globals\":{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]},\"page_info\":{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:classes"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:file"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:functions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:globals"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:page_info"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"lineno\":30,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoFileInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"name\":\"RepoFileInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"classes\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"functions\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"globals\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"page_info\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:classes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:classes", "target": "{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:file", "target": "{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:functions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:functions", "target": "{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:globals", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:globals", "target": "{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:page_info", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:page_info", "target": "{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata", "target": "{\"name\":\"RepoMetadata\",\"package\":\"metagpt/document.py:RepoMetadata\",\"attributes\":{\"n_chars\":{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]},\"n_docs\":{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"symbols\":{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:n_chars"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:n_docs"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:symbols"}, {"predicate": "has_page_info", "source": "metagpt/document.py:RepoMetadata", "target": "{\"lineno\":168,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoMetadata\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:RepoMetadata", "target": "{\"name\":\"RepoMetadata\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"n_chars\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_docs\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"symbols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:n_chars", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:n_chars", "target": "{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:n_docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:n_docs", "target": "{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:symbols", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:symbols", "target": "{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"name\":\"RepoParser\",\"package\":\"metagpt/repo_parser.py:RepoParser\",\"attributes\":{\"base_directory\":{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"extract_class_and_function_info\":{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]},\"generate_dataframe_structure\":{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"output_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path: Path)\",\"aggregations\":[\"Path\"]},\"generate_json_structure\":{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"output_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path: Path)\",\"aggregations\":[\"Path\"]},\"generate_structure\":{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"output_path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path: str \\\\| Path, mode): Path\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"generate_symbols\":{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]},\"node_to_str\":{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]},\"rebuild_class_views\":{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"RepoFileInfo\",\"str\\\\\",\"CodeBlockInfo\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:base_directory"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_json_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_symbols"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:node_to_str"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:rebuild_class_views"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:RepoFileInfo"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:CodeBlockInfo\\"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_file"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_expr"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_name"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_if"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_if_compare"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_variable"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_assign"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_classes"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_split_class_line"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_split_relationship_line"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_get_label"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_create_path_mapping"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_repair_namespaces"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_repair_ns"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_find_root"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"lineno\":422,\"end_lineno\":1005,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"name\":\"RepoParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"base_directory\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:base_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:base_directory", "target": "{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info", "target": "{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure", "target": "{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"output_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_json_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_json_structure", "target": "{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"output_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_structure", "target": "{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"output_path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path: str \\\\| Path, mode): Path\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_symbols", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_symbols", "target": "{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:node_to_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:node_to_str", "target": "{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:rebuild_class_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:rebuild_class_views", "target": "{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/researcher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/researcher.py", "target": "metagpt/roles/researcher.py:Report"}, {"predicate": "has_class", "source": "metagpt/roles/researcher.py", "target": "metagpt/roles/researcher.py:Researcher"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report", "target": "{\"name\":\"Report\",\"package\":\"metagpt/roles/researcher.py:Report\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"links\":{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]},\"summaries\":{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"tuple\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:content"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:links"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:summaries"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:topic"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/researcher.py:Report", "target": "?:tuple"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:Report", "target": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Report\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/researcher.py:Report", "target": "{\"name\":\"Report\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"links\",\"visibility\":\"+\",\"value_type\":\"Optional[dict[str,list[str]]]\",\"default_value\":\"\"},{\"name\":\"summaries\",\"visibility\":\"+\",\"value_type\":\"Optional[list[tuple[str,str]]]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:links", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:links", "target": "{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:summaries", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:summaries", "target": "{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"name\":\"Researcher\",\"package\":\"metagpt/roles/researcher.py:Researcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"research_system_text\":{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]},\"write_report\":{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Message\",\"Action\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:react"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:research_system_text"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:write_report"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "?:Action"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"lineno\":28,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Researcher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"name\":\"Researcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:research_system_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:research_system_text", "target": "{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:write_report", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:write_report", "target": "{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"name\":\"ResourceFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:ResourceFileRepositories\",\"attributes\":{\"api_spec_and_task\":{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"competitive_analysis\":{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]},\"data_api_design\":{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"sd_output\":{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]},\"seq_flow\":{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"lineno\":63,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResourceFileRepositories\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"name\":\"ResourceFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_spec_and_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"competitive_analysis\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"data_api_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_output\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"seq_flow\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task", "target": "{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change", "target": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary", "target": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis", "target": "{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design", "target": "{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo", "target": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd", "target": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output", "target": "{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow", "target": "{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design", "target": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"name\":\"ResultEmbedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"usage\":{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Embedding\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"predicate": "is_composite_of", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"lineno\":34,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResultEmbedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"name\":\"ResultEmbedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"List[Embedding]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"usage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "?:Embedding"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data", "target": "{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_", "target": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage", "target": "{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"name\":\"Returns\",\"package\":\"metagpt/learn/skill_loader.py:Returns\",\"attributes\":{\"format\":{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Returns:format"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Returns:type"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Skill:returns"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"lineno\":24,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Returns\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"name\":\"Returns\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"format\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns:format", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns:format", "target": "{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns:type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns:type", "target": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "{\"name\":\"ReverseUseCase\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:ReverseUseCase\",\"attributes\":{\"actors\":{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"inputs\":{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]},\"outputs\":{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"steps\":{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:actors"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:description"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:inputs"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:outputs"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:reason"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:steps"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "{\"lineno\":40,\"end_lineno\":58,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReverseUseCase\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase", "target": "{\"name\":\"ReverseUseCase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"actors\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"outputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"steps\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:actors", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:actors", "target": "{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:inputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:inputs", "target": "{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:outputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:outputs", "target": "{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:reason", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:reason", "target": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:steps", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase:steps", "target": "{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "{\"name\":\"ReverseUseCaseDetails\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]},\"use_cases\":{\"name\":\"use_cases\",\"type_\":\"List[ReverseUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[ReverseUseCase]\",\"compositions\":[\"ReverseUseCase\"]}},\"methods\":{},\"compositions\":[\"ReverseUseCase\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:description"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:relationship"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:use_cases"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCase"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "{\"lineno\":61,\"end_lineno\":73,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReverseUseCaseDetails\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "{\"name\":\"ReverseUseCaseDetails\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"use_cases\",\"visibility\":\"+\",\"value_type\":\"List[ReverseUseCase]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails", "target": "?:ReverseUseCase"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:relationship", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:relationship", "target": "{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:use_cases", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:ReverseUseCaseDetails:use_cases", "target": "{\"name\":\"use_cases\",\"type_\":\"List[ReverseUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[ReverseUseCase]\",\"compositions\":[\"ReverseUseCase\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"name\":\"ReviewMode\",\"package\":\"metagpt/actions/action_node.py:ReviewMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "metagpt/actions/action_node.py:ReviewMode:name"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"lineno\":27,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviewMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"name\":\"ReviewMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviewMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviewMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"name\":\"ReviseMode\",\"package\":\"metagpt/actions/action_node.py:ReviseMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "metagpt/actions/action_node.py:ReviseMode:name"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"lineno\":32,\"end_lineno\":35,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviseMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"name\":\"ReviseMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviseMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviseMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "{\"name\":\"RobustScale\",\"package\":\"metagpt/tools/libs/data_preprocess.py:RobustScale\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"RobustScaler\",\"default_\":\"\",\"description\":\"model : RobustScaler\",\"compositions\":[\"RobustScaler\"]}},\"methods\":{},\"compositions\":[\"RobustScaler\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "metagpt/tools/libs/data_preprocess.py:RobustScale:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "metagpt/tools/libs/data_preprocess.py:RobustScale:model"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "?:RobustScaler"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "metagpt/tools/libs/data_preprocess.py:RobustScale:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "{\"lineno\":143,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RobustScale\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale", "target": "{\"name\":\"RobustScale\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"RobustScaler\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale:model", "target": "{\"name\":\"model\",\"type_\":\"RobustScaler\",\"default_\":\"\",\"description\":\"model : RobustScaler\",\"compositions\":[\"RobustScaler\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/role.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:RoleReactMode"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role", "target": "{\"name\":\"Role\",\"package\":\"metagpt/roles/role.py:Role\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"actions\":{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]},\"addresses\":{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"is_human\":{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"latest_observed_msg\":{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"planner\":{\"name\":\"planner\",\"type_\":\"\",\"default_\":\"\",\"description\":\"planner\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"project_repo\":{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]},\"recovered\":{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"states\":{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]},\"check_addresses\":{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]},\"get_memories\":{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]},\"is_watch\":{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]},\"put_message\":{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]},\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"set_action\":{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]},\"set_actions\":{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]},\"set_env\":{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]},\"set_todo\":{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]},\"validate_role_extra\":{\"name\":\"validate_role_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_role_extra()\",\"aggregations\":[]}},\"compositions\":[\"Action\",\"SerializeAsAny\",\"Message\"],\"aggregations\":[\"ActionOutput\",\"Message\\\\\",\"Type\",\"Environment\"]}"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:action_description"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:actions"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:addresses"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:desc"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:git_repo"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_human"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_idle"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:latest_observed_msg"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:llm"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:model_config"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:planner"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_name"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_path"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_repo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:prompt_schema"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:rc"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:recovered"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:role_id"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:src_workspace"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:states"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:todo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:act"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:check_addresses"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:get_memories"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_watch"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:publish_message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:put_message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:react"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:run"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_action"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_addresses"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_env"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_todo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:think"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:validate_role_extra"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:ActionOutput"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Message\\"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Type"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Environment"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/role.py:Role", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/role.py:Role", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:Role", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:Role", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_process_role_extra"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_reset"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_setting"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_check_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_init_action"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_set_react_mode"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_watch"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_set_state"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_get_prefix"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_observe"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_react"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act_by_order"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_plan_and_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act_on_task"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:Role", "target": "{\"lineno\":133,\"end_lineno\":602,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Role\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:Role", "target": "{\"name\":\"Role\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"actions\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Action]]\",\"default_value\":\"\"},{\"name\":\"addresses\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_human\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"latest_observed_msg\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"planner\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"recovered\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"states\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:Action"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:action_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:action_description", "target": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:action_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:actions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:actions", "target": "{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:addresses", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:addresses", "target": "{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:git_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_human", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_human", "target": "{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_idle", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_idle", "target": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_idle", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:latest_observed_msg", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:latest_observed_msg", "target": "{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:planner", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:planner", "target": "{\"name\":\"planner\",\"type_\":\"\",\"default_\":\"\",\"description\":\"planner\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_repo", "target": "{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:rc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:rc", "target": "{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:recovered", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:recovered", "target": "{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:role_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:role_id", "target": "{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:states", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:states", "target": "{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:todo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:todo", "target": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:todo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:act", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:act", "target": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:check_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:check_addresses", "target": "{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:get_memories", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:get_memories", "target": "{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_watch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_watch", "target": "{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:publish_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:publish_message", "target": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:put_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:put_message", "target": "{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_action", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_action", "target": "{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_actions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_actions", "target": "{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_addresses", "target": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_env", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_env", "target": "{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_todo", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_todo", "target": "{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:think", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:think", "target": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:validate_role_extra", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:validate_role_extra", "target": "{\"name\":\"validate_role_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_role_extra()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"name\":\"RoleContext\",\"package\":\"metagpt/roles/role.py:RoleContext\",\"attributes\":{\"env\":{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]},\"important_memory\":{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]},\"max_react_loop\":{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_buffer\":{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]},\"news\":{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]},\"react_mode\":{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]},\"state\":{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]},\"watch\":{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]},\"working_memory\":{\"name\":\"working_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_memory\",\"compositions\":[]}},\"methods\":{\"check\":{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check (role_id: str)\",\"aggregations\":[]},\"model_rebuild\":{\"name\":\"model_rebuild\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"model_rebuild()\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"Type\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:env"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:history"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:important_memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:max_react_loop"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:model_config"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:news"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:react_mode"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:state"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:todo"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:watch"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:working_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:check"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:model_rebuild"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "?:Type"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:Role:rc"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "isAggregateOn", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"lineno\":88,\"end_lineno\":130,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"name\":\"RoleContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"important_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_react_loop\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_buffer\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"news\",\"visibility\":\"+\",\"value_type\":\"list[Type[Message]]\",\"default_value\":\"\"},{\"name\":\"react_mode\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"state\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"watch\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"working_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:env", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:env", "target": "{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:history", "target": "{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:history", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:max_react_loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:max_react_loop", "target": "{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:memory", "target": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:msg_buffer", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:msg_buffer", "target": "{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:news", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:news", "target": "{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:react_mode", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:react_mode", "target": "{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:state", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:state", "target": "{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:todo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:todo", "target": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:watch", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:watch", "target": "{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:working_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:working_memory", "target": "{\"name\":\"working_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:check", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:check", "target": "{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check (role_id: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:model_rebuild", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:model_rebuild", "target": "{\"name\":\"model_rebuild\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"model_rebuild()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"name\":\"RoleReactMode\",\"package\":\"metagpt/roles/role.py:RoleReactMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"values\":{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleReactMode:name"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleReactMode:values"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleContext:react_mode"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"lineno\":78,\"end_lineno\":85,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleReactMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"name\":\"RoleReactMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode:values", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode:values", "target": "{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState"}, {"predicate": "has_class", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState", "target": "{\"name\":\"RoleState\",\"package\":\"metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState:name"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState", "target": "{\"lineno\":16,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleState\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState", "target": "{\"name\":\"RoleState\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/run_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/run_code.py", "target": "metagpt/actions/run_code.py:RunCode"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"name\":\"RunCode\",\"package\":\"metagpt/actions/run_code.py:RunCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]},\"run_script\":{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]},\"run_text\":{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"RunCodeResult\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run_script"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run_text"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/run_code.py:RunCode", "target": "?:RunCodeResult"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_requirements"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_pytest"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_dependencies"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"lineno\":78,\"end_lineno\":173,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"name\":\"RunCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run_script", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run_script", "target": "{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run_text", "target": "{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"name\":\"RunCodeContext\",\"package\":\"metagpt/schema.py:RunCodeContext\",\"attributes\":{\"additional_python_paths\":{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]},\"code\":{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]},\"code_filename\":{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]},\"command\":{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]},\"mode\":{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]},\"output\":{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]},\"output_filename\":{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]},\"test_code\":{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]},\"test_filename\":{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]},\"working_directory\":{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:additional_python_paths"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:code_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:command"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:mode"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:output"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:output_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:test_code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:test_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:working_directory"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/debug_error.py:DebugError"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/run_code.py:RunCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/run_code.py:RunCode:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"lineno\":625,\"end_lineno\":635,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"name\":\"RunCodeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"additional_python_paths\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"code_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"command\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"mode\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"output\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"output_filename\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"working_directory\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:additional_python_paths", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:additional_python_paths", "target": "{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:code", "target": "{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:code_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:code_filename", "target": "{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:command", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:command", "target": "{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:mode", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:mode", "target": "{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:output", "target": "{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:output_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:output_filename", "target": "{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:test_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:test_code", "target": "{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:test_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:test_filename", "target": "{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:working_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:working_directory", "target": "{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"name\":\"RunCodeResult\",\"package\":\"metagpt/schema.py:RunCodeResult\",\"attributes\":{\"stderr\":{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]},\"stdout\":{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]},\"summary\":{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:stderr"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:stdout"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:summary"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"lineno\":638,\"end_lineno\":641,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeResult\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"name\":\"RunCodeResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stderr\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"stdout\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:stderr", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:stderr", "target": "{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:stdout", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:stdout", "target": "{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:summary", "target": "{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/s3.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/s3.py", "target": "metagpt/utils/s3.py:S3"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3", "target": "{\"name\":\"S3\",\"package\":\"metagpt/utils/s3.py:S3\",\"attributes\":{\"auth_config\":{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"session\":{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}},\"methods\":{\"cache\":{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]},\"download_file\":{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]},\"get_object\":{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]},\"get_object_url\":{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]},\"upload_file\":{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}},\"compositions\":[\"Session\"],\"aggregations\":[\"bytes\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:auth_config"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:config"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:session"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:cache"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:download_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:get_object"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:get_object_url"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:upload_file"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/s3.py:S3", "target": "?:Session"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/s3.py:S3", "target": "?:bytes"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:S3", "target": "{\"lineno\":16,\"end_lineno\":154,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/s3.py:S3", "target": "{\"name\":\"S3\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auth_config\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"visibility\":\"+\",\"value_type\":\"Session\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:auth_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:auth_config", "target": "{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:session", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:session", "target": "{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:cache", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:cache", "target": "{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:download_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:download_file", "target": "{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:get_object", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:get_object", "target": "{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:get_object_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:get_object_url", "target": "{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:upload_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:upload_file", "target": "{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/s3_config.py", "target": "metagpt/configs/s3_config.py:S3Config"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"name\":\"S3Config\",\"package\":\"metagpt/configs/s3_config.py:S3Config\",\"attributes\":{\"access_key\":{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]},\"bucket\":{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]},\"endpoint\":{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]},\"secret_key\":{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:access_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:bucket"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:endpoint"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:secret_key"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/s3.py:S3"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/s3.py:S3:config"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3Config\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"name\":\"S3Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"access_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"bucket\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"endpoint\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"secret_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:access_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:access_key", "target": "{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:bucket", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:bucket", "target": "{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:endpoint", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:endpoint", "target": "{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:secret_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:secret_key", "target": "{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/libs/sd_engine.py", "target": "metagpt/tools/libs/sd_engine.py:SDEngine"}, {"predicate": "has_function", "source": "metagpt/tools/libs/sd_engine.py", "target": "metagpt/tools/libs/sd_engine.py:decode_base64_to_image"}, {"predicate": "has_function", "source": "metagpt/tools/libs/sd_engine.py", "target": "metagpt/tools/libs/sd_engine.py:batch_decode_base64_to_image"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "{\"name\":\"SDEngine\",\"package\":\"metagpt/tools/libs/sd_engine.py:SDEngine\",\"attributes\":{\"payload\":{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]},\"sd_t2i_url\":{\"name\":\"sd_t2i_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_t2i_url\",\"compositions\":[]},\"sd_url\":{\"name\":\"sd_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sd_url : str\",\"compositions\":[]}},\"methods\":{\"construct_payload\":{\"name\":\"construct_payload\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},{\"name\":\"negtive_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"negtive_prompt\",\"compositions\":[]},{\"name\":\"width\",\"type_\":\"\",\"default_\":\"\",\"description\":\"width\",\"compositions\":[]},{\"name\":\"height\",\"type_\":\"\",\"default_\":\"\",\"description\":\"height\",\"compositions\":[]},{\"name\":\"sd_model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"construct_payload(prompt, negtive_prompt, width, height, sd_model)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"payload\",\"type_\":\"\",\"default_\":\"\",\"description\":\"payload\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(url, payload, session)\",\"aggregations\":[]},\"run_t2i\":{\"name\":\"run_t2i\",\"args\":[{\"name\":\"payloads\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"payloads: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_t2i(payloads: list)\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"imgs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"imgs\",\"compositions\":[]},{\"name\":\"save_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"save_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(imgs, save_name)\",\"aggregations\":[]},\"simple_run_t2i\":{\"name\":\"simple_run_t2i\",\"args\":[{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload: dict\",\"compositions\":[]},{\"name\":\"auto_save\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_save: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_run_t2i(payload: dict, auto_save: bool)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:payload"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:sd_t2i_url"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:sd_url"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:construct_payload"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:run_t2i"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:save"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:simple_run_t2i"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "metagpt/tools/libs/sd_engine.py:SDEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "{\"lineno\":61,\"end_lineno\":169,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SDEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/sd_engine.py:SDEngine", "target": "{\"name\":\"SDEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"payload\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"sd_t2i_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:payload", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:payload", "target": "{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:sd_t2i_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:sd_t2i_url", "target": "{\"name\":\"sd_t2i_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_t2i_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:sd_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:sd_url", "target": "{\"name\":\"sd_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sd_url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:construct_payload", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:construct_payload", "target": "{\"name\":\"construct_payload\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},{\"name\":\"negtive_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"negtive_prompt\",\"compositions\":[]},{\"name\":\"width\",\"type_\":\"\",\"default_\":\"\",\"description\":\"width\",\"compositions\":[]},{\"name\":\"height\",\"type_\":\"\",\"default_\":\"\",\"description\":\"height\",\"compositions\":[]},{\"name\":\"sd_model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"construct_payload(prompt, negtive_prompt, width, height, sd_model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"payload\",\"type_\":\"\",\"default_\":\"\",\"description\":\"payload\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(url, payload, session)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:run_t2i", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:run_t2i", "target": "{\"name\":\"run_t2i\",\"args\":[{\"name\":\"payloads\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"payloads: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_t2i(payloads: list)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"imgs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"imgs\",\"compositions\":[]},{\"name\":\"save_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"save_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(imgs, save_name)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:simple_run_t2i", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:simple_run_t2i", "target": "{\"name\":\"simple_run_t2i\",\"args\":[{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload: dict\",\"compositions\":[]},{\"name\":\"auto_save\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_save: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_run_t2i(payload: dict, auto_save: bool)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"name\":\"SPO\",\"package\":\"metagpt/utils/graph_repository.py:SPO\",\"attributes\":{\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"predicate\":{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]},\"subject\":{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:object_"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:predicate"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:subject"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"lineno\":54,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SPO\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"name\":\"SPO\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"subject\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:object_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:object_", "target": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:predicate", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:predicate", "target": "{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:subject", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:subject", "target": "{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/sales.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/sales.py", "target": "metagpt/roles/sales.py:Sales"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales", "target": "{\"name\":\"Sales\",\"package\":\"metagpt/roles/sales.py:Sales\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{\"validate_stroe\":{\"name\":\"validate_stroe\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_stroe()\",\"aggregations\":[]}},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:store"}, {"predicate": "has_class_method", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:validate_stroe"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/role.py:Role"}, {"predicate": "is_composite_of", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:Sales", "target": "{\"lineno\":19,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Sales\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/sales.py:Sales", "target": "{\"name\":\"Sales\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sales.py:Sales", "target": "?:BaseStore"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:store", "target": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:validate_stroe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:validate_stroe", "target": "{\"name\":\"validate_stroe\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_stroe()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/search_and_summarize.py", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"name\":\"SearchAndSummarize\",\"package\":\"metagpt/actions/search_and_summarize.py:SearchAndSummarize\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]},\"validate_search_engine\":{\"name\":\"validate_search_engine\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_search_engine()\",\"aggregations\":[]}},\"compositions\":[\"SearchEngine\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"predicate": "has_class_method", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_search_engine"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"lineno\":104,\"end_lineno\":147,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchAndSummarize\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"name\":\"SearchAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "?:SearchEngine"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content", "target": "{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result", "target": "{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_search_engine", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_search_engine", "target": "{\"name\":\"validate_search_engine\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_search_engine()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/search_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/search_config.py", "target": "metagpt/configs/search_config.py:SearchConfig"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"name\":\"SearchConfig\",\"package\":\"metagpt/configs/search_config.py:SearchConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"cse_id\":{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]},\"search_func\":{\"name\":\"search_func\",\"type_\":\"Optional[Callable]\",\"default_\":\"\",\"description\":\"search_func : Optional[Callable]\",\"compositions\":[\"Callable\"]}},\"methods\":{},\"compositions\":[\"Callable\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:api_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:cse_id"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:search_func"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "?:Callable"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/config2.py:Config:search"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"name\":\"SearchConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cse_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:cse_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:cse_id", "target": "{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:search_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:search_func", "target": "{\"name\":\"search_func\",\"type_\":\"Optional[Callable]\",\"default_\":\"\",\"description\":\"search_func : Optional[Callable]\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine.py", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine.py", "target": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"name\":\"SearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SearchEngine\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}},\"methods\":{\"from_search_config\":{\"name\":\"from_search_config\",\"args\":[{\"name\":\"config\",\"type_\":\"SearchConfig\",\"default_\":\"\",\"description\":\"config: SearchConfig\",\"compositions\":[\"SearchConfig\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_search_config(config: SearchConfig)\",\"aggregations\":[\"SearchConfig\"]},\"from_search_func\":{\"name\":\"from_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]\",\"default_\":\"\",\"description\":\"search_func: Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_search_func(search_func: Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]])\",\"aggregations\":[\"Callable\",\"Coroutine\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]},\"validate_extra\":{\"name\":\"validate_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_extra()\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"Coroutine\"],\"aggregations\":[\"SearchConfig\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:proxy"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:run_func"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:from_search_config"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:from_search_func"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:validate_extra"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:Coroutine"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:SearchConfig"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/research.py:CollectLinks"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"predicate": "isAggregateOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:_process_extra"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"lineno\":40,\"end_lineno\":162,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"name\":\"SearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:run_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:run_func", "target": "{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:from_search_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:from_search_config", "target": "{\"name\":\"from_search_config\",\"args\":[{\"name\":\"config\",\"type_\":\"SearchConfig\",\"default_\":\"\",\"description\":\"config: SearchConfig\",\"compositions\":[\"SearchConfig\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_search_config(config: SearchConfig)\",\"aggregations\":[\"SearchConfig\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:from_search_func", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:from_search_func", "target": "{\"name\":\"from_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]\",\"default_\":\"\",\"description\":\"search_func: Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_search_func(search_func: Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]])\",\"aggregations\":[\"Callable\",\"Coroutine\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:validate_extra", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:validate_extra", "target": "{\"name\":\"validate_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_extra()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools", "target": ""}, {"predicate": "has_class", "source": "metagpt/tools", "target": "metagpt/tools:SearchEngineType"}, {"predicate": "has_class", "source": "metagpt/tools", "target": "metagpt/tools:WebBrowserEngineType"}, {"predicate": "is", "source": "metagpt/tools:SearchEngineType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools:SearchEngineType", "target": "{\"name\":\"SearchEngineType\",\"package\":\"metagpt/tools:SearchEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/tools:SearchEngineType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/configs/search_config.py:SearchConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"predicate": "has_class_view", "source": "metagpt/tools:SearchEngineType", "target": "{\"name\":\"SearchEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools:SearchEngineType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools:SearchEngineType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/search_space.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/search_space.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/search_space.py", "target": "metagpt/strategy/search_space.py:SearchSpace"}, {"predicate": "is", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "{\"name\":\"SearchSpace\",\"package\":\"metagpt/strategy/search_space.py:SearchSpace\",\"attributes\":{\"search_space\":{\"name\":\"search_space\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"search_space : dict\",\"compositions\":[]}},\"methods\":{\"add_node\":{\"name\":\"add_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_node(node)\",\"aggregations\":[]},\"get_node\":{\"name\":\"get_node\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_node(key)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "metagpt/strategy/search_space.py:SearchSpace:search_space"}, {"predicate": "has_class_method", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "metagpt/strategy/search_space.py:SearchSpace:add_node"}, {"predicate": "has_class_method", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "metagpt/strategy/search_space.py:SearchSpace:get_node"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "isAggregateOn", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "metagpt/strategy/solver.py:BaseSolver:search_space"}, {"predicate": "has_class_method", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "metagpt/strategy/search_space.py:SearchSpace:__init__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchSpace\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/search_space.py:SearchSpace", "target": "{\"name\":\"SearchSpace\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"search_space\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/search_space.py:SearchSpace:search_space", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/search_space.py:SearchSpace:search_space", "target": "{\"name\":\"search_space\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"search_space : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/search_space.py:SearchSpace:add_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/search_space.py:SearchSpace:add_node", "target": "{\"name\":\"add_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_node(node)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/search_space.py:SearchSpace:get_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/search_space.py:SearchSpace:get_node", "target": "{\"name\":\"get_node\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_node(key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/searcher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/searcher.py", "target": "metagpt/roles/searcher.py:Searcher"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"name\":\"Searcher\",\"package\":\"metagpt/roles/searcher.py:Searcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}},\"methods\":{\"post_root\":{\"name\":\"post_root\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"post_root()\",\"aggregations\":[]}},\"compositions\":[\"SearchEngine\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:search_engine"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:post_root"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "is_composite_of", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:_act_sp"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"lineno\":24,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Searcher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"name\":\"Searcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/searcher.py:Searcher", "target": "?:SearchEngine"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:post_root", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:post_root", "target": "{\"name\":\"post_root\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"post_root()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"name\":\"SeleniumWrapper\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"executable_path\":{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"launch_args\":{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]},\"launch_kwargs\":{\"name\":\"launch_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"launch_kwargs : dict\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_kwargs"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "?:futures.Executor"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "?:asyncio.AbstractEventLoop"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "?:WebPage"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "?:WebPage\\"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"lineno\":22,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SeleniumWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"name\":\"SeleniumWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"executable_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"launch_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type", "target": "{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_kwargs", "target": "{\"name\":\"launch_kwargs\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"launch_kwargs : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\",\"WebPage\\\\\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"name\":\"SerializationMixin\",\"package\":\"metagpt/schema.py:SerializationMixin\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__init_subclass__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"lineno\":59,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerializationMixin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"name\":\"SerializationMixin\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_serpapi.py", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"name\":\"SerpAPIWrapper\",\"package\":\"metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"params\":{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"get_params\":{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]},\"validate_serpapi\":{\"name\":\"validate_serpapi\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_serpapi(values: dict): dict\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:validate_serpapi"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "?:aiohttp.ClientSession"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"lineno\":15,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerpAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"name\":\"SerpAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession", "target": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params", "target": "{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params", "target": "{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results", "target": "{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:validate_serpapi", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:validate_serpapi", "target": "{\"name\":\"validate_serpapi\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_serpapi(values: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_serper.py", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"name\":\"SerperWrapper\",\"package\":\"metagpt/tools/search_engine_serper.py:SerperWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"payload\":{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"get_headers\":{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]},\"get_payloads\":{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]},\"validate_serper\":{\"name\":\"validate_serper\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_serper(values: dict): dict\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:results"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:validate_serper"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "?:aiohttp.ClientSession"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"lineno\":16,\"end_lineno\":115,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerperWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"name\":\"SerperWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession", "target": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload", "target": "{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers", "target": "{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads", "target": "{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:results", "target": "{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:validate_serper", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:validate_serper", "target": "{\"name\":\"validate_serper\",\"args\":[{\"name\":\"values\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"values: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"validate_serper(values: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"name\":\"SimpleMessage\",\"package\":\"metagpt/schema.py:SimpleMessage\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:SimpleMessage", "target": "metagpt/schema.py:SimpleMessage:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:SimpleMessage", "target": "metagpt/schema.py:SimpleMessage:role"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"lineno\":121,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SimpleMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"name\":\"SimpleMessage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage:role", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage:role", "target": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/singleton.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/singleton.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/singleton.py", "target": "metagpt/utils/singleton.py:Singleton"}, {"predicate": "is", "source": "metagpt/utils/singleton.py:Singleton", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"name\":\"Singleton\",\"package\":\"metagpt/utils/singleton.py:Singleton\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/singleton.py:Singleton", "target": "metagpt/utils/singleton.py:Singleton:__call__"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"lineno\":11,\"end_lineno\":22,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Singleton\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"name\":\"Singleton\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/sk_agent.py", "target": "metagpt/roles/sk_agent.py:SkAgent"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"name\":\"SkAgent\",\"package\":\"metagpt/roles/sk_agent.py:SkAgent\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"import_semantic_skill_from_directory\":{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]},\"import_skill\":{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]},\"kernel\":{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"plan\":{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]},\"planner\":{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]},\"planner_cls\":{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Callable\",\"Kernel\",\"Plan\",\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:import_skill"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:kernel"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:plan"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:planner"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:planner_cls"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:profile"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Kernel"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:ActionPlanner"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:BasicPlanner"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:SequentialPlanner"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/role.py:Role"}, {"predicate": "is_composite_of", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/schema.py:Plan"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"lineno\":26,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkAgent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"name\":\"SkAgent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"import_semantic_skill_from_directory\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"import_skill\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"kernel\",\"visibility\":\"+\",\"value_type\":\"Kernel\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"plan\",\"visibility\":\"+\",\"value_type\":\"Plan\",\"default_value\":\"\"},{\"name\":\"planner\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_value\":\"\"},{\"name\":\"planner_cls\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Plan"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory", "target": "{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:import_skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:import_skill", "target": "{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:kernel", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:kernel", "target": "{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:plan", "target": "{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:planner", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:planner", "target": "{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:planner_cls", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:planner_cls", "target": "{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"name\":\"SkSearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SkSearchEngine\",\"attributes\":{\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"lineno\":19,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkSearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"name\":\"SkSearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"name\":\"Skill\",\"package\":\"metagpt/learn/skill_loader.py:Skill\",\"attributes\":{\"arguments\":{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"examples\":{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]},\"id\":{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]},\"returns\":{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]},\"x_prerequisite\":{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Example\",\"Parameter\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:arguments"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:description"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:examples"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:id"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:name"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:parameters"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:returns"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:x_prerequisite"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Example"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Parameter"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"lineno\":34,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"name\":\"Skill\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arguments\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"examples\",\"visibility\":\"+\",\"value_type\":\"List[Example]\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,Parameter]]\",\"default_value\":\"\"},{\"name\":\"returns\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"x_prerequisite\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "?:Example"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "?:Parameter"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "class_method"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:description", "target": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:examples", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:examples", "target": "{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:id", "target": "{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:parameters", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:parameters", "target": "{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:returns", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:returns", "target": "{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:x_prerequisite", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:x_prerequisite", "target": "{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"name\":\"SkillAction\",\"package\":\"metagpt/actions/skill_action.py:SkillAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"find_and_call_function\":{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:args"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"lineno\":82,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"name\":\"SkillAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:args", "target": "{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:skill", "target": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function", "target": "{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/management/skill_manager.py", "target": "metagpt/management/skill_manager.py:SkillManager"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"name\":\"SkillManager\",\"package\":\"metagpt/management/skill_manager.py:SkillManager\",\"attributes\":{},\"methods\":{\"add_skill\":{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]},\"del_skill\":{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]},\"generate_skill_desc\":{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]},\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"retrieve_skill\":{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]},\"retrieve_skill_scored\":{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Skill\"]}"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:add_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:del_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:get_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored"}, {"predicate": "isAggregateOf", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "?:Skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:__init__"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"lineno\":17,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"name\":\"SkillManager\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:add_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:add_skill", "target": "{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:del_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:del_skill", "target": "{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc", "target": "{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:get_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:get_skill", "target": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill", "target": "{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored", "target": "{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"name\":\"SkillsDeclaration\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration\",\"attributes\":{\"components\":{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]},\"entities\":{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]},\"skillapi\":{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}},\"methods\":{\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"get_skill_list\":{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}},\"compositions\":[\"Components\",\"Entity\"],\"aggregations\":[\"Skill\",\"Context\",\"SkillsDeclaration\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:components"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:load"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Skill"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Context"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:SkillsDeclaration"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Path"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:Components"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:Entity"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"lineno\":62,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillsDeclaration\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"name\":\"SkillsDeclaration\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"components\",\"visibility\":\"+\",\"value_type\":\"Optional[Components]\",\"default_value\":\"\"},{\"name\":\"entities\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Entity]\",\"default_value\":\"\"},{\"name\":\"skillapi\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Components"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Entity"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:components", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:components", "target": "{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities", "target": "{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi", "target": "{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill", "target": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list", "target": "{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/environment/software_env/software_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/software_env/software_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/software_env/software_env.py", "target": "metagpt/environment/software_env/software_env.py:SoftwareEnv"}, {"predicate": "is", "source": "metagpt/environment/software_env/software_env.py:SoftwareEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/software_env/software_env.py:SoftwareEnv", "target": "{\"name\":\"SoftwareEnv\",\"package\":\"metagpt/environment/software_env/software_env.py:SoftwareEnv\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/software_env/software_env.py:SoftwareEnv", "target": "metagpt/environment/base_env.py:Environment"}, {"predicate": "has_page_info", "source": "metagpt/environment/software_env/software_env.py:SoftwareEnv", "target": "{\"lineno\":9,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SoftwareEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/software_env/software_env.py:SoftwareEnv", "target": "{\"name\":\"SoftwareEnv\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"name\":\"SparkLLM\",\"package\":\"metagpt/provider/spark_api.py:SparkLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"lineno\":26,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SparkLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"name\":\"SparkLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "{\"name\":\"SplitBins\",\"package\":\"metagpt/tools/libs/feature_engineering.py:SplitBins\",\"attributes\":{\"cols\":{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]},\"encoder\":{\"name\":\"encoder\",\"type_\":\"KBinsDiscretizer,NoneType\",\"default_\":\"\",\"description\":\"encoder : KBinsDiscretizer, NoneType\",\"compositions\":[\"KBinsDiscretizer\"]},\"strategy\":{\"name\":\"strategy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strategy : str\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[\"KBinsDiscretizer\"],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "metagpt/tools/libs/feature_engineering.py:SplitBins:cols"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "metagpt/tools/libs/feature_engineering.py:SplitBins:encoder"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "metagpt/tools/libs/feature_engineering.py:SplitBins:strategy"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "metagpt/tools/libs/feature_engineering.py:SplitBins:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "metagpt/tools/libs/feature_engineering.py:SplitBins:transform"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "?:KBinsDiscretizer"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "metagpt/tools/libs/feature_engineering.py:SplitBins:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "{\"lineno\":252,\"end_lineno\":276,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SplitBins\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins", "target": "{\"name\":\"SplitBins\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"encoder\",\"visibility\":\"+\",\"value_type\":\"KBinsDiscretizer,NoneType\",\"default_value\":\"\"},{\"name\":\"strategy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:cols", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:cols", "target": "{\"name\":\"cols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"cols : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:encoder", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:encoder", "target": "{\"name\":\"encoder\",\"type_\":\"KBinsDiscretizer,NoneType\",\"default_\":\"\",\"description\":\"encoder : KBinsDiscretizer, NoneType\",\"compositions\":[\"KBinsDiscretizer\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:strategy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:strategy", "target": "{\"name\":\"strategy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strategy : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "{\"name\":\"StandardScale\",\"package\":\"metagpt/tools/libs/data_preprocess.py:StandardScale\",\"attributes\":{\"features\":{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"StandardScaler\",\"default_\":\"\",\"description\":\"model : StandardScaler\",\"compositions\":[\"StandardScaler\"]}},\"methods\":{},\"compositions\":[\"StandardScaler\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "metagpt/tools/libs/data_preprocess.py:StandardScale:features"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "metagpt/tools/libs/data_preprocess.py:StandardScale:model"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "?:StandardScaler"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "metagpt/tools/libs/data_preprocess.py:StandardScale:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "{\"lineno\":121,\"end_lineno\":128,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"StandardScale\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale", "target": "{\"name\":\"StandardScale\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"features\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"StandardScaler\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale:features", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale:features", "target": "{\"name\":\"features\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"features : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale:model", "target": "{\"name\":\"model\",\"type_\":\"StandardScaler\",\"default_\":\"\",\"description\":\"model : StandardScaler\",\"compositions\":[\"StandardScaler\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py", "target": "metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv", "target": "{\"name\":\"StanfordTownEnv\",\"package\":\"metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv", "target": "metagpt/environment/base_env.py:Environment"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv", "target": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"StanfordTownEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:StanfordTownEnv", "target": "{\"name\":\"StanfordTownEnv\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "{\"name\":\"StanfordTownExtEnv\",\"package\":\"metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv\",\"attributes\":{\"address_tiles\":{\"name\":\"address_tiles\",\"type_\":\"dict[str,set]\",\"default_\":\"\",\"description\":\"address_tiles : dict[str, set]\",\"compositions\":[]},\"collision_maze\":{\"name\":\"collision_maze\",\"type_\":\"list[list]\",\"default_\":\"\",\"description\":\"collision_maze : list[list]\",\"compositions\":[]},\"maze_asset_path\":{\"name\":\"maze_asset_path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"maze_asset_path : Optional[Path]\",\"compositions\":[\"Path\"]},\"maze_height\":{\"name\":\"maze_height\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"maze_height : int\",\"compositions\":[]},\"maze_width\":{\"name\":\"maze_width\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"maze_width : int\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"special_constraint\":{\"name\":\"special_constraint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"special_constraint : str\",\"compositions\":[]},\"sq_tile_size\":{\"name\":\"sq_tile_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"sq_tile_size : int\",\"compositions\":[]},\"tiles\":{\"name\":\"tiles\",\"type_\":\"list[list[dict]]\",\"default_\":\"\",\"description\":\"tiles : list[list[dict]]\",\"compositions\":[]}},\"methods\":{\"access_tile\":{\"name\":\"access_tile\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"access_tile(tile: tuple[int, int]): dict\",\"aggregations\":[\"tuple\"]},\"add_event_from_tile\":{\"name\":\"add_event_from_tile\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"add_event_from_tile(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]},\"add_tiles_event\":{\"name\":\"add_tiles_event\",\"args\":[{\"name\":\"pt_y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"pt_y: int\",\"compositions\":[]},{\"name\":\"pt_x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"pt_x: int\",\"compositions\":[]},{\"name\":\"event\",\"type_\":\"Tuple[str,str,str,str]\",\"default_\":\"\",\"description\":\"event: Tuple[str, str, str, str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_tiles_event(pt_y: int, pt_x: int, event: Tuple[str, str, str, str])\",\"aggregations\":[]},\"get_address_tiles\":{\"name\":\"get_address_tiles\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_address_tiles(): dict\",\"aggregations\":[]},\"get_collision_maze\":{\"name\":\"get_collision_maze\",\"args\":[],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"get_collision_maze(): list\",\"aggregations\":[]},\"get_nearby_tiles\":{\"name\":\"get_nearby_tiles\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"vision_r\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"vision_r: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[tuple[int,int]]\",\"description\":\"list[tuple[int, int]]\",\"compositions\":[\"tuple\"]},\"description\":\"get_nearby_tiles(tile: tuple[int, int], vision_r: int): list[tuple[int, int]]\",\"aggregations\":[\"tuple\"]},\"get_tile_path\":{\"name\":\"get_tile_path\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"level\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"level: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_tile_path(tile: tuple[int, int], level: str): str\",\"aggregations\":[\"tuple\"]},\"remove_event_from_tile\":{\"name\":\"remove_event_from_tile\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"remove_event_from_tile(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]},\"remove_subject_events_from_tile\":{\"name\":\"remove_subject_events_from_tile\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"remove_subject_events_from_tile(subject: str, tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]},\"turn_coordinate_to_tile\":{\"name\":\"turn_coordinate_to_tile\",\"args\":[{\"name\":\"px_coordinate\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"px_coordinate: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"tuple[int,int]\",\"description\":\"tuple[int, int]\",\"compositions\":[\"tuple\"]},\"description\":\"turn_coordinate_to_tile(px_coordinate: tuple[int, int]): tuple[int, int]\",\"aggregations\":[\"tuple\"]},\"turn_event_from_tile_idle\":{\"name\":\"turn_event_from_tile_idle\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"turn_event_from_tile_idle(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"tuple\"]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:address_tiles"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:collision_maze"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_asset_path"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_height"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_width"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:model_config"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:special_constraint"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:sq_tile_size"}, {"predicate": "has_class_property", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:tiles"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:access_tile"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:add_event_from_tile"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:add_tiles_event"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_address_tiles"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_collision_maze"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_nearby_tiles"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_tile_path"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:remove_event_from_tile"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:remove_subject_events_from_tile"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:turn_coordinate_to_tile"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:turn_event_from_tile_idle"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "?:tuple"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/base_env.py:ExtEnv"}, {"predicate": "has_class_method", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:_init_maze"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "{\"lineno\":16,\"end_lineno\":379,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"StanfordTownExtEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv", "target": "{\"name\":\"StanfordTownExtEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"address_tiles\",\"visibility\":\"+\",\"value_type\":\"dict[str,set]\",\"default_value\":\"\"},{\"name\":\"collision_maze\",\"visibility\":\"+\",\"value_type\":\"list[list]\",\"default_value\":\"\"},{\"name\":\"maze_asset_path\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"maze_height\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"maze_width\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"special_constraint\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"sq_tile_size\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"tiles\",\"visibility\":\"+\",\"value_type\":\"list[list[dict]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:address_tiles", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:address_tiles", "target": "{\"name\":\"address_tiles\",\"type_\":\"dict[str,set]\",\"default_\":\"\",\"description\":\"address_tiles : dict[str, set]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:collision_maze", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:collision_maze", "target": "{\"name\":\"collision_maze\",\"type_\":\"list[list]\",\"default_\":\"\",\"description\":\"collision_maze : list[list]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_asset_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_asset_path", "target": "{\"name\":\"maze_asset_path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"maze_asset_path : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_height", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_height", "target": "{\"name\":\"maze_height\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"maze_height : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_width", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:maze_width", "target": "{\"name\":\"maze_width\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"maze_width : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:special_constraint", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:special_constraint", "target": "{\"name\":\"special_constraint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"special_constraint : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:sq_tile_size", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:sq_tile_size", "target": "{\"name\":\"sq_tile_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"sq_tile_size : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:tiles", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:tiles", "target": "{\"name\":\"tiles\",\"type_\":\"list[list[dict]]\",\"default_\":\"\",\"description\":\"tiles : list[list[dict]]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:access_tile", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:access_tile", "target": "{\"name\":\"access_tile\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"access_tile(tile: tuple[int, int]): dict\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:add_event_from_tile", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:add_event_from_tile", "target": "{\"name\":\"add_event_from_tile\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"add_event_from_tile(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:add_tiles_event", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:add_tiles_event", "target": "{\"name\":\"add_tiles_event\",\"args\":[{\"name\":\"pt_y\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"pt_y: int\",\"compositions\":[]},{\"name\":\"pt_x\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"pt_x: int\",\"compositions\":[]},{\"name\":\"event\",\"type_\":\"Tuple[str,str,str,str]\",\"default_\":\"\",\"description\":\"event: Tuple[str, str, str, str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_tiles_event(pt_y: int, pt_x: int, event: Tuple[str, str, str, str])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_address_tiles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_address_tiles", "target": "{\"name\":\"get_address_tiles\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_address_tiles(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_collision_maze", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_collision_maze", "target": "{\"name\":\"get_collision_maze\",\"args\":[],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"get_collision_maze(): list\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_nearby_tiles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_nearby_tiles", "target": "{\"name\":\"get_nearby_tiles\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"vision_r\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"vision_r: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[tuple[int,int]]\",\"description\":\"list[tuple[int, int]]\",\"compositions\":[\"tuple\"]},\"description\":\"get_nearby_tiles(tile: tuple[int, int], vision_r: int): list[tuple[int, int]]\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_tile_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:get_tile_path", "target": "{\"name\":\"get_tile_path\",\"args\":[{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]},{\"name\":\"level\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"level: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_tile_path(tile: tuple[int, int], level: str): str\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:remove_event_from_tile", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:remove_event_from_tile", "target": "{\"name\":\"remove_event_from_tile\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"remove_event_from_tile(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:remove_subject_events_from_tile", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:remove_subject_events_from_tile", "target": "{\"name\":\"remove_subject_events_from_tile\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"remove_subject_events_from_tile(subject: str, tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:turn_coordinate_to_tile", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:turn_coordinate_to_tile", "target": "{\"name\":\"turn_coordinate_to_tile\",\"args\":[{\"name\":\"px_coordinate\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"px_coordinate: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"tuple[int,int]\",\"description\":\"tuple[int, int]\",\"compositions\":[\"tuple\"]},\"description\":\"turn_coordinate_to_tile(px_coordinate: tuple[int, int]): tuple[int, int]\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:turn_event_from_tile_idle", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:turn_event_from_tile_idle", "target": "{\"name\":\"turn_event_from_tile_idle\",\"args\":[{\"name\":\"curr_event\",\"type_\":\"tuple[str]\",\"default_\":\"\",\"description\":\"curr_event: tuple[str]\",\"compositions\":[\"tuple\"]},{\"name\":\"tile\",\"type_\":\"tuple[int,int]\",\"default_\":\"\",\"description\":\"tile: tuple[int, int]\",\"compositions\":[\"tuple\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"turn_event_from_tile_idle(curr_event: tuple[str], tile: tuple[int, int]): None\",\"aggregations\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"name\":\"Strategy\",\"package\":\"metagpt/strategy/tot_schema.py:Strategy\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot_schema.py:Strategy:name"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Strategy\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"name\":\"Strategy\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:Strategy:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:Strategy:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/mincraft_env/process_monitor.py", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "{\"name\":\"SubprocessMonitor\",\"package\":\"metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor\",\"attributes\":{\"callback\":{\"name\":\"callback\",\"type_\":\"Optional[callable]\",\"default_\":\"\",\"description\":\"callback : Optional[callable]\",\"compositions\":[\"callable\"]},\"callback_match\":{\"name\":\"callback_match\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"callback_match : str\",\"compositions\":[]},\"commands\":{\"name\":\"commands\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"commands : List[str]\",\"compositions\":[]},\"finished_callback\":{\"name\":\"finished_callback\",\"type_\":\"Optional[callable]\",\"default_\":\"\",\"description\":\"finished_callback : Optional[callable]\",\"compositions\":[\"callable\"]},\"is_running\":{\"name\":\"is_running\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_running\",\"compositions\":[]},\"logger\":{\"name\":\"logger\",\"type_\":\"Logger\",\"default_\":\"\",\"description\":\"logger : Logger\",\"compositions\":[\"Logger\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"process\":{\"name\":\"process\",\"type_\":\"NoneType,Popen\",\"default_\":\"\",\"description\":\"process : NoneType, Popen\",\"compositions\":[\"Popen\"]},\"ready_event\":{\"name\":\"ready_event\",\"type_\":\"Event,NoneType\",\"default_\":\"\",\"description\":\"ready_event : Event, NoneType\",\"compositions\":[\"Event\"]},\"ready_line\":{\"name\":\"ready_line\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ready_line : NoneType\",\"compositions\":[]},\"ready_match\":{\"name\":\"ready_match\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ready_match : str\",\"compositions\":[]},\"thread\":{\"name\":\"thread\",\"type_\":\"NoneType,Thread\",\"default_\":\"\",\"description\":\"thread : NoneType, Thread\",\"compositions\":[\"Thread\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"stop\":{\"name\":\"stop\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"stop()\",\"aggregations\":[]}},\"compositions\":[\"callable\",\"Logger\",\"Popen\",\"Event\",\"Thread\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:callback"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:callback_match"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:commands"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:finished_callback"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:is_running"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:logger"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:name"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:process"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_event"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_line"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_match"}, {"predicate": "has_class_property", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:thread"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:run"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:stop"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "?:callable"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "?:Logger"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "?:Popen"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "?:Event"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "?:Thread"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv"}, {"predicate": "isCompositeOn", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:mineflayer"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:__init__"}, {"predicate": "has_class_method", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:_start"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "{\"lineno\":16,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubprocessMonitor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor", "target": "{\"name\":\"SubprocessMonitor\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"callback\",\"visibility\":\"+\",\"value_type\":\"Optional[callable]\",\"default_value\":\"\"},{\"name\":\"callback_match\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"commands\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"finished_callback\",\"visibility\":\"+\",\"value_type\":\"Optional[callable]\",\"default_value\":\"\"},{\"name\":\"is_running\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"logger\",\"visibility\":\"+\",\"value_type\":\"Logger\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"process\",\"visibility\":\"+\",\"value_type\":\"NoneType,Popen\",\"default_value\":\"\"},{\"name\":\"ready_event\",\"visibility\":\"+\",\"value_type\":\"Event,NoneType\",\"default_value\":\"\"},{\"name\":\"ready_line\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ready_match\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"thread\",\"visibility\":\"+\",\"value_type\":\"NoneType,Thread\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:callback", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:callback", "target": "{\"name\":\"callback\",\"type_\":\"Optional[callable]\",\"default_\":\"\",\"description\":\"callback : Optional[callable]\",\"compositions\":[\"callable\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:callback_match", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:callback_match", "target": "{\"name\":\"callback_match\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"callback_match : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:commands", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:commands", "target": "{\"name\":\"commands\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"commands : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:finished_callback", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:finished_callback", "target": "{\"name\":\"finished_callback\",\"type_\":\"Optional[callable]\",\"default_\":\"\",\"description\":\"finished_callback : Optional[callable]\",\"compositions\":[\"callable\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:is_running", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:is_running", "target": "{\"name\":\"is_running\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_running\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:is_running", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:logger", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:logger", "target": "{\"name\":\"logger\",\"type_\":\"Logger\",\"default_\":\"\",\"description\":\"logger : Logger\",\"compositions\":[\"Logger\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:process", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:process", "target": "{\"name\":\"process\",\"type_\":\"NoneType,Popen\",\"default_\":\"\",\"description\":\"process : NoneType, Popen\",\"compositions\":[\"Popen\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_event", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_event", "target": "{\"name\":\"ready_event\",\"type_\":\"Event,NoneType\",\"default_\":\"\",\"description\":\"ready_event : Event, NoneType\",\"compositions\":[\"Event\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_line", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_line", "target": "{\"name\":\"ready_line\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ready_line : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_match", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:ready_match", "target": "{\"name\":\"ready_match\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ready_match : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:thread", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:thread", "target": "{\"name\":\"thread\",\"type_\":\"NoneType,Thread\",\"default_\":\"\",\"description\":\"thread : NoneType, Thread\",\"compositions\":[\"Thread\"]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:stop", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:stop", "target": "{\"name\":\"stop\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"stop()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/subscription.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/subscription.py", "target": "metagpt/subscription.py:SubscriptionRunner"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"name\":\"SubscriptionRunner\",\"package\":\"metagpt/subscription.py:SubscriptionRunner\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"tasks\":{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]},\"subscribe\":{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Role\",\"Message\",\"Awaitable\",\"Callable\",\"AsyncGenerator\"]},\"unsubscribe\":{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}},\"compositions\":[\"Role\",\"asyncio.Task\"],\"aggregations\":[\"Message\",\"Awaitable\",\"Callable\",\"AsyncGenerator\"]}"}, {"predicate": "has_class_property", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:model_config"}, {"predicate": "has_class_property", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:tasks"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:run"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:subscribe"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:unsubscribe"}, {"predicate": "isCompositeOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:asyncio.Task"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Awaitable"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Callable"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:AsyncGenerator"}, {"predicate": "is_composite_of", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"lineno\":11,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubscriptionRunner\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"name\":\"SubscriptionRunner\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"dict[Role,asyncio.Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Role"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:tasks", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:tasks", "target": "{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:subscribe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:subscribe", "target": "{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Role\",\"Message\",\"Awaitable\",\"Callable\",\"AsyncGenerator\"]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:unsubscribe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:unsubscribe", "target": "{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/summarize_code.py", "target": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"name\":\"SummarizeCode\",\"package\":\"metagpt/actions/summarize_code.py:SummarizeCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"summarize_code\":{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"lineno\":90,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SummarizeCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"name\":\"SummarizeCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code", "target": "{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SystemMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SystemMessage", "target": "{\"name\":\"SystemMessage\",\"package\":\"metagpt/schema.py:SystemMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:SystemMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SystemMessage", "target": "metagpt/schema.py:SystemMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SystemMessage", "target": "{\"lineno\":315,\"end_lineno\":321,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SystemMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SystemMessage", "target": "{\"name\":\"SystemMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:TOTSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:TOTSolver", "target": "{\"name\":\"TOTSolver\",\"package\":\"metagpt/strategy/solver.py:TOTSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/solver.py:TOTSolver", "target": "metagpt/strategy/solver.py:TOTSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/solver.py:TOTSolver", "target": "metagpt/strategy/solver.py:BaseSolver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:TOTSolver", "target": "{\"lineno\":45,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TOTSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/solver.py:TOTSolver", "target": "{\"name\":\"TOTSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:TOTSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/solver.py:TOTSolver:solve", "target": "{\"name\":\"solve\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/talk_action.py", "target": "metagpt/actions/talk_action.py:TalkAction"}, {"predicate": "has_class", "source": "metagpt/actions/talk_action.py", "target": "metagpt/actions/talk_action.py:TalkActionPrompt"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"name\":\"TalkAction\",\"package\":\"metagpt/actions/talk_action.py:TalkAction\",\"attributes\":{\"aask_args\":{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]},\"agent_description\":{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]},\"history_summary\":{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"prompt_gpt4\":{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:aask_args"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:agent_description"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:history_summary"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:knowledge"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:language"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:prompt"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"lineno\":17,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"name\":\"TalkAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aask_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"agent_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"history_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_gpt4\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:history_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:history_summary", "target": "{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:knowledge", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:knowledge", "target": "{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"name\":\"TalkActionPrompt\",\"package\":\"metagpt/actions/talk_action.py:TalkActionPrompt\",\"attributes\":{\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"FORMATION_LOOSE\":{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"lineno\":100,\"end_lineno\":169,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkActionPrompt\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"name\":\"TalkActionPrompt\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION_LOOSE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION", "target": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE", "target": "{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "{\"name\":\"TargetMeanEncoder\",\"package\":\"metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder\",\"attributes\":{\"col\":{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]},\"encoder_dict\":{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label : str\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:encoder_dict"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:label"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "{\"lineno\":96,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TargetMeanEncoder\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder", "target": "{\"name\":\"TargetMeanEncoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"encoder_dict\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:col", "target": "{\"name\":\"col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:encoder_dict", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:encoder_dict", "target": "{\"name\":\"encoder_dict\",\"type_\":\"\",\"default_\":\"\",\"description\":\"encoder_dict : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:label", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:label", "target": "{\"name\":\"label\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task", "target": "{\"name\":\"Task\",\"package\":\"metagpt/schema.py:Task\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]},\"dependent_task_ids\":{\"name\":\"dependent_task_ids\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"dependent_task_ids : list[str]\",\"compositions\":[]},\"instruction\":{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]},\"is_finished\":{\"name\":\"is_finished\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_finished : bool\",\"compositions\":[]},\"is_success\":{\"name\":\"is_success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_success : bool\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]},\"task_id\":{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id : str\",\"compositions\":[]},\"task_type\":{\"name\":\"task_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_type : str\",\"compositions\":[]}},\"methods\":{\"reset\":{\"name\":\"reset\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset()\",\"aggregations\":[]},\"update_task_result\":{\"name\":\"update_task_result\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_task_result(task_result: TaskResult)\",\"aggregations\":[\"TaskResult\"]}},\"compositions\":[],\"aggregations\":[\"TaskResult\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:dependent_task_ids"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:instruction"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:is_finished"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:is_success"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:result"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:task_id"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:task_type"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:reset"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Task", "target": "metagpt/schema.py:Task:update_task_result"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Task", "target": "?:TaskResult"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Task", "target": "{\"lineno\":333,\"end_lineno\":352,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Task\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Task", "target": "{\"name\":\"Task\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"dependent_task_ids\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"instruction\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_finished\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_success\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:code", "target": "{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:dependent_task_ids", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:dependent_task_ids", "target": "{\"name\":\"dependent_task_ids\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"dependent_task_ids : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:instruction", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:instruction", "target": "{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:is_finished", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:is_finished", "target": "{\"name\":\"is_finished\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_finished : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:is_success", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:is_success", "target": "{\"name\":\"is_success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_success : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:result", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:result", "target": "{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:task_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:task_id", "target": "{\"name\":\"task_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:task_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:task_type", "target": "{\"name\":\"task_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:reset", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:reset", "target": "{\"name\":\"reset\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"reset()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Task:update_task_result", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Task:update_task_result", "target": "{\"name\":\"update_task_result\",\"args\":[{\"name\":\"task_result\",\"type_\":\"TaskResult\",\"default_\":\"\",\"description\":\"task_result: TaskResult\",\"compositions\":[\"TaskResult\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_task_result(task_result: TaskResult)\",\"aggregations\":[\"TaskResult\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:TaskResult", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TaskResult", "target": "{\"name\":\"TaskResult\",\"package\":\"metagpt/schema.py:TaskResult\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]},\"is_success\":{\"name\":\"is_success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_success : bool\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TaskResult", "target": "metagpt/schema.py:TaskResult:code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TaskResult", "target": "metagpt/schema.py:TaskResult:is_success"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TaskResult", "target": "metagpt/schema.py:TaskResult:result"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:TaskResult", "target": "{\"lineno\":355,\"end_lineno\":360,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TaskResult\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:TaskResult", "target": "{\"name\":\"TaskResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_success\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TaskResult:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TaskResult:code", "target": "{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TaskResult:is_success", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TaskResult:is_success", "target": "{\"name\":\"is_success\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_success : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TaskResult:result", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TaskResult:result", "target": "{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/teacher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/teacher.py", "target": "metagpt/roles/teacher.py:Teacher"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"name\":\"Teacher\",\"package\":\"metagpt/roles/teacher.py:Teacher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"course_title\":{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"new_file_name\":{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:constraints"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:course_title"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:new_file_name"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:save"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:_react"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"lineno\":22,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Teacher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"name\":\"Teacher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"course_title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:new_file_name", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:new_file_name", "target": "{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_teaching_plan.py", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock"}, {"predicate": "has_class", "source": "metagpt/actions/write_teaching_plan.py", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"name\":\"TeachingPlanBlock\",\"package\":\"metagpt/actions/write_teaching_plan.py:TeachingPlanBlock\",\"attributes\":{\"COURSE_TITLE\":{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]},\"DATA_BEGIN_TAG\":{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]},\"DATA_END_TAG\":{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]},\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"PROMPT_TEMPLATE\":{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]},\"PROMPT_TITLE_TEMPLATE\":{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]},\"TOPICS\":{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]},\"TOPIC_STATEMENTS\":{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"lineno\":92,\"end_lineno\":191,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TeachingPlanBlock\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"name\":\"TeachingPlanBlock\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"COURSE_TITLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_BEGIN_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_END_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"TOPICS\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"TOPIC_STATEMENTS\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE", "target": "{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG", "target": "{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG", "target": "{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION", "target": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE", "target": "{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE", "target": "{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS", "target": "{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS", "target": "{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/team.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/team.py", "target": "metagpt/team.py:Team"}, {"predicate": "is", "source": "metagpt/team.py:Team", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team", "target": "{\"name\":\"Team\",\"package\":\"metagpt/team.py:Team\",\"attributes\":{\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"env\":{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]},\"idea\":{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]},\"investment\":{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"deserialize\":{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]},\"hire\":{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]},\"invest\":{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]},\"run_project\":{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]},\"serialize\":{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]},\"start_project\":{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}},\"compositions\":[\"Environment\"],\"aggregations\":[\"Team\",\"Context\",\"Path\",\"Role\"]}"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:env"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:idea"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:investment"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:model_config"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:deserialize"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:hire"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:invest"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:run"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:run_project"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:serialize"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:start_project"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Team"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Context"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Role"}, {"predicate": "is_composite_of", "source": "metagpt/team.py:Team", "target": "metagpt/environment/base_env.py:Environment"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:__init__"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:_check_balance"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:_save"}, {"predicate": "has_page_info", "source": "metagpt/team.py:Team", "target": "{\"lineno\":32,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Team\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/team.py:Team", "target": "{\"name\":\"Team\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"Optional[Environment]\",\"default_value\":\"\"},{\"name\":\"idea\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"investment\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/team.py:Team", "target": "?:Environment"}, {"predicate": "is", "source": "metagpt/team.py:Team:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:cost_manager", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:env", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:env", "target": "{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:idea", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:idea", "target": "{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:investment", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:investment", "target": "{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:deserialize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:deserialize", "target": "{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:hire", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:hire", "target": "{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:invest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:invest", "target": "{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:run_project", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:run_project", "target": "{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:serialize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:serialize", "target": "{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:start_project", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:start_project", "target": "{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext", "target": "{\"name\":\"TestingContext\",\"package\":\"metagpt/schema.py:TestingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"test_doc\":{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:code_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:test_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:TestingContext", "target": "?:Document"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:TestingContext", "target": "{\"lineno\":619,\"end_lineno\":622,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TestingContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:TestingContext", "target": "{\"name\":\"TestingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:code_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:code_doc", "target": "{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:test_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:test_doc", "target": "{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"name\":\"ThoughtNode\",\"package\":\"metagpt/strategy/base.py:ThoughtNode\",\"attributes\":{\"id\":{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"valid_status\":{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]},\"value\":{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}},\"methods\":{\"update_valid_status\":{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]},\"update_value\":{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:id"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:name"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:valid_status"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:value"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:update_valid_status"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:update_value"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"lineno\":34,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtNode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"name\":\"ThoughtNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"valid_status\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"value\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:id", "target": "{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:valid_status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:valid_status", "target": "{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:value", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:value", "target": "{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:update_valid_status", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:update_valid_status", "target": "{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:update_value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:update_value", "target": "{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"name\":\"ThoughtSolverBase\",\"package\":\"metagpt/strategy/tot.py:ThoughtSolverBase\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}},\"methods\":{\"evaluate_node\":{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]},\"generate_thoughts\":{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"select_nodes\":{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]},\"update_solution\":{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}},\"compositions\":[\"ThoughtTree\"],\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:solve"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "?:ThoughtNode"}, {"predicate": "is_composite_of", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/base.py:ThoughtTree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"lineno\":33,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverBase\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"name\":\"ThoughtSolverBase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"Optional[ThoughtTree]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "?:ThoughtTree"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node", "target": "{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts", "target": "{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes", "target": "{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution", "target": "{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"name\":\"ThoughtSolverConfig\",\"package\":\"metagpt/strategy/tot_schema.py:ThoughtSolverConfig\",\"attributes\":{\"evaluator\":{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]},\"max_steps\":{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]},\"method_select\":{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]},\"n_generate_sample\":{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]},\"n_select_sample\":{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]},\"n_solution_sample\":{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]},\"parser\":{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:TreeofThought:config"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"lineno\":23,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"name\":\"ThoughtSolverConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"evaluator\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_steps\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"method_select\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_generate_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_select_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_solution_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"parser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator", "target": "{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps", "target": "{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select", "target": "{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample", "target": "{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample", "target": "{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample", "target": "{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser", "target": "{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"name\":\"ThoughtTree\",\"package\":\"metagpt/strategy/base.py:ThoughtTree\",\"attributes\":{\"all_nodes\":{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}},\"methods\":{\"parse_node_path\":{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]},\"show\":{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]},\"update_node\":{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}},\"compositions\":[],\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:all_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:parse_node_path"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:show"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:update_node"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "?:ThoughtNode"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:BFSSolver"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:DFSSolver"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"lineno\":51,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtTree\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"name\":\"ThoughtTree\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_nodes\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:parse_node_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:parse_node_path", "target": "{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:show", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:show", "target": "{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:update_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:update_node", "target": "{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"name\":\"TokenCostManager\",\"package\":\"metagpt/utils/cost_manager.py:TokenCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}},\"methods\":{\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/ollama_api.py:OllamaLLM:cost_manager"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLM:cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"lineno\":87,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TokenCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"name\":\"TokenCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/tool_data_type.py", "target": "metagpt/tools/tool_data_type.py:Tool"}, {"predicate": "has_class", "source": "metagpt/tools/tool_data_type.py", "target": "metagpt/tools/tool_data_type.py:ToolSchema"}, {"predicate": "has_class", "source": "metagpt/tools/tool_data_type.py", "target": "metagpt/tools/tool_data_type.py:ToolTypeDef"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:Tool", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:Tool", "target": "{\"name\":\"Tool\",\"package\":\"metagpt/tools/tool_data_type.py:Tool\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]},\"schemas\":{\"name\":\"schemas\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schemas : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_data_type.py:Tool", "target": "metagpt/tools/tool_data_type.py:Tool:code"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_data_type.py:Tool", "target": "metagpt/tools/tool_data_type.py:Tool:name"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_data_type.py:Tool", "target": "metagpt/tools/tool_data_type.py:Tool:path"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_data_type.py:Tool", "target": "metagpt/tools/tool_data_type.py:Tool:schemas"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_data_type.py:Tool", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Tool\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/tool_data_type.py:Tool", "target": "{\"name\":\"Tool\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"schemas\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:Tool:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:Tool:code", "target": "{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:Tool:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:Tool:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:Tool:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:Tool:path", "target": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:Tool:schemas", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:Tool:schemas", "target": "{\"name\":\"schemas\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schemas : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/tool_registry.py", "target": "metagpt/tools/tool_registry.py:ToolRegistry"}, {"predicate": "has_function", "source": "metagpt/tools/tool_registry.py", "target": "metagpt/tools/tool_registry.py:register_tool"}, {"predicate": "has_function", "source": "metagpt/tools/tool_registry.py", "target": "metagpt/tools/tool_registry.py:make_schema"}, {"predicate": "has_function", "source": "metagpt/tools/tool_registry.py", "target": "metagpt/tools/tool_registry.py:validate_tool_names"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "{\"name\":\"ToolRegistry\",\"package\":\"metagpt/tools/tool_registry.py:ToolRegistry\",\"attributes\":{\"tool_types\":{\"name\":\"tool_types\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tool_types : dict\",\"compositions\":[]},\"tools\":{\"name\":\"tools\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tools : dict\",\"compositions\":[]},\"tools_by_types\":{\"name\":\"tools_by_types\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tools_by_types : dict\",\"compositions\":[]}},\"methods\":{\"get_tool\":{\"name\":\"get_tool\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tool\",\"description\":\"Tool\",\"compositions\":[\"Tool\"]},\"description\":\"get_tool(key): Tool\",\"aggregations\":[\"Tool\"]},\"get_tool_type\":{\"name\":\"get_tool_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ToolType\",\"description\":\"ToolType\",\"compositions\":[\"ToolType\"]},\"description\":\"get_tool_type(key): ToolType\",\"aggregations\":[\"ToolType\"]},\"get_tool_types\":{\"name\":\"get_tool_types\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,ToolType]\",\"description\":\"dict[str, ToolType]\",\"compositions\":[\"ToolType\"]},\"description\":\"get_tool_types(): dict[str, ToolType]\",\"aggregations\":[\"ToolType\"]},\"get_tools_by_type\":{\"name\":\"get_tools_by_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Tool]\",\"description\":\"dict[str, Tool]\",\"compositions\":[\"Tool\"]},\"description\":\"get_tools_by_type(key): dict[str, Tool]\",\"aggregations\":[\"Tool\"]},\"has_tool\":{\"name\":\"has_tool\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tool\",\"description\":\"Tool\",\"compositions\":[\"Tool\"]},\"description\":\"has_tool(key: str): Tool\",\"aggregations\":[\"Tool\"]},\"has_tool_type\":{\"name\":\"has_tool_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"has_tool_type(key): bool\",\"aggregations\":[]},\"init_tool_types\":{\"name\":\"init_tool_types\",\"args\":[{\"name\":\"tool_types\",\"type_\":\"ToolType\",\"default_\":\"\",\"description\":\"tool_types: ToolType\",\"compositions\":[\"ToolType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_tool_types(tool_types: ToolType)\",\"aggregations\":[\"ToolType\"]},\"register_tool\":{\"name\":\"register_tool\",\"args\":[{\"name\":\"tool_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_name\",\"compositions\":[]},{\"name\":\"tool_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_path\",\"compositions\":[]},{\"name\":\"schema_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema_path\",\"compositions\":[]},{\"name\":\"tool_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_code\",\"compositions\":[]},{\"name\":\"tool_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_type\",\"compositions\":[]},{\"name\":\"tool_source_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_source_object\",\"compositions\":[]},{\"name\":\"include_functions\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_functions\",\"compositions\":[]},{\"name\":\"verbose\",\"type_\":\"\",\"default_\":\"\",\"description\":\"verbose\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register_tool(tool_name, tool_path, schema_path, tool_code, tool_type, tool_source_object, include_functions, verbose)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Tool\",\"ToolType\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:tool_types"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:tools"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:tools_by_types"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool_type"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool_types"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:get_tools_by_type"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:has_tool"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:has_tool_type"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:init_tool_types"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "metagpt/tools/tool_registry.py:ToolRegistry:register_tool"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "?:Tool"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "?:ToolType"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "{\"lineno\":25,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolRegistry\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/tool_registry.py:ToolRegistry", "target": "{\"name\":\"ToolRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tool_types\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"tools\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"tools_by_types\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:tool_types", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:tool_types", "target": "{\"name\":\"tool_types\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tool_types : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:tools", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:tools", "target": "{\"name\":\"tools\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tools : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:tools_by_types", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:tools_by_types", "target": "{\"name\":\"tools_by_types\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"tools_by_types : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool", "target": "{\"name\":\"get_tool\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tool\",\"description\":\"Tool\",\"compositions\":[\"Tool\"]},\"description\":\"get_tool(key): Tool\",\"aggregations\":[\"Tool\"]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool_type", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool_type", "target": "{\"name\":\"get_tool_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ToolType\",\"description\":\"ToolType\",\"compositions\":[\"ToolType\"]},\"description\":\"get_tool_type(key): ToolType\",\"aggregations\":[\"ToolType\"]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool_types", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:get_tool_types", "target": "{\"name\":\"get_tool_types\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,ToolType]\",\"description\":\"dict[str, ToolType]\",\"compositions\":[\"ToolType\"]},\"description\":\"get_tool_types(): dict[str, ToolType]\",\"aggregations\":[\"ToolType\"]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:get_tools_by_type", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:get_tools_by_type", "target": "{\"name\":\"get_tools_by_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Tool]\",\"description\":\"dict[str, Tool]\",\"compositions\":[\"Tool\"]},\"description\":\"get_tools_by_type(key): dict[str, Tool]\",\"aggregations\":[\"Tool\"]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:has_tool", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:has_tool", "target": "{\"name\":\"has_tool\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tool\",\"description\":\"Tool\",\"compositions\":[\"Tool\"]},\"description\":\"has_tool(key: str): Tool\",\"aggregations\":[\"Tool\"]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:has_tool_type", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:has_tool_type", "target": "{\"name\":\"has_tool_type\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"has_tool_type(key): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:init_tool_types", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:init_tool_types", "target": "{\"name\":\"init_tool_types\",\"args\":[{\"name\":\"tool_types\",\"type_\":\"ToolType\",\"default_\":\"\",\"description\":\"tool_types: ToolType\",\"compositions\":[\"ToolType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_tool_types(tool_types: ToolType)\",\"aggregations\":[\"ToolType\"]}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:ToolRegistry:register_tool", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_registry.py:ToolRegistry:register_tool", "target": "{\"name\":\"register_tool\",\"args\":[{\"name\":\"tool_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_name\",\"compositions\":[]},{\"name\":\"tool_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_path\",\"compositions\":[]},{\"name\":\"schema_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema_path\",\"compositions\":[]},{\"name\":\"tool_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_code\",\"compositions\":[]},{\"name\":\"tool_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_type\",\"compositions\":[]},{\"name\":\"tool_source_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool_source_object\",\"compositions\":[]},{\"name\":\"include_functions\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_functions\",\"compositions\":[]},{\"name\":\"verbose\",\"type_\":\"\",\"default_\":\"\",\"description\":\"verbose\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register_tool(tool_name, tool_path, schema_path, tool_code, tool_type, tool_source_object, include_functions, verbose)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:ToolSchema", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:ToolSchema", "target": "{\"name\":\"ToolSchema\",\"package\":\"metagpt/tools/tool_data_type.py:ToolSchema\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_data_type.py:ToolSchema", "target": "metagpt/tools/tool_data_type.py:ToolSchema:description"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_data_type.py:ToolSchema", "target": "{\"lineno\":10,\"end_lineno\":11,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolSchema\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/tool_data_type.py:ToolSchema", "target": "{\"name\":\"ToolSchema\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:ToolSchema:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:ToolSchema:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_type.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/tool_type.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/tool_type.py", "target": "metagpt/tools/tool_type.py:ToolType"}, {"predicate": "is", "source": "metagpt/tools/tool_type.py:ToolType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_type.py:ToolType", "target": "{\"name\":\"ToolType\",\"package\":\"metagpt/tools/tool_type.py:ToolType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"type_name\":{\"name\":\"type_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"type_name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_type.py:ToolType", "target": "metagpt/tools/tool_type.py:ToolType:name"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_type.py:ToolType", "target": "metagpt/tools/tool_type.py:ToolType:type_name"}, {"predicate": "has_class_method", "source": "metagpt/tools/tool_type.py:ToolType", "target": "metagpt/tools/tool_type.py:ToolType:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_type.py:ToolType", "target": "{\"lineno\":13,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/tool_type.py:ToolType", "target": "{\"name\":\"ToolType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"type_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_type.py:ToolType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_type.py:ToolType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_type.py:ToolType:type_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_type.py:ToolType:type_name", "target": "{\"name\":\"type_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"type_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_type.py:ToolType:type_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef", "target": "{\"name\":\"ToolTypeDef\",\"package\":\"metagpt/tools/tool_data_type.py:ToolTypeDef\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"usage_prompt\":{\"name\":\"usage_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"usage_prompt : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef", "target": "metagpt/tools/tool_data_type.py:ToolTypeDef:desc"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef", "target": "metagpt/tools/tool_data_type.py:ToolTypeDef:name"}, {"predicate": "has_class_property", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef", "target": "metagpt/tools/tool_data_type.py:ToolTypeDef:usage_prompt"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef", "target": "{\"lineno\":4,\"end_lineno\":7,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolTypeDef\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef", "target": "{\"name\":\"ToolTypeDef\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"usage_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef:usage_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/tool_data_type.py:ToolTypeDef:usage_prompt", "target": "{\"name\":\"usage_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"usage_prompt : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/translator.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/translator.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/translator.py", "target": "metagpt/tools/translator.py:Translator"}, {"predicate": "is", "source": "metagpt/tools/translator.py:Translator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/translator.py:Translator", "target": "{\"name\":\"Translator\",\"package\":\"metagpt/tools/translator.py:Translator\",\"attributes\":{},\"methods\":{\"translate_prompt\":{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/translator.py:Translator", "target": "metagpt/tools/translator.py:Translator:translate_prompt"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:Translator", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Translator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/translator.py:Translator", "target": "{\"name\":\"Translator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/translator.py:Translator:translate_prompt", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/translator.py:Translator:translate_prompt", "target": "{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "{\"name\":\"TreeBasedSelection\",\"package\":\"metagpt/tools/libs/feature_engineering.py:TreeBasedSelection\",\"attributes\":{\"feats\":{\"name\":\"feats\",\"type_\":\"\",\"default_\":\"\",\"description\":\"feats : NoneType\",\"compositions\":[]},\"label_col\":{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]},\"task_type\":{\"name\":\"task_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_type : str\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:feats"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:label_col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:task_type"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:transform"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "{\"lineno\":353,\"end_lineno\":403,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeBasedSelection\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection", "target": "{\"name\":\"TreeBasedSelection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"feats\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"label_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:feats", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:feats", "target": "{\"name\":\"feats\",\"type_\":\"\",\"default_\":\"\",\"description\":\"feats : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:label_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:label_col", "target": "{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:task_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:task_type", "target": "{\"name\":\"task_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"name\":\"TreeofThought\",\"package\":\"metagpt/strategy/tot.py:TreeofThought\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"solver\":{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]},\"strategy\":{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:solve"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:__init__"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"lineno\":235,\"end_lineno\":277,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeofThought\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"name\":\"TreeofThought\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"solver\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strategy\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:solver", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:solver", "target": "{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:strategy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:strategy", "target": "{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/tutorial_assistant.py", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"name\":\"TutorialAssistant\",\"package\":\"metagpt/roles/tutorial_assistant.py:TutorialAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"main_title\":{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]},\"total_content\":{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"lineno\":20,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TutorialAssistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"name\":\"TutorialAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"main_title\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"total_content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title", "target": "{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content", "target": "{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"name\":\"UMLClassAttribute\",\"package\":\"metagpt/schema.py:UMLClassAttribute\",\"attributes\":{\"default_value\":{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]},\"value_type\":{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:default_value"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:value_type"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"lineno\":709,\"end_lineno\":729,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassAttribute\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"name\":\"UMLClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"default_value\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"value_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:default_value", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:default_value", "target": "{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:value_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:value_type", "target": "{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"name\":\"UMLClassMeta\",\"package\":\"metagpt/schema.py:UMLClassMeta\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"visibility\":{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}},\"methods\":{\"name_to_visibility\":{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:name"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:visibility"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:name_to_visibility"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"lineno\":694,\"end_lineno\":706,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMeta\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"name\":\"UMLClassMeta\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"visibility\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:visibility", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:visibility", "target": "{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:name_to_visibility", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:name_to_visibility", "target": "{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"name\":\"UMLClassMethod\",\"package\":\"metagpt/schema.py:UMLClassMethod\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"return_type\":{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[\"UMLClassAttribute\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:args"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:return_type"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"lineno\":732,\"end_lineno\":746,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMethod\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"name\":\"UMLClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"return_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassMethod", "target": "?:UMLClassAttribute"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:args", "target": "{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:return_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:return_type", "target": "{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView", "target": "{\"name\":\"UMLClassView\",\"package\":\"metagpt/schema.py:UMLClassView\",\"attributes\":{\"attributes\":{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"methods\":{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]},\"load_dot_class_info\":{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}},\"compositions\":[\"UMLClassAttribute\",\"UMLClassMethod\"],\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:attributes"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:methods"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:get_mermaid"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:load_dot_class_info"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassView"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:DotClassInfo"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassMethod"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassView", "target": "{\"lineno\":749,\"end_lineno\":776,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassView", "target": "{\"name\":\"UMLClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassMethod]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassMethod"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:attributes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:attributes", "target": "{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:methods", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:methods", "target": "{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:load_dot_class_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:load_dot_class_info", "target": "{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/ut_writer.py", "target": "metagpt/tools/ut_writer.py:UTGenerator"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"name\":\"UTGenerator\",\"package\":\"metagpt/tools/ut_writer.py:UTGenerator\",\"attributes\":{\"chatgpt_method\":{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]},\"icl_sample\":{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]},\"questions_path\":{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]},\"swagger_file\":{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]},\"template_prefix\":{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]},\"ut_py_path\":{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}},\"methods\":{\"ask_gpt_and_save\":{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]},\"build_api_doc\":{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]},\"build_object_properties\":{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]},\"generate_ut\":{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]},\"get_swagger_json\":{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]},\"get_tags_mapping\":{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]},\"gpt_msgs_to_code\":{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]},\"para_to_str\":{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:questions_path"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"lineno\":104,\"end_lineno\":287,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UTGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"name\":\"UTGenerator\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"chatgpt_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"icl_sample\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"questions_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"swagger_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"template_prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ut_py_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method", "target": "{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample", "target": "{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:questions_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:questions_path", "target": "{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file", "target": "{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix", "target": "{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path", "target": "{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save", "target": "{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc", "target": "{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties", "target": "{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut", "target": "{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json", "target": "{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping", "target": "{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code", "target": "{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str", "target": "{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"name\":\"Usage\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Usage\",\"attributes\":{\"prompt_tokens\":{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]},\"total_tokens\":{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Usage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"name\":\"Usage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens", "target": "{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens", "target": "{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UserMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UserMessage", "target": "{\"name\":\"UserMessage\",\"package\":\"metagpt/schema.py:UserMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UserMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UserMessage", "target": "metagpt/schema.py:UserMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UserMessage", "target": "{\"lineno\":306,\"end_lineno\":312,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UserMessage", "target": "{\"name\":\"UserMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/add_requirement.py", "target": "metagpt/actions/add_requirement.py:UserRequirement"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"name\":\"UserRequirement\",\"package\":\"metagpt/actions/add_requirement.py:UserRequirement\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/schema.py:Message"}, {"predicate": "isAggregateOn", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/schema.py:Message:cause_by"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserRequirement\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"name\":\"UserRequirement\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "{\"name\":\"VarianceBasedSelection\",\"package\":\"metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection\",\"attributes\":{\"feats\":{\"name\":\"feats\",\"type_\":\"\",\"default_\":\"\",\"description\":\"feats : NoneType\",\"compositions\":[]},\"label_col\":{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]},\"selector\":{\"name\":\"selector\",\"type_\":\"VarianceThreshold\",\"default_\":\"\",\"description\":\"selector : VarianceThreshold\",\"compositions\":[\"VarianceThreshold\"]},\"threshold\":{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}},\"methods\":{\"fit\":{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]},\"transform\":{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}},\"compositions\":[\"VarianceThreshold\"],\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:feats"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:label_col"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:selector"}, {"predicate": "has_class_property", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:threshold"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:fit"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:transform"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "?:VarianceThreshold"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "?:pd.DataFrame"}, {"predicate": "isGeneralizeOf", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "metagpt/tools/libs/data_preprocess.py:MLProcess"}, {"predicate": "has_class_method", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "{\"lineno\":407,\"end_lineno\":435,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VarianceBasedSelection\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection", "target": "{\"name\":\"VarianceBasedSelection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"feats\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"label_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"selector\",\"visibility\":\"+\",\"value_type\":\"VarianceThreshold\",\"default_value\":\"\"},{\"name\":\"threshold\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:feats", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:feats", "target": "{\"name\":\"feats\",\"type_\":\"\",\"default_\":\"\",\"description\":\"feats : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:label_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:label_col", "target": "{\"name\":\"label_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"label_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:selector", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:selector", "target": "{\"name\":\"selector\",\"type_\":\"VarianceThreshold\",\"default_\":\"\",\"description\":\"selector : VarianceThreshold\",\"compositions\":[\"VarianceThreshold\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:threshold", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:threshold", "target": "{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:fit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:fit", "target": "{\"name\":\"fit\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fit(df: pd.DataFrame)\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:transform", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:transform", "target": "{\"name\":\"transform\",\"args\":[{\"name\":\"df\",\"type_\":\"pd.DataFrame\",\"default_\":\"\",\"description\":\"df: pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]}],\"return_args\":{\"type_\":\"pd.DataFrame\",\"description\":\"pd.DataFrame\",\"compositions\":[\"pd.DataFrame\"]},\"description\":\"transform(df: pd.DataFrame): pd.DataFrame\",\"aggregations\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"name\":\"VisualDiGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo\",\"attributes\":{},\"methods\":{\"get_mermaid_class_view\":{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]},\"get_mermaid_sequence_view_versions\":{\"name\":\"get_mermaid_sequence_view_versions\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_view_versions(): List[str, str]\",\"aggregations\":[]},\"get_mermaid_sequence_views\":{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_view_versions"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"lineno\":84,\"end_lineno\":187,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualDiGraphRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"name\":\"VisualDiGraphRepo\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view", "target": "{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_view_versions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_view_versions", "target": "{\"name\":\"get_mermaid_sequence_view_versions\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_view_versions(): List[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views", "target": "{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from", "target": "{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"name\":\"VisualGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualGraphRepo\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"lineno\":70,\"end_lineno\":81,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualGraphRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"name\":\"VisualGraphRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"name\":\"WDMHttpProxyClient\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient\",\"attributes\":{\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"lineno\":99,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WDMHttpProxyClient\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"name\":\"WDMHttpProxyClient\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"name\":\"WebBrowseAndSummarize\",\"package\":\"metagpt/actions/research.py:WebBrowseAndSummarize\",\"attributes\":{\"browse_func\":{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"web_browser_engine\":{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]},\"validate_engine_and_run_func\":{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"WebBrowserEngine\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:validate_engine_and_run_func"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "?:Callable"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"lineno\":180,\"end_lineno\":245,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowseAndSummarize\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"name\":\"WebBrowseAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browse_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[WebBrowserEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "?:WebBrowserEngine"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func", "target": "{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine", "target": "{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:validate_engine_and_run_func", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:validate_engine_and_run_func", "target": "{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine.py", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"name\":\"WebBrowserEngine\",\"package\":\"metagpt/tools/web_browser_engine.py:WebBrowserEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Optional[Callable[...,Coroutine[Any,Any,Union[WebPage,list[WebPage]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[..., Coroutine[Any, Any, Union[WebPage, list[WebPage]]]]]\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\"]}},\"methods\":{\"from_browser_config\":{\"name\":\"from_browser_config\",\"args\":[{\"name\":\"config\",\"type_\":\"BrowserConfig\",\"default_\":\"\",\"description\":\"config: BrowserConfig\",\"compositions\":[\"BrowserConfig\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_browser_config(config: BrowserConfig)\",\"aggregations\":[\"BrowserConfig\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]},\"validate_extra\":{\"name\":\"validate_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_extra()\",\"aggregations\":[]}},\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\"],\"aggregations\":[\"BrowserConfig\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:proxy"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:from_browser_config"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:validate_extra"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:Coroutine"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:BrowserConfig"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"predicate": "is_composite_of", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/utils/parse_html.py:WebPage"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:_process_extra"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"lineno\":15,\"end_lineno\":115,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"name\":\"WebBrowserEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[...,Coroutine[Any,Any,Union[WebPage,list[WebPage]]]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:WebPage"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func", "target": "{\"name\":\"run_func\",\"type_\":\"Optional[Callable[...,Coroutine[Any,Any,Union[WebPage,list[WebPage]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[..., Coroutine[Any, Any, Union[WebPage, list[WebPage]]]]]\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:from_browser_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:from_browser_config", "target": "{\"name\":\"from_browser_config\",\"args\":[{\"name\":\"config\",\"type_\":\"BrowserConfig\",\"default_\":\"\",\"description\":\"config: BrowserConfig\",\"compositions\":[\"BrowserConfig\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_browser_config(config: BrowserConfig)\",\"aggregations\":[\"BrowserConfig\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:validate_extra", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:validate_extra", "target": "{\"name\":\"validate_extra\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_extra()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools:WebBrowserEngineType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools:WebBrowserEngineType", "target": "{\"name\":\"WebBrowserEngineType\",\"package\":\"metagpt/tools:WebBrowserEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools:WebBrowserEngineType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/configs/browser_config.py:BrowserConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"predicate": "has_class_view", "source": "metagpt/tools:WebBrowserEngineType", "target": "{\"name\":\"WebBrowserEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools:WebBrowserEngineType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools:WebBrowserEngineType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:WebPage"}, {"predicate": "has_function", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:get_html_content"}, {"predicate": "has_function", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:_get_soup"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"name\":\"WebPage\",\"package\":\"metagpt/utils/parse_html.py:WebPage\",\"attributes\":{\"html\":{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]},\"inner_text\":{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]},\"soup\":{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]},\"title\":{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{\"get_links\":{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}},\"compositions\":[],\"aggregations\":[\"Generator\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:html"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:inner_text"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:soup"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:title"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:url"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:get_links"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/parse_html.py:WebPage", "target": "?:Generator"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"lineno\":11,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebPage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"name\":\"WebPage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"html\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inner_text\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"soup\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:html", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:html", "target": "{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:inner_text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:inner_text", "target": "{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:url", "target": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:get_links", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:get_links", "target": "{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_env.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_env.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment/werewolf_env/werewolf_env.py", "target": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "{\"name\":\"WerewolfEnv\",\"package\":\"metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv\",\"attributes\":{\"history\":{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]},\"timestamp\":{\"name\":\"timestamp\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timestamp : int\",\"compositions\":[]}},\"methods\":{\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"add_timestamp\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"add_timestamp: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(message: Message, add_timestamp: bool)\",\"aggregations\":[\"Message\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:history"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:timestamp"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:publish_message"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:run"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "metagpt/environment/base_env.py:Environment"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "{\"lineno\":13,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WerewolfEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv", "target": "{\"name\":\"WerewolfEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timestamp\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:history", "target": "{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:timestamp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:timestamp", "target": "{\"name\":\"timestamp\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timestamp : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:publish_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:publish_message", "target": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"add_timestamp\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"add_timestamp: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(message: Message, add_timestamp: bool)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_env.py:WerewolfEnv:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "{\"name\":\"WerewolfExtEnv\",\"package\":\"metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv\",\"attributes\":{\"eval_step_idx\":{\"name\":\"eval_step_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"eval_step_idx : int\",\"compositions\":[]},\"game_setup\":{\"name\":\"game_setup\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"game_setup : str\",\"compositions\":[]},\"is_hunted_player_saved\":{\"name\":\"is_hunted_player_saved\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_hunted_player_saved : bool\",\"compositions\":[]},\"living_players\":{\"name\":\"living_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"living_players\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"per_round_steps\":{\"name\":\"per_round_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"per_round_steps : int\",\"compositions\":[]},\"player_current_dead\":{\"name\":\"player_current_dead\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"player_current_dead : list[str]\",\"compositions\":[]},\"player_hunted\":{\"name\":\"player_hunted\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_hunted : Optional[str]\",\"compositions\":[]},\"player_poisoned\":{\"name\":\"player_poisoned\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_poisoned : Optional[str]\",\"compositions\":[]},\"player_protected\":{\"name\":\"player_protected\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_protected : Optional[str]\",\"compositions\":[]},\"players_state\":{\"name\":\"players_state\",\"type_\":\"dict[str,tuple[str,RoleState]]\",\"default_\":\"\",\"description\":\"players_state : dict[str, tuple[str, RoleState]]\",\"compositions\":[\"RoleState\",\"tuple\"]},\"round_hunts\":{\"name\":\"round_hunts\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"round_hunts : dict[str, str]\",\"compositions\":[]},\"round_idx\":{\"name\":\"round_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"round_idx : int\",\"compositions\":[]},\"round_votes\":{\"name\":\"round_votes\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"round_votes : dict[str, str]\",\"compositions\":[]},\"special_role_players\":{\"name\":\"special_role_players\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"special_role_players : list[str]\",\"compositions\":[]},\"step_idx\":{\"name\":\"step_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"step_idx : int\",\"compositions\":[]},\"villager_players\":{\"name\":\"villager_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"villager_players\",\"compositions\":[]},\"werewolf_players\":{\"name\":\"werewolf_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"werewolf_players\",\"compositions\":[]},\"win_reason\":{\"name\":\"win_reason\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"win_reason : Optional[str]\",\"compositions\":[]},\"winner\":{\"name\":\"winner\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"winner : Optional[str]\",\"compositions\":[]},\"witch_antidote_left\":{\"name\":\"witch_antidote_left\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"witch_antidote_left : int\",\"compositions\":[]},\"witch_poison_left\":{\"name\":\"witch_poison_left\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"witch_poison_left : int\",\"compositions\":[]}},\"methods\":{\"curr_step_instruction\":{\"name\":\"curr_step_instruction\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"curr_step_instruction(): dict\",\"aggregations\":[]},\"get_players_state\":{\"name\":\"get_players_state\",\"args\":[{\"name\":\"player_names\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"player_names: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,RoleState]\",\"description\":\"dict[str, RoleState]\",\"compositions\":[\"RoleState\"]},\"description\":\"get_players_state(player_names: list[str]): dict[str, RoleState]\",\"aggregations\":[\"RoleState\"]},\"init_game_setup\":{\"name\":\"init_game_setup\",\"args\":[{\"name\":\"role_uniq_objs\",\"type_\":\"list[object]\",\"default_\":\"\",\"description\":\"role_uniq_objs: list[object]\",\"compositions\":[\"object\"]},{\"name\":\"num_villager\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_villager: int\",\"compositions\":[]},{\"name\":\"num_werewolf\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_werewolf: int\",\"compositions\":[]},{\"name\":\"shuffle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"shuffle\",\"compositions\":[]},{\"name\":\"add_human\",\"type_\":\"\",\"default_\":\"\",\"description\":\"add_human\",\"compositions\":[]},{\"name\":\"use_reflection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_reflection\",\"compositions\":[]},{\"name\":\"use_experience\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_experience\",\"compositions\":[]},{\"name\":\"use_memory_selection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_memory_selection\",\"compositions\":[]},{\"name\":\"new_experience_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_experience_version\",\"compositions\":[]},{\"name\":\"prepare_human_player\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prepare_human_player\",\"compositions\":[]}],\"return_args\":{\"type_\":\"tuple[str,list]\",\"description\":\"tuple[str, list]\",\"compositions\":[\"tuple\"]},\"description\":\"init_game_setup(role_uniq_objs: list[object], num_villager: int, num_werewolf: int, shuffle, add_human, use_reflection, use_experience, use_memory_selection, new_experience_version, prepare_human_player): tuple[str, list]\",\"aggregations\":[\"tuple\",\"object\"]},\"update_game_states\":{\"name\":\"update_game_states\",\"args\":[{\"name\":\"memories\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"memories: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_game_states(memories: list)\",\"aggregations\":[]},\"vote_kill_someone\":{\"name\":\"vote_kill_someone\",\"args\":[{\"name\":\"voteer\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"voteer: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"player_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"vote_kill_someone(voteer: 'Role', player_name: str)\",\"aggregations\":[\"Role\"]},\"witch_poison_someone\":{\"name\":\"witch_poison_someone\",\"args\":[{\"name\":\"witch\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"witch: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_name: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"witch_poison_someone(witch: 'Role', player_name: Optional[str])\",\"aggregations\":[\"Role\"]},\"witch_save_someone\":{\"name\":\"witch_save_someone\",\"args\":[{\"name\":\"witch\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"witch: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_name: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"witch_save_someone(witch: 'Role', player_name: Optional[str])\",\"aggregations\":[\"Role\"]},\"wolf_kill_someone\":{\"name\":\"wolf_kill_someone\",\"args\":[{\"name\":\"wolf\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"wolf: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"player_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"wolf_kill_someone(wolf: 'Role', player_name: str)\",\"aggregations\":[\"Role\"]}},\"compositions\":[\"RoleState\",\"tuple\"],\"aggregations\":[\"object\",\"Role\"]}"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:eval_step_idx"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:game_setup"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:is_hunted_player_saved"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:living_players"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:model_config"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:per_round_steps"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_current_dead"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_hunted"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_poisoned"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_protected"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:players_state"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_hunts"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_idx"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_votes"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:special_role_players"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:step_idx"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:villager_players"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:werewolf_players"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:win_reason"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:winner"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_antidote_left"}, {"predicate": "has_class_property", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_poison_left"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:curr_step_instruction"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:get_players_state"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:init_game_setup"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:update_game_states"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:vote_kill_someone"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_poison_someone"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_save_someone"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:wolf_kill_someone"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "?:object"}, {"predicate": "isAggregateOf", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "?:Role"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/base_env.py:ExtEnv"}, {"predicate": "is_composite_of", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:RoleState"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_role_type_players"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_init_players_state"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_update_players_state"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_check_valid_role"}, {"predicate": "has_class_method", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_check_player_continue"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "{\"lineno\":100,\"end_lineno\":335,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WerewolfExtEnv\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "{\"name\":\"WerewolfExtEnv\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"eval_step_idx\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"game_setup\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_hunted_player_saved\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"living_players\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"per_round_steps\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"player_current_dead\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"player_hunted\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"player_poisoned\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"player_protected\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"players_state\",\"visibility\":\"+\",\"value_type\":\"dict[str,tuple[str,RoleState]]\",\"default_value\":\"\"},{\"name\":\"round_hunts\",\"visibility\":\"+\",\"value_type\":\"dict[str,str]\",\"default_value\":\"\"},{\"name\":\"round_idx\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"round_votes\",\"visibility\":\"+\",\"value_type\":\"dict[str,str]\",\"default_value\":\"\"},{\"name\":\"special_role_players\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"step_idx\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"villager_players\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"werewolf_players\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"win_reason\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"winner\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"witch_antidote_left\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"witch_poison_left\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv", "target": "?:RoleState"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:eval_step_idx", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:eval_step_idx", "target": "{\"name\":\"eval_step_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"eval_step_idx : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:game_setup", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:game_setup", "target": "{\"name\":\"game_setup\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"game_setup : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:is_hunted_player_saved", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:is_hunted_player_saved", "target": "{\"name\":\"is_hunted_player_saved\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_hunted_player_saved : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:living_players", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:living_players", "target": "{\"name\":\"living_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"living_players\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:living_players", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:per_round_steps", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:per_round_steps", "target": "{\"name\":\"per_round_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"per_round_steps : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_current_dead", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_current_dead", "target": "{\"name\":\"player_current_dead\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"player_current_dead : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_hunted", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_hunted", "target": "{\"name\":\"player_hunted\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_hunted : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_poisoned", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_poisoned", "target": "{\"name\":\"player_poisoned\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_poisoned : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_protected", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:player_protected", "target": "{\"name\":\"player_protected\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_protected : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:players_state", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:players_state", "target": "{\"name\":\"players_state\",\"type_\":\"dict[str,tuple[str,RoleState]]\",\"default_\":\"\",\"description\":\"players_state : dict[str, tuple[str, RoleState]]\",\"compositions\":[\"RoleState\",\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_hunts", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_hunts", "target": "{\"name\":\"round_hunts\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"round_hunts : dict[str, str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_idx", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_idx", "target": "{\"name\":\"round_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"round_idx : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_votes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:round_votes", "target": "{\"name\":\"round_votes\",\"type_\":\"dict[str,str]\",\"default_\":\"\",\"description\":\"round_votes : dict[str, str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:special_role_players", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:special_role_players", "target": "{\"name\":\"special_role_players\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"special_role_players : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:step_idx", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:step_idx", "target": "{\"name\":\"step_idx\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"step_idx : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:villager_players", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:villager_players", "target": "{\"name\":\"villager_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"villager_players\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:villager_players", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:werewolf_players", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:werewolf_players", "target": "{\"name\":\"werewolf_players\",\"type_\":\"\",\"default_\":\"\",\"description\":\"werewolf_players\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:werewolf_players", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:win_reason", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:win_reason", "target": "{\"name\":\"win_reason\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"win_reason : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:winner", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:winner", "target": "{\"name\":\"winner\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"winner : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_antidote_left", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_antidote_left", "target": "{\"name\":\"witch_antidote_left\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"witch_antidote_left : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_poison_left", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_poison_left", "target": "{\"name\":\"witch_poison_left\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"witch_poison_left : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:curr_step_instruction", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:curr_step_instruction", "target": "{\"name\":\"curr_step_instruction\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"curr_step_instruction(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:get_players_state", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:get_players_state", "target": "{\"name\":\"get_players_state\",\"args\":[{\"name\":\"player_names\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"player_names: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,RoleState]\",\"description\":\"dict[str, RoleState]\",\"compositions\":[\"RoleState\"]},\"description\":\"get_players_state(player_names: list[str]): dict[str, RoleState]\",\"aggregations\":[\"RoleState\"]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:init_game_setup", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:init_game_setup", "target": "{\"name\":\"init_game_setup\",\"args\":[{\"name\":\"role_uniq_objs\",\"type_\":\"list[object]\",\"default_\":\"\",\"description\":\"role_uniq_objs: list[object]\",\"compositions\":[\"object\"]},{\"name\":\"num_villager\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_villager: int\",\"compositions\":[]},{\"name\":\"num_werewolf\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_werewolf: int\",\"compositions\":[]},{\"name\":\"shuffle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"shuffle\",\"compositions\":[]},{\"name\":\"add_human\",\"type_\":\"\",\"default_\":\"\",\"description\":\"add_human\",\"compositions\":[]},{\"name\":\"use_reflection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_reflection\",\"compositions\":[]},{\"name\":\"use_experience\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_experience\",\"compositions\":[]},{\"name\":\"use_memory_selection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"use_memory_selection\",\"compositions\":[]},{\"name\":\"new_experience_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_experience_version\",\"compositions\":[]},{\"name\":\"prepare_human_player\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prepare_human_player\",\"compositions\":[]}],\"return_args\":{\"type_\":\"tuple[str,list]\",\"description\":\"tuple[str, list]\",\"compositions\":[\"tuple\"]},\"description\":\"init_game_setup(role_uniq_objs: list[object], num_villager: int, num_werewolf: int, shuffle, add_human, use_reflection, use_experience, use_memory_selection, new_experience_version, prepare_human_player): tuple[str, list]\",\"aggregations\":[\"tuple\",\"object\"]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:update_game_states", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:update_game_states", "target": "{\"name\":\"update_game_states\",\"args\":[{\"name\":\"memories\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"memories: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_game_states(memories: list)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:vote_kill_someone", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:vote_kill_someone", "target": "{\"name\":\"vote_kill_someone\",\"args\":[{\"name\":\"voteer\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"voteer: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"player_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"vote_kill_someone(voteer: 'Role', player_name: str)\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_poison_someone", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_poison_someone", "target": "{\"name\":\"witch_poison_someone\",\"args\":[{\"name\":\"witch\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"witch: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_name: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"witch_poison_someone(witch: 'Role', player_name: Optional[str])\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_save_someone", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:witch_save_someone", "target": "{\"name\":\"witch_save_someone\",\"args\":[{\"name\":\"witch\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"witch: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"player_name: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"witch_save_someone(witch: 'Role', player_name: Optional[str])\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:wolf_kill_someone", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:wolf_kill_someone", "target": "{\"name\":\"wolf_kill_someone\",\"args\":[{\"name\":\"wolf\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"wolf: 'Role'\",\"compositions\":[\"Role\"]},{\"name\":\"player_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"player_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"wolf_kill_someone(wolf: 'Role', player_name: str)\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"name\":\"WikiHowTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:WikiHowTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"lineno\":52,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WikiHowTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"name\":\"WikiHowTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/workspace_config.py", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"name\":\"WorkspaceConfig\",\"package\":\"metagpt/configs/workspace_config.py:WorkspaceConfig\",\"attributes\":{\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"uid\":{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]},\"use_uid\":{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}},\"methods\":{\"check_uid_and_update_path\":{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]},\"check_workspace_path\":{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:path"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid"}, {"predicate": "has_class_method", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path"}, {"predicate": "has_class_method", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/config2.py:Config:workspace"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"lineno\":18,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WorkspaceConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"name\":\"WorkspaceConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"uid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_uid\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid", "target": "{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid", "target": "{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path", "target": "{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path", "target": "{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:WriteAPIRegistry", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment/api/env_api.py:WriteAPIRegistry", "target": "{\"name\":\"WriteAPIRegistry\",\"package\":\"metagpt/environment/api/env_api.py:WriteAPIRegistry\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/environment/api/env_api.py:WriteAPIRegistry", "target": "metagpt/environment/api/env_api.py:EnvAPIRegistry"}, {"predicate": "has_page_info", "source": "metagpt/environment/api/env_api.py:WriteAPIRegistry", "target": "{\"lineno\":51,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteAPIRegistry\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment/api/env_api.py:WriteAPIRegistry", "target": "{\"name\":\"WriteAPIRegistry\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code.py", "target": "metagpt/actions/write_code.py:WriteCode"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"name\":\"WriteCode\",\"package\":\"metagpt/actions/write_code.py:WriteCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_codes\":{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"Document\",\"ProjectRepo\"]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Document\",\"ProjectRepo\",\"CodingContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:get_codes"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:write_code"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:ProjectRepo"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:CodingContext"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"lineno\":83,\"end_lineno\":213,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"name\":\"WriteCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:get_codes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:get_codes", "target": "{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"Document\",\"ProjectRepo\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:write_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:write_code", "target": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_an_draft.py", "target": "metagpt/actions/write_code_an_draft.py:WriteCodeAN"}, {"predicate": "has_function", "source": "metagpt/actions/write_code_an_draft.py", "target": "metagpt/actions/write_code_an_draft.py:main"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"name\":\"WriteCodeAN\",\"package\":\"metagpt/actions/write_code_an_draft.py:WriteCodeAN\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"lineno\":576,\"end_lineno\":581,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeAN\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"name\":\"WriteCodeAN\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"name\":\"WriteCodePlanAndChange\",\"package\":\"metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_old_codes\":{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"lineno\":185,\"end_lineno\":210,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodePlanAndChange\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"name\":\"WriteCodePlanAndChange\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes", "target": "{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_review.py", "target": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"name\":\"WriteCodeReview\",\"package\":\"metagpt/actions/write_code_review.py:WriteCodeReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code_review_and_rewrite\":{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "?:CodingContext"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"lineno\":121,\"end_lineno\":191,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"name\":\"WriteCodeReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite", "target": "{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_tutorial.py", "target": "metagpt/actions/write_tutorial.py:WriteContent"}, {"predicate": "has_class", "source": "metagpt/actions/write_tutorial.py", "target": "metagpt/actions/write_tutorial.py:WriteDirectory"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"name\":\"WriteContent\",\"package\":\"metagpt/actions/write_tutorial.py:WriteContent\",\"attributes\":{\"directory\":{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:directory"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"lineno\":42,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteContent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"name\":\"WriteContent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"directory\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:directory", "target": "{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/design_api.py", "target": "metagpt/actions/design_api.py:WriteDesign"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"name\":\"WriteDesign\",\"package\":\"metagpt/actions/design_api.py:WriteDesign\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_new_system_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_update_system_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"lineno\":39,\"end_lineno\":120,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDesign\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"name\":\"WriteDesign\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"name\":\"WriteDirectory\",\"package\":\"metagpt/actions/write_tutorial.py:WriteDirectory\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"lineno\":17,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDirectory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"name\":\"WriteDirectory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_docstring.py", "target": "metagpt/actions/write_docstring.py:WriteDocstring"}, {"predicate": "has_function", "source": "metagpt/actions/write_docstring.py", "target": "metagpt/actions/write_docstring.py:_simplify_python_code"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"name\":\"WriteDocstring\",\"package\":\"metagpt/actions/write_docstring.py:WriteDocstring\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]},\"write_docstring\":{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:i_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"lineno\":156,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDocstring\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"name\":\"WriteDocstring\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring", "target": "{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_prd.py", "target": "metagpt/actions/write_prd.py:WritePRD"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"name\":\"WritePRD\",\"package\":\"metagpt/actions/write_prd.py:WritePRD\",\"attributes\":{\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}},\"methods\":{\"get_related_docs\":{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Document\",\"Message\",\"ActionOutput\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:project_name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:get_related_docs"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:ActionOutput\\"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_is_related"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_update_prd"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"lineno\":61,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRD\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"name\":\"WritePRD\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:get_related_docs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:get_related_docs", "target": "{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_prd_review.py", "target": "metagpt/actions/write_prd_review.py:WritePRDReview"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"name\":\"WritePRDReview\",\"package\":\"metagpt/actions/write_prd_review.py:WritePRDReview\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]},\"prd_review_prompt_template\":{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:prd"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"lineno\":14,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRDReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"name\":\"WritePRDReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"prd_review_prompt_template\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd", "target": "{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template", "target": "{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_review.py", "target": "metagpt/actions/write_review.py:WriteReview"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"name\":\"WriteReview\",\"package\":\"metagpt/actions/write_review.py:WriteReview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/write_review.py:WriteReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/write_review.py:WriteReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"name\":\"WriteReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/project_management.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/project_management.py", "target": "metagpt/actions/project_management.py:WriteTasks"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"name\":\"WriteTasks\",\"package\":\"metagpt/actions/project_management.py:WriteTasks\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_update_tasks"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_update_requirements"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"lineno\":32,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTasks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"name\":\"WriteTasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"name\":\"WriteTeachingPlanPart\",\"package\":\"metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{\"format_value\":{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Context\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "?:Context"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"lineno\":15,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTeachingPlanPart\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"name\":\"WriteTeachingPlanPart\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value", "target": "{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_test.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_test.py", "target": "metagpt/actions/write_test.py:WriteTest"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"name\":\"WriteTest\",\"package\":\"metagpt/actions/write_test.py:WriteTest\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}},\"compositions\":[\"TestingContext\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:write_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"lineno\":40,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTest\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"name\":\"WriteTest\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[TestingContext]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/write_test.py:WriteTest", "target": "?:TestingContext"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:write_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:write_code", "target": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "{\"name\":\"WsParam\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}},\"methods\":{\"create_url\":{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "{\"name\":\"WsParam\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host", "target": "{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message", "target": "{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path", "target": "{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url", "target": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url", "target": "{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/yaml_model.py", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "has_class", "source": "metagpt/utils/yaml_model.py", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"name\":\"YamlModel\",\"package\":\"metagpt/utils/yaml_model.py:YamlModel\",\"attributes\":{\"extra_fields\":{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}},\"methods\":{\"from_yaml_file\":{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]},\"read_yaml\":{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]},\"to_yaml_file\":{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:extra_fields"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:read_yaml"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "?:YamlModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"lineno\":15,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModel\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"name\":\"YamlModel\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"extra_fields\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,str]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:extra_fields", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:extra_fields", "target": "{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file", "target": "{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:read_yaml", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:read_yaml", "target": "{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file", "target": "{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"name\":\"YamlModelWithoutDefault\",\"package\":\"metagpt/utils/yaml_model.py:YamlModelWithoutDefault\",\"attributes\":{},\"methods\":{\"check_not_default_config\":{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModelWithoutDefault\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"name\":\"YamlModelWithoutDefault\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config", "target": "{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai_api.py", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai_api.py", "target": "metagpt/provider/zhipuai_api.py:ZhiPuEvent"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"name\":\"ZhiPuAILLM\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuAILLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"pricing_plan\":{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}},\"compositions\":[\"CostManager\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:pricing_plan"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "is_composite_of", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"lineno\":36,\"end_lineno\":110,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"name\":\"ZhiPuAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pricing_plan\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "?:CostManager"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:pricing_plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:pricing_plan", "target": "{\"name\":\"pricing_plan\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pricing_plan\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion", "target": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"name\":\"ZhiPuEvent\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuEvent\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"lineno\":28,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuEvent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"name\":\"ZhiPuEvent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"name\":\"ZhiPuModelAPI\",\"package\":\"metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI\",\"attributes\":{},\"methods\":{\"acreate\":{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]},\"acreate_stream\":{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]},\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]},\"split_zhipu_api_url\":{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"AsyncSSEClient\"]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "?:AsyncSSEClient"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"lineno\":14,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuModelAPI\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"name\":\"ZhiPuModelAPI\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate", "target": "{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream", "target": "{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest", "target": "{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url", "target": "{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "{\"name\":\"_AgentSkill\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "{\"name\":\"_AgentSkill\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"name\":\"_VisualClassView\",\"package\":\"metagpt/utils/visual_graph_repo.py:_VisualClassView\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"generalizations\":{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]},\"uml\":{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align: int): str\",\"aggregations\":[]}},\"compositions\":[\"UMLClassView\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid"}, {"predicate": "is_composite_of", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/schema.py:UMLClassView"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"lineno\":25,\"end_lineno\":67,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"_VisualClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"name\":\"_VisualClassView\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"generalizations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"uml\",\"visibility\":\"+\",\"value_type\":\"Optional[UMLClassView]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "?:UMLClassView"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations", "target": "{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package", "target": "{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml", "target": "{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:reSTDocstringParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_docstring.py:reSTDocstringParser", "target": "{\"name\":\"reSTDocstringParser\",\"package\":\"metagpt/utils/parse_docstring.py:reSTDocstringParser\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/parse_docstring.py:reSTDocstringParser", "target": "metagpt/utils/parse_docstring.py:DocstringParser"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:reSTDocstringParser", "target": "{\"lineno\":44,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"reSTDocstringParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/parse_docstring.py:reSTDocstringParser", "target": "{\"name\":\"reSTDocstringParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:_split_literal", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:_parse_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:_parse_args", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_file", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_expr", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_if", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_if_compare", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_variable", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_assign", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_classes", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_split_class_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_split_relationship_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_get_label", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_create_path_mapping", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_repair_namespaces", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_repair_ns", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_find_root", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:is_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:is_func", "target": "{\"lineno\":1008,\"end_lineno\":1018,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_func\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ast.Constant:\nBuild a symbols repository from source code.\n\nThis script is designed to create a symbols repository from the provided source code.\n\n@Time : 2023/11/17 17:58\n@Author : alexanderwu\n@File : repo_parser.py\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nBuild a symbols repository from source code.\\n\\nThis script is designed to create a symbols repository from the provided source code.\\n\\n@Time : 2023/11/17 17:58\\n@Author : alexanderwu\\n@File : repo_parser.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:__future__", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['annotations']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ast", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:json", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:re", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:subprocess", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:pathlib", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['Path']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:typing", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:pandas as pd", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:pydantic", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['BaseModel', 'Field', 'field_validator']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.const", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.logs", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['logger']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.utils.common", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\",\"remove_white_spaces\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['any_to_str', 'aread', 'remove_white_spaces']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\",\"remove_white_spaces\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['handle_exception']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:asyncio", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['AsyncGenerator', 'Awaitable', 'Callable']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:pydantic", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.logs", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['logger']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.roles", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['Role']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.schema", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['Message']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/software_company.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/software_company.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/software_company.py", "target": "metagpt/software_company.py:generate_repo"}, {"predicate": "has_function", "source": "metagpt/software_company.py", "target": "metagpt/software_company.py:startup"}, {"predicate": "has_function", "source": "metagpt/software_company.py", "target": "metagpt/software_company.py:copy_config_to"}, {"predicate": "is", "source": "metagpt/software_company.py:generate_repo", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:generate_repo", "target": "{\"lineno\":18,\"end_lineno\":72,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_repo\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/software_company.py:startup", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:startup", "target": "{\"lineno\":76,\"end_lineno\":122,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"startup\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/software_company.py:copy_config_to", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:copy_config_to", "target": "{\"lineno\":125,\"end_lineno\":140,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"copy_config_to\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/software_company.py:app", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:app", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"app\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:asyncio", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:shutil", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:module:pathlib", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:names:['Path']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:typer", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"typer\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:names:['config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:module:metagpt.const", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:module:metagpt.context", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:names:['Context']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:names:['ProjectRepo']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/software_company.py:__name__:__main__", "target": "{\"lineno\":143,\"end_lineno\":144,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/__init__.py:module:metagpt", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/__init__.py:names:['_compat as _']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"predicate": "is", "source": "metagpt/llm.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/llm.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/llm.py", "target": "metagpt/llm.py:LLM"}, {"predicate": "is", "source": "metagpt/llm.py:LLM", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:LLM", "target": "{\"lineno\":15,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"LLM\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:ast.Constant:\n@Time : 2023/5/11 14:45\n@Author : alexanderwu\n@File : llm.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:45\\n@Author : alexanderwu\\n@File : llm.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['LLMConfig']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['BaseLLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/config2.py:merge_dict", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:merge_dict", "target": "{\"lineno\":129,\"end_lineno\":134,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_dict\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/config2.py:config", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:config", "target": "{\"lineno\":137,\"end_lineno\":137,\"type_name\":\"ast.Assign\",\"tokens\":[\"config\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:ast.Constant:\n@Time : 2024/1/4 01:25\n@Author : alexanderwu\n@File : config2.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 01:25\\n@Author : alexanderwu\\n@File : config2.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['Dict', 'Iterable', 'List', 'Literal', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['BaseModel', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.browser_config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['BrowserConfig']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.mermaid_config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['MermaidConfig']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.redis_config", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['RedisConfig']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.s3_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['S3Config']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.search_config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['SearchConfig']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.workspace_config", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['WorkspaceConfig']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['YamlModel']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/team.py:Team:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:_check_balance", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:_save", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/team.py:ast.Constant:\n@Time : 2023/5/12 00:30\n@Author : alexanderwu\n@File : team.py\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\n Section 2.2.3.3 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/12 00:30\\n@Author : alexanderwu\\n@File : team.py\\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\\n Section 2.2.3.3 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:warnings", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Any', 'Optional']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.actions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['UserRequirement']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['MESSAGE_ROUTE_TO_ALL', 'SERDESER_PATH']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.context", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Context']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.environment", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Environment']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.roles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Role']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.schema", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Message']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['NoMoneyException', 'read_json_file', 'serialize_decorator', 'write_json_file']", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__getattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__setattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__delattr__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/context.py:ast.Constant:\n@Time : 2024/1/4 16:32\n@Author : alexanderwu\n@File : context.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:32\\n@Author : alexanderwu\\n@File : context.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Any', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['BaseModel', 'ConfigDict']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['LLMConfig']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['BaseLLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['create_llm_instance']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['CostManager']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['GitRepository']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['ProjectRepo']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/logs.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/logs.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:define_log_level"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:log_llm_stream"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:set_llm_stream_logfunc"}, {"predicate": "is", "source": "metagpt/logs.py:define_log_level", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:define_log_level", "target": "{\"lineno\":18,\"end_lineno\":27,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"define_log_level\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:log_llm_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:log_llm_stream", "target": "{\"lineno\":33,\"end_lineno\":34,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_llm_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:set_llm_stream_logfunc", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:set_llm_stream_logfunc", "target": "{\"lineno\":37,\"end_lineno\":39,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"set_llm_stream_logfunc\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:logger", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:logger", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:_llm_stream_log", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:_llm_stream_log", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"_llm_stream_log\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:ast.Constant:\n@Time : 2023/6/1 12:41\n@Author : alexanderwu\n@File : logs.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/1 12:41\\n@Author : alexanderwu\\n@File : logs.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:sys", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:datetime", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['datetime']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:functools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['partial']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:loguru", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['logger as _logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['METAGPT_ROOT']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:Repo:_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:Repo:_set", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:validate_cols", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/document.py:validate_cols", "target": "{\"lineno\":27,\"end_lineno\":29,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_cols\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document.py:read_data", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/document.py:read_data", "target": "{\"lineno\":32,\"end_lineno\":51,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_data\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:ast.Constant:\n@Time : 2023/6/8 14:03\n@Author : alexanderwu\n@File : document.py\n@Desc : Classes and Operations Related to Files in the File System.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/8 14:03\\n@Author : alexanderwu\\n@File : document.py\\n@Desc : Classes and Operations Related to Files in the File System.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:enum", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Enum']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:pandas as pd", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:langchain.document_loaders", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['TextLoader', 'UnstructuredPDFLoader', 'UnstructuredWordDocumentLoader']", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:langchain.text_splitter", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['CharacterTextSplitter']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:pydantic", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:tqdm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['tqdm']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:metagpt.logs", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['logger']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:metagpt.repo_parser", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['RepoParser']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "is", "source": "metagpt/_compat.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/_compat.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:platform", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:sys", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:warnings", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:n:a:m:e:p:l:a:t:f:o:r:m:.:s:y:s:t:e:m", "target": "{\"lineno\":5,\"end_lineno\":23,\"type_name\":\"ast.If\",\"tokens\":[\"n\",\"a\",\"m\",\"e\",\"p\",\"l\",\"a\",\"t\",\"f\",\"o\",\"r\",\"m\",\".\",\"s\",\"y\",\"s\",\"t\",\"e\",\"m\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:_process_context_mixin_extra", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:ast.Constant:\n@Time : 2024/1/11 17:25\n@Author : alexanderwu\n@File : context_mixin.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/11 17:25\\n@Author : alexanderwu\\n@File : context_mixin.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.context", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Context']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/const.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/const.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/const.py", "target": "metagpt/const.py:get_metagpt_package_root"}, {"predicate": "has_function", "source": "metagpt/const.py", "target": "metagpt/const.py:get_metagpt_root"}, {"predicate": "is", "source": "metagpt/const.py:get_metagpt_package_root", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/const.py:get_metagpt_package_root", "target": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_package_root\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:get_metagpt_root", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/const.py:get_metagpt_root", "target": "{\"lineno\":33,\"end_lineno\":43,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_root\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CONFIG_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CONFIG_ROOT", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONFIG_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:METAGPT_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:METAGPT_ROOT", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_WORKSPACE_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:EXAMPLE_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:EXAMPLE_PATH", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DATA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DATA_PATH", "target": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_DATA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_DATA_PATH", "target": "{\"lineno\":53,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_DATA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:RESEARCH_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:RESEARCH_PATH", "target": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TUTORIAL_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TUTORIAL_PATH", "target": "{\"lineno\":55,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"TUTORIAL_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:INVOICE_OCR_TABLE_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:INVOICE_OCR_TABLE_PATH", "target": "{\"lineno\":56,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_TABLE_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:UT_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:UT_PATH", "target": "{\"lineno\":58,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SWAGGER_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SWAGGER_PATH", "target": "{\"lineno\":59,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"SWAGGER_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:UT_PY_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:UT_PY_PATH", "target": "{\"lineno\":60,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PY_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:API_QUESTIONS_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:API_QUESTIONS_PATH", "target": "{\"lineno\":61,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"API_QUESTIONS_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SERDESER_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SERDESER_PATH", "target": "{\"lineno\":63,\"end_lineno\":63,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERDESER_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TMP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TMP", "target": "{\"lineno\":65,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"TMP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SOURCE_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SOURCE_ROOT", "target": "{\"lineno\":67,\"end_lineno\":67,\"type_name\":\"ast.Assign\",\"tokens\":[\"SOURCE_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PROMPT_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PROMPT_PATH", "target": "{\"lineno\":68,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SKILL_DIRECTORY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SKILL_DIRECTORY", "target": "{\"lineno\":69,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_DIRECTORY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TOOL_SCHEMA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TOOL_SCHEMA_PATH", "target": "{\"lineno\":70,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_SCHEMA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TOOL_LIBS_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TOOL_LIBS_PATH", "target": "{\"lineno\":71,\"end_lineno\":71,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_LIBS_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MEM_TTL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MEM_TTL", "target": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"MEM_TTL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_FROM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_FROM", "target": "{\"lineno\":77,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_FROM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO", "target": "{\"lineno\":78,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY", "target": "{\"lineno\":79,\"end_lineno\":79,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_CAUSE_BY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_META_ROLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_META_ROLE", "target": "{\"lineno\":80,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_META_ROLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL", "target": "{\"lineno\":81,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_ALL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE", "target": "{\"lineno\":82,\"end_lineno\":82,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_NONE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:REQUIREMENT_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:REQUIREMENT_FILENAME", "target": "{\"lineno\":84,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BUGFIX_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BUGFIX_FILENAME", "target": "{\"lineno\":85,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"BUGFIX_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME", "target": "{\"lineno\":86,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"PACKAGE_REQUIREMENTS_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DOCS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DOCS_FILE_REPO", "target": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"DOCS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PRDS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PRDS_FILE_REPO", "target": "{\"lineno\":89,\"end_lineno\":89,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRDS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO", "target": "{\"lineno\":90,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TASK_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TASK_FILE_REPO", "target": "{\"lineno\":91,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO", "target": "{\"lineno\":92,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO", "target": "{\"lineno\":93,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO", "target": "{\"lineno\":94,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_API_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SEQ_FLOW_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SEQ_FLOW_FILE_REPO", "target": "{\"lineno\":95,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEQ_FLOW_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO", "target": "{\"lineno\":96,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PRD_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PRD_PDF_FILE_REPO", "target": "{\"lineno\":97,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRD_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TASK_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TASK_PDF_FILE_REPO", "target": "{\"lineno\":98,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO", "target": "{\"lineno\":99,\"end_lineno\":99,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_CODES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_CODES_FILE_REPO", "target": "{\"lineno\":100,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_CODES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO", "target": "{\"lineno\":101,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_OUTPUTS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO", "target": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO", "target": "{\"lineno\":103,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:RESOURCES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:RESOURCES_FILE_REPO", "target": "{\"lineno\":104,\"end_lineno\":104,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESOURCES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SD_OUTPUT_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SD_OUTPUT_FILE_REPO", "target": "{\"lineno\":105,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"SD_OUTPUT_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:GRAPH_REPO_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:GRAPH_REPO_FILE_REPO", "target": "{\"lineno\":106,\"end_lineno\":106,\"type_name\":\"ast.Assign\",\"tokens\":[\"GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO", "target": "{\"lineno\":107,\"end_lineno\":107,\"type_name\":\"ast.Assign\",\"tokens\":[\"VISUAL_GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CLASS_VIEW_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CLASS_VIEW_FILE_REPO", "target": "{\"lineno\":108,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"CLASS_VIEW_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:YAPI_URL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:YAPI_URL", "target": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"YAPI_URL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_LANGUAGE", "target": "{\"lineno\":112,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_MAX_TOKENS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_MAX_TOKENS", "target": "{\"lineno\":113,\"end_lineno\":113,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_MAX_TOKENS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMMAND_TOKENS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMMAND_TOKENS", "target": "{\"lineno\":114,\"end_lineno\":114,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMAND_TOKENS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BRAIN_MEMORY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BRAIN_MEMORY", "target": "{\"lineno\":115,\"end_lineno\":115,\"type_name\":\"ast.Assign\",\"tokens\":[\"BRAIN_MEMORY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SKILL_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SKILL_PATH", "target": "{\"lineno\":116,\"end_lineno\":116,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SERPER_API_KEY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SERPER_API_KEY", "target": "{\"lineno\":117,\"end_lineno\":117,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERPER_API_KEY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_TOKEN_SIZE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_TOKEN_SIZE", "target": "{\"lineno\":118,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_TOKEN_SIZE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BASE64_FORMAT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BASE64_FORMAT", "target": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"BASE64_FORMAT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:REDIS_KEY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:REDIS_KEY", "target": "{\"lineno\":124,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"REDIS_KEY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:LLM_API_TIMEOUT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:LLM_API_TIMEOUT", "target": "{\"lineno\":125,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_API_TIMEOUT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:IGNORED_MESSAGE_ID", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:IGNORED_MESSAGE_ID", "target": "{\"lineno\":128,\"end_lineno\":128,\"type_name\":\"ast.Assign\",\"tokens\":[\"IGNORED_MESSAGE_ID\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:GENERALIZATION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:GENERALIZATION", "target": "{\"lineno\":131,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERALIZATION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMPOSITION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMPOSITION", "target": "{\"lineno\":132,\"end_lineno\":132,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPOSITION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:AGGREGATION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:AGGREGATION", "target": "{\"lineno\":133,\"end_lineno\":133,\"type_name\":\"ast.Assign\",\"tokens\":[\"AGGREGATION\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:ast.Constant:\n@Time : 2023/5/1 11:59\n@Author : alexanderwu\n@File : const.py\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\n common properties in the Message.\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/1 11:59\\n@Author : alexanderwu\\n@File : const.py\\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\\n common properties in the Message.\\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:os", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:module:loguru", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:metagpt", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__init_subclass__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__setattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:UserMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SystemMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:AIMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:_topological_sort", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Plan:_update_current_task", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:__hash__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:T", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:T", "target": "{\"lineno\":600,\"end_lineno\":600,\"type_name\":\"ast.Assign\",\"tokens\":[\"T\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:ast.Constant:\n@Time : 2023/5/8 22:12\n@Author : alexanderwu\n@File : schema.py\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\n@Modified By: mashenquan, 2023/11/22.\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\n between actions.\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 22:12\\n@Author : alexanderwu\\n@File : schema.py\\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\\n@Modified By: mashenquan, 2023/11/22.\\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\\n between actions.\\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:__future__", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['annotations']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:asyncio", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:json", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:os.path", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:uuid", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:abc", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['ABC']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:asyncio", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Queue', 'QueueEmpty', 'wait_for']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:json", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['JSONDecodeError']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Any', 'Dict', 'Iterable', 'List', 'Optional', 'Type', 'TypeVar', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pydantic", "target": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr', 'field_serializer', 'field_validator', 'model_serializer', 'model_validator']", "target": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.const", "target": "{\"lineno\":39,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['MESSAGE_ROUTE_CAUSE_BY', 'MESSAGE_ROUTE_FROM', 'MESSAGE_ROUTE_TO', 'MESSAGE_ROUTE_TO_ALL', 'PRDS_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":39,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.logs", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['logger']", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.repo_parser", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['DotClassInfo']", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.common", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['any_to_str', 'any_to_str_set', 'import_class']", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['handle_exception']", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.serialize", "target": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['actionoutout_schema_to_mapping', 'actionoutput_mapping_to_str', 'actionoutput_str_to_mapping']", "target": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_image.py", "target": "metagpt/learn/text_to_image.py:text_to_image"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py:text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:text_to_image", "target": "{\"lineno\":20,\"end_lineno\":44,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_image.py\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_image.py\\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['Config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['LLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.tools.metagpt_text_to_image", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['oas3_metagpt_text_to_image']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.tools.openai_text_to_image", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['oas3_openai_text_to_image']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.utils.s3", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['S3']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "is", "source": "metagpt/learn/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/learn/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:__all__", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_image", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['text_to_image']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_speech", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['text_to_speech']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.google_search", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['google_search']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"predicate": "is", "source": "metagpt/learn/google_search.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/google_search.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/google_search.py", "target": "metagpt/learn/google_search.py:google_search"}, {"predicate": "is", "source": "metagpt/learn/google_search.py:google_search", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:google_search", "target": "{\"lineno\":4,\"end_lineno\":12,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"google_search\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:names:['SearchEngine']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_speech.py", "target": "metagpt/learn/text_to_speech.py:text_to_speech"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py:text_to_speech", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:text_to_speech", "target": "{\"lineno\":17,\"end_lineno\":69,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_speech\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : text_to_speech.py\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : text_to_speech.py\\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:metagpt.config2", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['Config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.const", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.tools.azure_tts", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['oas3_azsure_tts']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.tools.iflytek_tts", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['oas3_iflytek_tts']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.utils.s3", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['S3']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_embedding.py", "target": "metagpt/learn/text_to_embedding.py:text_to_embedding"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py:text_to_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:text_to_embedding", "target": "{\"lineno\":14,\"end_lineno\":24,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_embedding.py\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_embedding.py\\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:metagpt.config2", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:names:['Config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:module:metagpt.tools.openai_text_to_embedding", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:names:['oas3_openai_text_to_embedding']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : skill_loader.py\n@Desc : Skill YAML Configuration Loader.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : skill_loader.py\\n@Desc : Skill YAML Configuration Loader.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:aiofiles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:yaml", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:metagpt.context", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Context']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:concurrent", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['futures']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['Literal', 'Optional', 'overload']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['BaseModel', 'ConfigDict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:__name__:__main__", "target": "{\"lineno\":91,\"end_lineno\":94,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc", "target": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"oas_http_svc\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : metagpt_oas3_api_svc.py\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\n\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : metagpt_oas3_api_svc.py\\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\\n\\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:module:pathlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:names:['Path']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:connexion", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:__name__:__main__", "target": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:ast.Constant:\n@Time : 2023/5/22 21:33\n@Author : alexanderwu\n@File : search_engine_meilisearch.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/22 21:33\\n@Author : alexanderwu\\n@File : search_engine_meilisearch.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['List']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:meilisearch", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"meilisearch\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:meilisearch.index", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['Index']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['handle_exception']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding", "target": "{\"lineno\":75,\"end_lineno\":85,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : openai_text_to_embedding.py\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : openai_text_to_embedding.py\\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:warnings", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['Any', 'Dict', 'Optional', 'Tuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:aiohttp", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:__name__:__main__", "target": "{\"lineno\":115,\"end_lineno\":118,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock", "target": "{\"lineno\":97,\"end_lineno\":101,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_install_lock\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers", "target": "{\"lineno\":104,\"end_lineno\":127,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_install_browsers\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_log_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_log_stream", "target": "{\"lineno\":130,\"end_lineno\":135,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_log_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_lock", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_lock", "target": "{\"lineno\":138,\"end_lineno\":138,\"type_name\":\"ast.AnnAssign\",\"tokens\":[\"_install_lock\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_cache", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_cache", "target": "{\"lineno\":139,\"end_lineno\":139,\"type_name\":\"ast.Assign\",\"tokens\":[\"_install_cache\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:__future__", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['annotations']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:asyncio", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:sys", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['Literal', 'Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:playwright.async_api", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['async_playwright']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"PrivateAttr\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['BaseModel', 'Field', 'PrivateAttr']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"PrivateAttr\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['WebPage']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:_process_extra", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:ast.Constant:\n@Time : 2023/5/6 20:15\n@Author : alexanderwu\n@File : search_engine.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/6 20:15\\n@Author : alexanderwu\\n@File : search_engine.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:importlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['Callable', 'Coroutine', 'Literal', 'Optional', 'Union', 'overload']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['BaseModel', 'ConfigDict', 'model_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:semantic_kernel.skill_definition", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['sk_function']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:metagpt.configs.search_config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['SearchConfig']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:metagpt.tools", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['SearchEngineType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:_process_extra", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:importlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['Any', 'Callable', 'Coroutine', 'Optional', 'Union', 'overload']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['BaseModel', 'ConfigDict', 'model_validator']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.configs.browser_config", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['BrowserConfig']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.tools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['WebBrowserEngineType']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['WebPage']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:json", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:warnings", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['Any', 'Dict', 'Optional', 'Tuple']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:__name__:__main__", "target": "{\"lineno\":118,\"end_lineno\":121,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:ast.Constant:\n@Time : 2023/9/26 14:27\n@Author : zhanglei\n@File : moderation.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/26 14:27\\n@Author : zhanglei\\n@File : moderation.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:names:['Union']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:names:['BaseLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:register_tool", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:register_tool", "target": "{\"lineno\":105,\"end_lineno\":126,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_tool\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:make_schema", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:make_schema", "target": "{\"lineno\":129,\"end_lineno\":142,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_schema\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:validate_tool_names", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:validate_tool_names", "target": "{\"lineno\":145,\"end_lineno\":155,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_tool_names\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/tool_registry.py:TOOL_REGISTRY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:TOOL_REGISTRY", "target": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_REGISTRY\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:ast.Constant:\n@Time : 2023/01/12 17:07\n@Author : garylin2099\n@File : tool_registry.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/01/12 17:07\\n@Author : garylin2099\\n@File : tool_registry.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:inspect", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:os", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:module:collections", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:names:['defaultdict']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:yaml", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:module:pydantic", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:names:['BaseModel', 'field_validator']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TOOL_SCHEMA_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:names:['TOOL_SCHEMA_PATH']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TOOL_SCHEMA_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:module:metagpt.tools.tool_convert", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_convert\",\"names\":[\"convert_code_to_tool_schema\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:names:['convert_code_to_tool_schema']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_convert\",\"names\":[\"convert_code_to_tool_schema\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:module:metagpt.tools.tool_data_type", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_data_type\",\"names\":[\"Tool\",\"ToolSchema\",\"ToolTypeDef\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:names:['Tool', 'ToolSchema', 'ToolTypeDef']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_data_type\",\"names\":[\"Tool\",\"ToolSchema\",\"ToolTypeDef\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:module:metagpt.tools.tool_type", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_registry.py:names:['ToolType']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/__init__.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/__init__.py", "target": "metagpt/tools/__init__.py:SearchEngineType"}, {"predicate": "has_class", "source": "metagpt/tools/__init__.py", "target": "metagpt/tools/__init__.py:WebBrowserEngineType"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "{\"lineno\":16,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngineType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "{\"lineno\":24,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngineType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:_", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:_", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"_\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:35\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:35\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:module:enum", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:names:['Enum']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:module:metagpt.tools", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"libs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:names:['libs']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"libs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:module:metagpt.tools.tool_registry", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"TOOL_REGISTRY\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:names:['TOOL_REGISTRY']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"TOOL_REGISTRY\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:safe_google_results", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:safe_google_results", "target": "{\"lineno\":112,\"end_lineno\":125,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"safe_google_results\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:warnings", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:concurrent", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['futures']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:urllib.parse", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['urlparse']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:httplib2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"httplib2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['BaseModel', 'ConfigDict', 'model_validator']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:__name__:__main__", "target": "{\"lineno\":128,\"end_lineno\":131,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/tool_type.py:ToolType:__missing__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_type.py:module:enum", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_type.py:names:['Enum']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_type.py:module:metagpt.prompts.tool_types", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tool_types\",\"names\":[\"DATA_PREPROCESS_PROMPT\",\"FEATURE_ENGINEERING_PROMPT\",\"IMAGE2WEBPAGE_PROMPT\",\"MODEL_EVALUATE_PROMPT\",\"MODEL_TRAIN_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_type.py:names:['DATA_PREPROCESS_PROMPT', 'FEATURE_ENGINEERING_PROMPT', 'IMAGE2WEBPAGE_PROMPT', 'MODEL_EVALUATE_PROMPT', 'MODEL_TRAIN_PROMPT']", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tool_types\",\"names\":[\"DATA_PREPROCESS_PROMPT\",\"FEATURE_ENGINEERING_PROMPT\",\"IMAGE2WEBPAGE_PROMPT\",\"MODEL_EVALUATE_PROMPT\",\"MODEL_TRAIN_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_type.py:module:metagpt.tools.tool_data_type", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_data_type\",\"names\":[\"ToolTypeDef\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_type.py:names:['ToolTypeDef']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_data_type\",\"names\":[\"ToolTypeDef\"]}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func", "target": "{\"lineno\":110,\"end_lineno\":134,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_gen_get_driver_func\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types", "target": "{\"lineno\":91,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"_webdriver_manager_types\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:__future__", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['annotations']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:asyncio", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:importlib", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:concurrent", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['futures']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:copy", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['deepcopy']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['Callable', 'Literal', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.common.by", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['By']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['expected_conditions as EC']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support.wait", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WebDriverWait']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.download_manager", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMDownloadManager']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.http", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMHttpClient']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WebPage']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/openapi_v3_hello.py", "target": "metagpt/tools/openapi_v3_hello.py:post_greeting"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py:post_greeting", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:post_greeting", "target": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"post_greeting\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : mashenquan\n@File : openapi_v3_hello.py\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\n\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : mashenquan\\n@File : openapi_v3_hello.py\\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\\n\\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:module:pathlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:names:['Path']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:connexion", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:__name__:__main__", "target": "{\"lineno\":25,\"end_lineno\":29,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:oas3_azsure_tts", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:oas3_azsure_tts", "target": "{\"lineno\":60,\"end_lineno\":100,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_azsure_tts\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:ast.Constant:\n@Time : 2023/6/9 22:22\n@Author : Leo Xiao\n@File : azure_tts.py\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/9 22:22\\n@Author : Leo Xiao\\n@File : azure_tts.py\\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:uuid", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['uuid4']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:aiofiles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:azure.cognitiveservices.speech", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['AudioConfig', 'SpeechConfig', 'SpeechSynthesizer']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/tool_convert.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/tool_convert.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/tool_convert.py", "target": "metagpt/tools/tool_convert.py:convert_code_to_tool_schema"}, {"predicate": "has_function", "source": "metagpt/tools/tool_convert.py", "target": "metagpt/tools/tool_convert.py:function_docstring_to_schema"}, {"predicate": "has_function", "source": "metagpt/tools/tool_convert.py", "target": "metagpt/tools/tool_convert.py:docstring_to_schema"}, {"predicate": "has_function", "source": "metagpt/tools/tool_convert.py", "target": "metagpt/tools/tool_convert.py:get_class_method_docstring"}, {"predicate": "is", "source": "metagpt/tools/tool_convert.py:convert_code_to_tool_schema", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_convert.py:convert_code_to_tool_schema", "target": "{\"lineno\":6,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"convert_code_to_tool_schema\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/tool_convert.py:function_docstring_to_schema", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_convert.py:function_docstring_to_schema", "target": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"function_docstring_to_schema\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/tool_convert.py:docstring_to_schema", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_convert.py:docstring_to_schema", "target": "{\"lineno\":31,\"end_lineno\":73,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"docstring_to_schema\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/tool_convert.py:get_class_method_docstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_convert.py:get_class_method_docstring", "target": "{\"lineno\":76,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_method_docstring\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_convert.py:inspect", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_convert.py:module:metagpt.utils.parse_docstring", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_docstring\",\"names\":[\"GoogleDocstringParser\",\"remove_spaces\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_convert.py:names:['GoogleDocstringParser', 'remove_spaces']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_docstring\",\"names\":[\"GoogleDocstringParser\",\"remove_spaces\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image", "target": "{\"lineno\":57,\"end_lineno\":67,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : openai_text_to_image.py\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : openai_text_to_image.py\\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:requests", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:ICL_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:ICL_SAMPLE", "target": "{\"lineno\":11,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"ICL_SAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX", "target": "{\"lineno\":67,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX", "target": "{\"lineno\":72,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"YFT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:OCR_API_DOC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:OCR_API_DOC", "target": "{\"lineno\":78,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"OCR_API_DOC\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:json", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.config2", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['config']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['OpenAILLM as GPTAPI']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.utils.common", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['awrite']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"predicate": "is", "source": "metagpt/tools/translator.py:prompt", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:prompt", "target": "{\"lineno\":9,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"prompt\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:ast.Constant:\n@Time : 2023/4/29 15:36\n@Author : alexanderwu\n@File : translator.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:36\\n@Author : alexanderwu\\n@File : translator.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image", "target": "{\"lineno\":85,\"end_lineno\":95,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_metagpt_text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : metagpt_text_to_image.py\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : metagpt_text_to_image.py\\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['Dict', 'List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['BaseModel']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts", "target": "{\"lineno\":117,\"end_lineno\":143,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_iflytek_tts\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_IFLYTEK_VOICE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : iflytek_tts.py\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : iflytek_tts.py\\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:hashlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:hmac", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:uuid", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:datetime", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['datetime']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:enum", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Enum']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:pathlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Path']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:time", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['mktime']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:typing", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Optional']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:urllib.parse", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['urlencode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:wsgiref.handlers", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['format_date_time']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:aiofiles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:websockets as websockets", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"websockets as websockets\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:pydantic", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['BaseModel']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : alexanderwu\n@File : prompt_writer.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : alexanderwu\\n@File : prompt_writer.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:names:['Union']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_data_type.py:module:pydantic", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/tool_data_type.py:names:['BaseModel']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:PolynomialExpansion:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCount:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TargetMeanEncoder:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:KFoldTargetMeanEncoder:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:CatCross:_cross_two", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GroupStat:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:SplitBins:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:ExtractTimeComps:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:GeneralSelection:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TreeBasedSelection:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:VarianceBasedSelection:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/feature_engineering.py:TOOL_TYPE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:TOOL_TYPE", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_TYPE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:__future__", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['annotations']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:itertools", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"itertools\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:numpy as np", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"numpy as np\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:pandas as pd", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:joblib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"joblib\",\"names\":[\"Parallel\",\"delayed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['Parallel', 'delayed']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"joblib\",\"names\":[\"Parallel\",\"delayed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:pandas.core.dtypes.common", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pandas.core.dtypes.common\",\"names\":[\"is_object_dtype\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['is_object_dtype']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pandas.core.dtypes.common\",\"names\":[\"is_object_dtype\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:sklearn.feature_selection", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.feature_selection\",\"names\":[\"VarianceThreshold\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['VarianceThreshold']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.feature_selection\",\"names\":[\"VarianceThreshold\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:sklearn.model_selection", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.model_selection\",\"names\":[\"KFold\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['KFold']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.model_selection\",\"names\":[\"KFold\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:sklearn.preprocessing", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.preprocessing\",\"names\":[\"KBinsDiscretizer\",\"PolynomialFeatures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['KBinsDiscretizer', 'PolynomialFeatures']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.preprocessing\",\"names\":[\"KBinsDiscretizer\",\"PolynomialFeatures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:metagpt.tools.libs.data_preprocess", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.libs.data_preprocess\",\"names\":[\"MLProcess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['MLProcess']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.libs.data_preprocess\",\"names\":[\"MLProcess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:metagpt.tools.tool_registry", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['register_tool']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:module:metagpt.tools.tool_type", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/feature_engineering.py:names:['ToolType']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:DataPreprocessTool:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:FillMissingValue:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MinMaxScale:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:StandardScale:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:MaxAbsScale:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:RobustScale:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OrdinalEncode:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:OneHotEncode:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:LabelEncode:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:get_column_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:get_column_info", "target": "{\"lineno\":219,\"end_lineno\":249,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_column_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/libs/data_preprocess.py:TOOL_TYPE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:TOOL_TYPE", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_TYPE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:json", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:numpy as np", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"numpy as np\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:pandas as pd", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:module:sklearn.impute", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.impute\",\"names\":[\"SimpleImputer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:names:['SimpleImputer']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.impute\",\"names\":[\"SimpleImputer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:module:sklearn.preprocessing", "target": "{\"lineno\":8,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.preprocessing\",\"names\":[\"LabelEncoder\",\"MaxAbsScaler\",\"MinMaxScaler\",\"OneHotEncoder\",\"OrdinalEncoder\",\"RobustScaler\",\"StandardScaler\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:names:['LabelEncoder', 'MaxAbsScaler', 'MinMaxScaler', 'OneHotEncoder', 'OrdinalEncoder', 'RobustScaler', 'StandardScaler']", "target": "{\"lineno\":8,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"sklearn.preprocessing\",\"names\":[\"LabelEncoder\",\"MaxAbsScaler\",\"MinMaxScaler\",\"OneHotEncoder\",\"OrdinalEncoder\",\"RobustScaler\",\"StandardScaler\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:module:metagpt.tools.tool_registry", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:names:['register_tool']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:module:metagpt.tools.tool_type", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/data_preprocess.py:names:['ToolType']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "is", "source": "metagpt/tools/libs/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/libs/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/tools/libs/__init__.py:_", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/__init__.py:_", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"_\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/__init__.py:module:metagpt.tools.libs", "target": "{\"lineno\":7,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.libs\",\"names\":[\"data_preprocess\",\"feature_engineering\",\"sd_engine\",\"gpt_v_generator\",\"web_scraping\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/__init__.py:names:['data_preprocess', 'feature_engineering', 'sd_engine', 'gpt_v_generator', 'web_scraping']", "target": "{\"lineno\":7,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.libs\",\"names\":[\"data_preprocess\",\"feature_engineering\",\"sd_engine\",\"gpt_v_generator\",\"web_scraping\"]}}"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py:GPTvGenerator:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py:ANALYZE_LAYOUT_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:ANALYZE_LAYOUT_PROMPT", "target": "{\"lineno\":16,\"end_lineno\":19,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANALYZE_LAYOUT_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/libs/gpt_v_generator.py:GENERATE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:GENERATE_PROMPT", "target": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERATE_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:ast.Constant:\n@Time : 2024/01/12\n@Author : mannaandpoem\n@File : gpt_v_generator.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/01/12\\n@Author : mannaandpoem\\n@File : gpt_v_generator.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:module:metagpt.const", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:names:['DEFAULT_WORKSPACE_ROOT']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:module:metagpt.tools.tool_registry", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:names:['register_tool']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:module:metagpt.tools.tool_type", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:names:['ToolType']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:module:metagpt.utils.common", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"encode_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/gpt_v_generator.py:names:['encode_image']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"encode_image\"]}}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:SDEngine:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:decode_base64_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:decode_base64_to_image", "target": "{\"lineno\":172,\"end_lineno\":177,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_base64_to_image\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:batch_decode_base64_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:batch_decode_base64_to_image", "target": "{\"lineno\":180,\"end_lineno\":183,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"batch_decode_base64_to_image\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:payload", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:payload", "target": "{\"lineno\":23,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"payload\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/libs/sd_engine.py:default_negative_prompt", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:default_negative_prompt", "target": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"default_negative_prompt\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:module:__future__", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:names:['annotations']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:base64", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:hashlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:io", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"io\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:json", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:module:os.path", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"os.path\",\"names\":[\"join\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:names:['join']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"os.path\",\"names\":[\"join\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:module:aiohttp", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:names:['ClientSession']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:module:PIL", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\",\"PngImagePlugin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:names:['Image', 'PngImagePlugin']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\",\"PngImagePlugin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SD_OUTPUT_FILE_REPO\",\"SOURCE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:names:['SD_OUTPUT_FILE_REPO', 'SOURCE_ROOT']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SD_OUTPUT_FILE_REPO\",\"SOURCE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:module:metagpt.tools.tool_registry", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:names:['register_tool']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:module:metagpt.tools.tool_type", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/sd_engine.py:names:['ToolType']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "is", "source": "metagpt/tools/libs/web_scraping.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/libs/web_scraping.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/libs/web_scraping.py", "target": "metagpt/tools/libs/web_scraping.py:scrape_web_playwright"}, {"predicate": "is", "source": "metagpt/tools/libs/web_scraping.py:scrape_web_playwright", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/web_scraping.py:scrape_web_playwright", "target": "{\"lineno\":7,\"end_lineno\":21,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"scrape_web_playwright\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/web_scraping.py:module:metagpt.tools.tool_registry", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/web_scraping.py:names:['register_tool']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"register_tool\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/web_scraping.py:module:metagpt.tools.tool_type", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/web_scraping.py:names:['ToolType']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/web_scraping.py:module:metagpt.tools.web_browser_engine_playwright", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine_playwright\",\"names\":[\"PlaywrightWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/libs/web_scraping.py:names:['PlaywrightWrapper']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine_playwright\",\"names\":[\"PlaywrightWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:ast.Constant:\n@Time : 2023/5/20 12:15\n@Author : alexanderwu\n@File : memory.py\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 12:15\\n@Author : alexanderwu\\n@File : memory.py\\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:collections", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['defaultdict']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['DefaultDict', 'Iterable', 'Set']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['BaseModel', 'Field', 'SerializeAsAny']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['IGNORED_MESSAGE_ID']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.utils.common", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['any_to_str', 'any_to_str_set']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : brain_memory.py\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : brain_memory.py\\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.config2", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['config']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['DEFAULT_MAX_TOKENS', 'DEFAULT_TOKEN_SIZE']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.provider", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['MetaGPTLLM']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Message', 'SimpleMessage']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.utils.redis", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Redis']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:ast.Constant:\n@Desc : the implement of memory storage\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of memory storage\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:pathlib", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Path']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain.embeddings", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain.vectorstores.faiss", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['FAISS']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain_core.embeddings", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Embeddings']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['DATA_PATH', 'MEM_TTL']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.document_store.faiss_store", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['FaissStore']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Message']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.utils.serialize", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['deserialize_message', 'serialize_message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"predicate": "is", "source": "metagpt/memory/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/memory/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:__all__", "target": "{\"lineno\":14,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:module:metagpt.memory.memory", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:names:['Memory']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:ast.Constant:\n@Desc : the implement of Long-term memory\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of Long-term memory\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Optional']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['ConfigDict', 'Field']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.memory", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Memory']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.memory.memory_storage", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['MemoryStorage']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.roles.role", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['RoleContext']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:dataclasses", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['dataclass']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['List']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:qdrant_client", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['QdrantClient']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:qdrant_client.models", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['Filter', 'PointStruct', 'VectorParams']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['BaseStore']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:ast.Constant:\n@Time : 2023/5/29 14:46\n@Author : alexanderwu\n@File : chromadb_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/29 14:46\\n@Author : alexanderwu\\n@File : chromadb_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:chromadb", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"chromadb\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:ast.Constant:\n@Time : 2023/8/9 15:42\n@Author : unkn-wn (Leon Yee)\n@File : lancedb_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/9 15:42\\n@Author : unkn-wn (Leon Yee)\\n@File : lancedb_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:shutil", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:lancedb", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"lancedb\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:__all__", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:module:metagpt.document_store.faiss_store", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:names:['FaissStore']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:_write", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : faiss_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : faiss_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain.vectorstores", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['FAISS']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain_core.embeddings", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Embeddings']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.document", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['IndexableDocument']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['LocalStore']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.utils.embedding", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['get_embedding']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_write", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:ast.Constant:\n@Time : 2023/5/28 00:01\n@Author : alexanderwu\n@File : base_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/28 00:01\\n@Author : alexanderwu\\n@File : base_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:ast.Constant:\n@Time : 2023/7/21 11:15\n@Author : Leo Xiao\n@File : anthropic_api.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/21 11:15\\n@Author : Leo Xiao\\n@File : anthropic_api.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:anthropic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"anthropic\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:module:anthropic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:names:['Anthropic', 'AsyncAnthropic']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:names:['LLMConfig']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['Optional', 'Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:google.generativeai as genai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"google.generativeai as genai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.ai", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['generativelanguage as glm']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.generative_models", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['GenerativeModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['content_types']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types.generation_types", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['AsyncGenerateContentResponse', 'GenerateContentResponse', 'GenerationConfig']", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:tenacity", "target": "{\"lineno\":16,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":16,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.logs", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['BaseLLM']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['register_provider']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['log_and_reraise']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n", "target": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:openai", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['AsyncAzureOpenAI']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:openai._base_client", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['AsyncHttpxClientWrapper']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['LLMType']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['register_provider']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['OpenAILLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_GRADE_TOKEN_COSTS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:re", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['APIConnectionError', 'AsyncStream']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai.types", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CompletionUsage']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai.types.chat", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['ChatCompletionChunk']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['register_provider']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['OpenAILLM', 'log_and_reraise']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CostManager', 'Costs']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:requests", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['ConnectionError']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:tenacity", "target": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.const", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['LLM_API_TIMEOUT']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.logs", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['BaseLLM']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.general_api_requestor", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['GeneralAPIRequestor']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['register_provider']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['log_and_reraise']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['TokenCostManager']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"predicate": "is", "source": "metagpt/provider/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/provider/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:__all__", "target": "{\"lineno\":20,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:ast.Constant:\n@Time : 2023/5/5 22:59\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 22:59\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.fireworks_api", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['FireworksLLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.google_gemini_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['GeminiLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.ollama_api", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OllamaLLM']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.open_llm_api", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OpenLLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OpenAILLM']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.zhipuai_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['ZhiPuAILLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.azure_openai_api", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['AzureOpenAILLM']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.metagpt_api", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['MetaGPTLLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.human_provider", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['HumanProvider']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.spark_api", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['SparkLLM']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_init_model", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_init_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_process_message", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:log_and_reraise", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:log_and_reraise", "target": "{\"lineno\":42,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_and_reraise\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n", "target": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['AsyncIterator', 'Optional', 'Union']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['APIConnectionError', 'AsyncOpenAI', 'AsyncStream']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai._base_client", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['AsyncHttpxClientWrapper']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai.types", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CompletionUsage']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai.types.chat", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['ChatCompletion', 'ChatCompletionChunk']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:tenacity", "target": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.logs", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['BaseLLM']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.constant", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['GENERAL_FUNCTION_SCHEMA']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['register_provider']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.schema", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['Message']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.common", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\",\"decode_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CodeParser', 'decode_image']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\",\"decode_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CostManager', 'Costs']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['handle_exception']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":35,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['count_message_tokens', 'count_string_tokens', 'get_max_completion_tokens']", "target": "{\"lineno\":35,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:ast.Constant:\n@File : spark_api.py\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : spark_api.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:_thread as thread", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"_thread as thread\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:base64", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:datetime", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:hashlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:hmac", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:ssl", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"ssl\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:time", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['mktime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:urllib.parse", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['urlencode', 'urlparse']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:wsgiref.handlers", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['format_date_time']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:websocket", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"websocket\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['register_provider']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:parse_stream_helper", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:parse_stream_helper", "target": "{\"lineno\":15,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:parse_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:parse_stream", "target": "{\"lineno\":31,\"end_lineno\":35,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['AsyncGenerator', 'Generator', 'Iterator', 'Tuple', 'Union']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:aiohttp", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:requests", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:metagpt.provider.general_api_base", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['APIRequestor']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_user_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_user_msg_with_imgs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_system_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_update_costs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:ast.Constant:\n@Time : 2023/5/5 23:04\n@Author : alexanderwu\n@File : base_llm.py\n@Desc : mashenquan, 2023/8/22. + try catch\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:04\\n@Author : alexanderwu\\n@File : base_llm.py\\n@Desc : mashenquan, 2023/8/22. + try catch\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:abc", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['Dict', 'Optional', 'Union']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:openai", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['AsyncOpenAI']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:openai.types", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['CompletionUsage']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['LLMConfig']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['CostManager']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['handle_exception']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/provider/constant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/constant.py", "target": "python"}, {"predicate": "is", "source": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA", "target": "{\"lineno\":3,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_FUNCTION_SCHEMA\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_TOOL_CHOICE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:enum", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['Enum']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:openai", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:zhipuai", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:requests", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['ConnectionError']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:tenacity", "target": "{\"lineno\":11,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":11,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['register_provider']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['log_and_reraise']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.zhipuai.zhipu_model_api", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['ZhiPuModelAPI']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['CostManager']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_console_log_level", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_console_log_level", "target": "{\"lineno\":78,\"end_lineno\":82,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_console_log_level\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_debug", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_debug", "target": "{\"lineno\":85,\"end_lineno\":89,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_debug\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_info", "target": "{\"lineno\":92,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_warn", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_warn", "target": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_warn\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:logfmt", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logfmt", "target": "{\"lineno\":105,\"end_lineno\":120,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"logfmt\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_build_api_url", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_build_api_url", "target": "{\"lineno\":153,\"end_lineno\":159,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_build_api_url\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_requests_proxies_arg", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_requests_proxies_arg", "target": "{\"lineno\":162,\"end_lineno\":173,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_requests_proxies_arg\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg", "target": "{\"lineno\":176,\"end_lineno\":187,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_aiohttp_proxies_arg\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_make_session", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_make_session", "target": "{\"lineno\":190,\"end_lineno\":196,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_make_session\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream_helper", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream_helper", "target": "{\"lineno\":199,\"end_lineno\":210,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream", "target": "{\"lineno\":213,\"end_lineno\":217,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream_async", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream_async", "target": "{\"lineno\":220,\"end_lineno\":224,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"parse_stream_async\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:aiohttp_session", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:aiohttp_session", "target": "{\"lineno\":620,\"end_lineno\":622,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aiohttp_session\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:logger", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logger", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:TIMEOUT_SECS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:TIMEOUT_SECS", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TIMEOUT_SECS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS", "target": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_SESSION_LIFETIME_SECS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_CONNECTION_RETRIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_thread_context", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_thread_context", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"_thread_context\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:LLM_LOG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:LLM_LOG", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_LOG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:api_key_to_header", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:api_key_to_header", "target": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"api_key_to_header\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:os", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:platform", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:sys", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:threading", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:time", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:contextlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['asynccontextmanager']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:enum", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['Enum']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['AsyncGenerator', 'AsyncIterator', 'Dict', 'Iterator', 'Optional', 'Tuple', 'Union', 'overload']", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:urllib.parse", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['urlencode', 'urlsplit', 'urlunsplit']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:aiohttp", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:requests", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:sys.version_info:[3, 8]", "target": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.If\",\"tokens\":[\"sys.version_info\",[3,8]],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logging", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.Import\",\"tokens\":[\"logging\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:openai", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:openai", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['version']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:register_provider", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:register_provider", "target": "{\"lineno\":24,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_provider\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:create_llm_instance", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:create_llm_instance", "target": "{\"lineno\":34,\"end_lineno\":36,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"create_llm_instance\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_REGISTRY\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:ast.Constant:\n@Time : 2023/12/19 17:26\n@Author : alexanderwu\n@File : llm_provider_registry.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 17:26\\n@Author : alexanderwu\\n@File : llm_provider_registry.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:names:['BaseLLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM:_calc_usage", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : metagpt_api.py\n@Desc : MetaGPT LLM provider.\n", "target": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : metagpt_api.py\\n@Desc : MetaGPT LLM provider.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:openai.types", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['CompletionUsage']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['LLMType']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.provider", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['OpenAILLM']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['register_provider']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:openai.types", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['CompletionUsage']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.logs", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['logger']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['register_provider']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['OpenAILLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['Costs', 'TokenCostManager']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['count_message_tokens', 'count_string_tokens']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:ast.Constant:\nFilename: MetaGPT/metagpt/provider/human_provider.py\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\nAuthor: garylin2099\n", "target": "{\"lineno\":1,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nFilename: MetaGPT/metagpt/provider/human_provider.py\\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\\nAuthor: garylin2099\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['LLMConfig']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.logs", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['logger']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['BaseLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:names:['Any', 'Iterator']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZhipuAI']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.core._http_client", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZHIPUAI_DEFAULT_TIMEOUT']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.general_api_requestor", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['GeneralAPIRequestor']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.zhipuai.async_sse_client", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['AsyncSSEClient']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:metagpt.utils.repair_llm_raw_output", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['RepairType', 'extract_content_from_output', 'repair_llm_raw_output', 'retry_parse_json_text']", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess", "target": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"llm_output_postprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:module:metagpt.provider.postprocess.base_postprocess_plugin", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['BasePostProcessPlugin']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"predicate": "is", "source": "metagpt/management/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/management/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/management/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:58\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:58\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:Skill", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:Skill", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Assign\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:ast.Constant:\n@Time : 2023/6/5 01:44\n@Author : alexanderwu\n@File : skill_manager.py\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/5 01:44\\n@Author : alexanderwu\\n@File : skill_manager.py\\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['Action']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.const", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['PROMPT_PATH']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.document_store.chromadb_store", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['ChromaStore']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:__name__:__main__", "target": "{\"lineno\":77,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_parse_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_write_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_is_pass", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_coding_context", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_coding_doc", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_code_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:IS_PASS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:IS_PASS_PROMPT", "target": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_PASS_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\n distribution feature for message filtering.\n 2. Consolidate message reception and processing logic within `_observe`.\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\n 4. Supplemented the external transmission of internal messages.\n@Modified By: mashenquan, 2023-11-27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n", "target": "{\"lineno\":3,\"end_lineno\":18,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\\n distribution feature for message filtering.\\n 2. Consolidate message reception and processing logic within `_observe`.\\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\\n 4. Supplemented the external transmission of internal messages.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:__future__", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['annotations']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:json", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:collections", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['defaultdict']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:pathlib", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Path']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:typing", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Set']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Action', 'WriteCode', 'WriteCodeReview', 'WriteTasks']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.fix_bug", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['FixBug']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['REFINED_TASK_LIST', 'TASK_LIST']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.summarize_code", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['SummarizeCode']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.write_code_plan_and_change_an", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['WriteCodePlanAndChange']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.const", "target": "{\"lineno\":32,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CODE_PLAN_AND_CHANGE_FILE_REPO', 'REQUIREMENT_FILENAME', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":32,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.logs", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['logger']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.roles", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Role']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.schema", "target": "{\"lineno\":40,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'Document', 'Documents', 'Message']", "target": "{\"lineno\":40,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['any_to_name', 'any_to_str', 'any_to_str_set']", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_observe", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : qa_engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\n@Modified By: mashenquan, 2023-11-27.\n 1. Following the think-act principle, solidify the task parameters when creating the\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\n to using file references.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : qa_engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\\n to using file references.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.actions", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['DebugError', 'RunCode', 'WriteTest']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.actions.summarize_code", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['SummarizeCode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.const", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['MESSAGE_ROUTE_TO_NONE']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.roles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['Role']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.schema", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['Document', 'Message', 'RunCodeContext', 'TestingContext']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['any_to_str_set', 'parse_recipient']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:_react", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : teacher.py\n@Desc : Used by Agent Store\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : teacher.py\\n@Desc : Used by Agent Store\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['UserRequirement']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.actions.write_teaching_plan", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['TeachingPlanBlock', 'WriteTeachingPlanPart']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.roles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['Role']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['any_to_str', 'awrite']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:_observe", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : product_manager.py\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : product_manager.py\\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['UserRequirement', 'WritePRD']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.actions.prepare_documents", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['PrepareDocuments']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.roles.role", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['Role']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.utils.common", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['any_to_name']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Field', 'model_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['SearchAndSummarize', 'UserRequirement']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['BaseStore']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.roles", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Role']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['SearchEngine']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:_act_sp", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:ast.Constant:\n@Time : 2023/5/23 17:25\n@Author : alexanderwu\n@File : searcher.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:25\\n@Author : alexanderwu\\n@File : searcher.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Optional']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Field', 'model_validator']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['SearchAndSummarize']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions.action_node", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['ActionNode']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions.action_output", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['ActionOutput']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.logs", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['logger']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.roles", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Role']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['SearchEngine']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:_plan", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:ast.Constant:\n@Time : 2023/8/7\n@Author : mashenquan\n@File : assistant.py\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\n make these symbols configurable and standardized, making the process of building flows more convenient.\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\n configuration file.\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\n indicates that further reasoning cannot continue.\n\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/7\\n@Author : mashenquan\\n@File : assistant.py\\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\\n make these symbols configurable and standardized, making the process of building flows more convenient.\\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\\n configuration file.\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\\n indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:enum", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Enum']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:pathlib", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Path']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:typing", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Optional']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:pydantic", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Field']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.actions.skill_action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['ArgumentsParingAction', 'SkillAction']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.actions.talk_action", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['TalkAction']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.learn.skill_loader", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['SkillsDeclaration']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.memory.brain_memory", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['BrainMemory']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.roles", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Role']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.schema", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Message']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/roles/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/roles/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:__all__", "target": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.role", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Role']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.architect", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Architect']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.project_manager", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['ProjectManager']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.product_manager", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['ProductManager']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.engineer", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Engineer']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.qa_engineer", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['QaEngineer']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.searcher", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Searcher']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.sales", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Sales']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.customer_service", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['CustomerService']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_process_role_extra", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_reset", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_setting", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_check_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_init_action", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_set_react_mode", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_watch", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_set_state", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_get_prefix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_observe", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_react", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act_by_order", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_plan_and_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act_on_task", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:PREFIX_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:PREFIX_TEMPLATE", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONSTRAINT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:STATE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:STATE_TEMPLATE", "target": "{\"lineno\":50,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"STATE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:ROLE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ROLE_TEMPLATE", "target": "{\"lineno\":67,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"ROLE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ast.Constant:\n@Time : 2023/5/11 14:42\n@Author : alexanderwu\n@File : role.py\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\n consolidated within the `_observe` function.\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\n they've subscribed to through the `subscribed_tags` property.\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n", "target": "{\"lineno\":3,\"end_lineno\":21,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:42\\n@Author : alexanderwu\\n@File : role.py\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\\n consolidated within the `_observe` function.\\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\\n they've subscribed to through the `subscribed_tags` property.\\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:__future__", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['annotations']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:enum", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Enum']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"TYPE_CHECKING\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['TYPE_CHECKING', 'Iterable', 'Optional', 'Set', 'Type', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"TYPE_CHECKING\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:pydantic", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions.action_node", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ActionNode']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions.add_requirement", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['UserRequirement']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.context_mixin", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ContextMixin']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.logs", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['logger']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.memory", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Memory']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.provider", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['HumanProvider']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.schema", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Message', 'MessageQueue', 'SerializationMixin']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.strategy.planner", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.planner\",\"names\":[\"Planner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Planner']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.planner\",\"names\":[\"Planner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.common", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['any_to_name', 'any_to_str', 'role_raise_decorator']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ProjectRepo']", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.repair_llm_raw_output", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['extract_state_value_from_output']", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:TYPE_CHECKING", "target": "{\"lineno\":43,\"end_lineno\":44,\"type_name\":\"ast.If\",\"tokens\":[\"TYPE_CHECKING\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ast.Call:RoleContext.model_rebuild", "target": "{\"lineno\":605,\"end_lineno\":605,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Call\",\"RoleContext.model_rebuild\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:ast.Constant:\n@Time : 2023/9/21 14:10:05\n@Author : Stitch-z\n@File : invoice_ocr_assistant.py\n", "target": "{\"lineno\":4,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 14:10:05\\n@Author : Stitch-z\\n@File : invoice_ocr_assistant.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:json", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Optional']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:pandas as pd", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['BaseModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.actions.invoice_ocr", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['GenerateTable', 'InvoiceOCR', 'ReplyQuestion']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.prompts.invoice_ocr", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['INVOICE_OCR_SUCCESS']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.roles.role", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : architect.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : architect.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['WritePRD']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.actions.design_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['WriteDesign']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.roles.role", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['Role']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:DESC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:DESC", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESC\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['BaseStore']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:metagpt.roles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Sales']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:ast.Constant:\n@Time : 2023/9/13 12:23\n@Author : femto Zheng\n@File : sk_agent.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\n distribution feature for message filtering.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:23\\n@Author : femto Zheng\\n@File : sk_agent.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\\n distribution feature for message filtering.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Any', 'Callable', 'Union']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Field']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Kernel']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['SequentialPlanner']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.action_planner.action_planner", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['ActionPlanner']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.basic_planner", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['BasicPlanner', 'Plan']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.actions", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['UserRequirement']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.actions.execute_task", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['ExecuteTask']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.roles", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Role']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Message']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.utils.make_sk_kernel", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['make_sk_kernel']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:PREFIX", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS", "target": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_INSTRUCTIONS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:SUFFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:SUFFIX", "target": "{\"lineno\":21,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUFFIX\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:ast.Constant:\n@Time : 2023/5/18 22:43\n@Author : alexanderwu\n@File : prompt.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 22:43\\n@Author : alexanderwu\\n@File : prompt.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:datetime", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['datetime']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Dict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.actions.write_tutorial", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['WriteContent', 'WriteDirectory']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['TUTORIAL_PATH']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.roles.role", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Message']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.utils.file", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['File']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:ast.Constant:\n@Time : 2023/5/11 15:04\n@Author : alexanderwu\n@File : project_manager.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 15:04\\n@Author : alexanderwu\\n@File : project_manager.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['WriteTasks']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.actions.design_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['WriteDesign']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.roles.role", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['Role']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['BaseModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Action', 'CollectLinks', 'ConductResearch', 'WebBrowseAndSummarize']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.actions.research", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['get_research_system_text']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['RESEARCH_PATH']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.roles.role", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:__name__:__main__", "target": "{\"lineno\":119,\"end_lineno\":126,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/ci/code_interpreter.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/ci/code_interpreter.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/ci/code_interpreter.py", "target": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter"}, {"predicate": "is", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter", "target": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter", "target": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:working_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter", "target": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_act_on_task"}, {"predicate": "has_class_method", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter", "target": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_write_and_exec_code"}, {"predicate": "has_class_method", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter", "target": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_write_code"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter", "target": "{\"lineno\":16,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeInterpreter\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:working_memory", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_act_on_task", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_write_and_exec_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/ci/code_interpreter.py:CodeInterpreter:_write_code", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:module:pydantic", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:names:['Field']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:module:metagpt.actions.ci.ask_review", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ask_review\",\"names\":[\"ReviewConst\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:names:['ReviewConst']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ask_review\",\"names\":[\"ReviewConst\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:module:metagpt.actions.ci.execute_nb_code", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:names:['ExecuteNbCode']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:module:metagpt.actions.ci.write_analysis_code", "target": "{\"lineno\":7,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithoutTools\",\"WriteCodeWithTools\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:names:['WriteCodeWithoutTools', 'WriteCodeWithTools']", "target": "{\"lineno\":7,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithoutTools\",\"WriteCodeWithTools\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:module:metagpt.roles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:names:['Role']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:module:metagpt.schema", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Task\",\"TaskResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/code_interpreter.py:names:['Message', 'Task', 'TaskResult']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Task\",\"TaskResult\"]}}"}, {"predicate": "is", "source": "metagpt/roles/ci/ml_engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/ci/ml_engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/ci/ml_engineer.py", "target": "metagpt/roles/ci/ml_engineer.py:MLEngineer"}, {"predicate": "is", "source": "metagpt/roles/ci/ml_engineer.py:MLEngineer", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/roles/ci/ml_engineer.py:MLEngineer", "target": "metagpt/roles/ci/ml_engineer.py:MLEngineer:_write_code"}, {"predicate": "has_class_method", "source": "metagpt/roles/ci/ml_engineer.py:MLEngineer", "target": "metagpt/roles/ci/ml_engineer.py:MLEngineer:_update_data_columns"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:MLEngineer", "target": "{\"lineno\":10,\"end_lineno\":64,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MLEngineer\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/ci/ml_engineer.py:MLEngineer:_write_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/ci/ml_engineer.py:MLEngineer:_update_data_columns", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:module:metagpt.actions.ci.debug_code", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.debug_code\",\"names\":[\"DebugCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:names:['DebugCode']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.debug_code\",\"names\":[\"DebugCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:module:metagpt.actions.ci.execute_nb_code", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:names:['ExecuteNbCode']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:module:metagpt.actions.ci.ml_action", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ml_action\",\"names\":[\"UpdateDataColumns\",\"WriteCodeWithToolsML\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:names:['UpdateDataColumns', 'WriteCodeWithToolsML']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ml_action\",\"names\":[\"UpdateDataColumns\",\"WriteCodeWithToolsML\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:module:metagpt.logs", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:names:['logger']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:module:metagpt.roles.ci.code_interpreter", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.ci.code_interpreter\",\"names\":[\"CodeInterpreter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:names:['CodeInterpreter']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.ci.code_interpreter\",\"names\":[\"CodeInterpreter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:module:metagpt.tools.tool_type", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:names:['ToolType']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_type\",\"names\":[\"ToolType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/ci/ml_engineer.py:names:['any_to_str']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\"]}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/serialize.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutput_mapping_to_str"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutput_str_to_mapping"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:serialize_message"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:deserialize_message"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping", "target": "{\"lineno\":11,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutout_schema_to_mapping\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutput_mapping_to_str", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutput_mapping_to_str", "target": "{\"lineno\":43,\"end_lineno\":47,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_mapping_to_str\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutput_str_to_mapping", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutput_str_to_mapping", "target": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_str_to_mapping\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:serialize_message", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:serialize_message", "target": "{\"lineno\":60,\"end_lineno\":71,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_message\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:deserialize_message", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:deserialize_message", "target": "{\"lineno\":74,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"deserialize_message\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:copy", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:pickle", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pickle\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:module:metagpt.utils.common", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:names:['import_class']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:__str__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ast.Constant:\n@Time : 2024/1/8\n@Author : mashenquan\n@File : project_repo.py\n@Desc : Wrapper for GitRepository and FileRepository of project.\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/8\\n@Author : mashenquan\\n@File : project_repo.py\\n@Desc : Wrapper for GitRepository and FileRepository of project.\\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:__future__", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['annotations']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['CLASS_VIEW_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_PDF_FILE_REPO', 'CODE_SUMMARIES_FILE_REPO', 'CODE_SUMMARIES_PDF_FILE_REPO', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'DATA_API_DESIGN_FILE_REPO', 'DOCS_FILE_REPO', 'GRAPH_REPO_FILE_REPO', 'PRD_PDF_FILE_REPO', 'PRDS_FILE_REPO', 'REQUIREMENT_FILENAME', 'RESOURCES_FILE_REPO', 'SD_OUTPUT_FILE_REPO', 'SEQ_FLOW_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'SYSTEM_DESIGN_PDF_FILE_REPO', 'TASK_FILE_REPO', 'TASK_PDF_FILE_REPO', 'TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO', 'VISUAL_GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['FileRepository']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['GitRepository']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_playwright.py", "target": "metagpt/utils/mmdc_playwright.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:mermaid_to_file", "target": "{\"lineno\":17,\"end_lineno\":121,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : Steven Lee\n@File : mmdc_playwright.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : Steven Lee\\n@File : mmdc_playwright.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:os", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:urllib.parse", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['urljoin']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:playwright.async_api", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['async_playwright']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:ast.Constant:\n@Time : 2023/11/22\n@Author : mashenquan\n@File : dependency_file.py\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/22\\n@Author : mashenquan\\n@File : dependency_file.py\\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['Set']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:aiofiles", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['aread']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['handle_exception']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/make_sk_kernel.py", "target": "metagpt/utils/make_sk_kernel.py:make_sk_kernel"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py:make_sk_kernel", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:make_sk_kernel", "target": "{\"lineno\":19,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_sk_kernel\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:ast.Constant:\n@Time : 2023/9/13 12:29\n@Author : femto Zheng\n@File : make_sk_kernel.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:29\\n@Author : femto Zheng\\n@File : make_sk_kernel.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:semantic_kernel as sk", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"semantic_kernel as sk\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion", "target": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['AzureChatCompletion']", "target": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['OpenAIChatCompletion']", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:metagpt.config2", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['config']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:count_message_tokens"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:count_string_tokens"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:get_max_completion_tokens"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:count_message_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:count_message_tokens", "target": "{\"lineno\":65,\"end_lineno\":127,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_message_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:count_string_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:count_string_tokens", "target": "{\"lineno\":130,\"end_lineno\":146,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_string_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:get_max_completion_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:get_max_completion_tokens", "target": "{\"lineno\":149,\"end_lineno\":161,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_max_completion_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:TOKEN_COSTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:TOKEN_COSTS", "target": "{\"lineno\":15,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_COSTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:TOKEN_MAX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:TOKEN_MAX", "target": "{\"lineno\":40,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_MAX\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:ast.Constant:\n@Time : 2023/5/18 00:40\n@Author : alexanderwu\n@File : token_counter.py\nref1: https://openai.com/pricing\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\nref5: https://ai.google.dev/models/gemini\n", "target": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 00:40\\n@Author : alexanderwu\\n@File : token_counter.py\\nref1: https://openai.com/pricing\\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\\nref5: https://ai.google.dev/models/gemini\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:tiktoken", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"tiktoken\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/embedding.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/embedding.py", "target": "metagpt/utils/embedding.py:get_embedding"}, {"predicate": "is", "source": "metagpt/utils/embedding.py:get_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:get_embedding", "target": "{\"lineno\":13,\"end_lineno\":16,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:ast.Constant:\n@Time : 2024/1/4 20:58\n@Author : alexanderwu\n@File : embedding.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 20:58\\n@Author : alexanderwu\\n@File : embedding.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:module:langchain_community.embeddings", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:names:['config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity", "target": "{\"lineno\":24,\"end_lineno\":41,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_case_sensitivity\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing", "target": "{\"lineno\":44,\"end_lineno\":64,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_special_character_missing\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing", "target": "{\"lineno\":67,\"end_lineno\":105,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_required_key_pair_missing\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_json_format", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_json_format", "target": "{\"lineno\":108,\"end_lineno\":139,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_json_format\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output", "target": "{\"lineno\":142,\"end_lineno\":153,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_repair_llm_raw_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output", "target": "{\"lineno\":156,\"end_lineno\":177,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_llm_raw_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json", "target": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_invalid_json\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry", "target": "{\"lineno\":230,\"end_lineno\":264,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"run_after_exp_and_passon_next_retry\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text", "target": "{\"lineno\":272,\"end_lineno\":286,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"retry_parse_json_text\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output", "target": "{\"lineno\":289,\"end_lineno\":319,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_content_from_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output", "target": "{\"lineno\":322,\"end_lineno\":335,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_state_value_from_output\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:copy", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:enum", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['Enum']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['Callable', 'Union']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:regex as re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"regex as re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['RetryCallState', 'retry', 'stop_after_attempt', 'wait_fixed']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.utils.custom_decoder", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['CustomDecoder']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mermaid.py", "target": "metagpt/utils/mermaid.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:mermaid_to_file", "target": "{\"lineno\":19,\"end_lineno\":90,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:MMC1", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:MMC1", "target": "{\"lineno\":93,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC1\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:MMC2", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:MMC2", "target": "{\"lineno\":127,\"end_lineno\":145,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:ast.Constant:\n@Time : 2023/7/4 10:53\n@Author : alexanderwu alitrack\n@File : mermaid.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/4 10:53\\n@Author : alexanderwu alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:os", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:aiofiles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.utils.common", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['check_cmd_exists']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:get_html_content", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:get_html_content", "target": "{\"lineno\":42,\"end_lineno\":45,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_html_content\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:_get_soup", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:_get_soup", "target": "{\"lineno\":48,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_soup\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:__future__", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['annotations']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:typing", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['Generator', 'Optional']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:urllib.parse", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['urljoin', 'urlparse']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:bs4", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['BeautifulSoup']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['BaseModel', 'PrivateAttr']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : visualize_graph.py\n@Desc : Visualization tool to visualize the class diagrams or sequence diagrams of the graph repository.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : visualize_graph.py\\n@Desc : Visualization tool to visualize the class diagrams or sequence diagrams of the graph repository.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:abc", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['ABC']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['List', 'Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:pydantic", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.schema", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['UMLClassView']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.common", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['split_namespace']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['DiGraphRepository']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py", "target": "python"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py:MSG_SEP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/special_tokens.py:MSG_SEP", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Assign\",\"tokens\":[\"MSG_SEP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILENAME_CODE_SEP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/ahttp_client.py", "target": "metagpt/utils/ahttp_client.py:apost"}, {"predicate": "has_function", "source": "metagpt/utils/ahttp_client.py", "target": "metagpt/utils/ahttp_client.py:apost_stream"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py:apost", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:apost", "target": "{\"lineno\":11,\"end_lineno\":28,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py:apost_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:apost_stream", "target": "{\"lineno\":31,\"end_lineno\":49,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost_stream\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:names:['Any', 'Mapping', 'Optional', 'Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:aiohttp", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:module:aiohttp.client", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:names:['DEFAULT_TIMEOUT']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"predicate": "is", "source": "metagpt/utils/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/utils/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:__all__", "target": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:50\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:50\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.read_document", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['read_docx']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.singleton", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['Singleton']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['TOKEN_COSTS', 'count_message_tokens', 'count_string_tokens']", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_ink.py", "target": "metagpt/utils/mmdc_ink.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:mermaid_to_file", "target": "{\"lineno\":15,\"end_lineno\":41,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mermaid.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:base64", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:module:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:names:['ClientError', 'ClientSession']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : di_graph_repository.py\n@Desc : Graph repository based on DiGraph.\n This script defines a graph repository class based on a directed graph (DiGraph), providing functionalities\n specific to handling directed relationships between entities.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : di_graph_repository.py\\n@Desc : Graph repository based on DiGraph.\\n This script defines a graph repository class based on a directed graph (DiGraph), providing functionalities\\n specific to handling directed relationships between entities.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:__future__", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['annotations']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:json", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['List']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:networkx", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"networkx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['aread', 'awrite']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['SPO', 'GraphRepository']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:ast.Constant:\n@Time : 2024/1/4 10:18\n@Author : alexanderwu\n@File : YamlModel.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 10:18\\n@Author : alexanderwu\\n@File : YamlModel.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['Dict', 'Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:yaml", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['BaseModel', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : openai.py\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\n", "target": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : openai.py\\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['NamedTuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['BaseModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['TOKEN_COSTS']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : file.py\n@Describe : General file operations.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : file.py\\n@Describe : General file operations.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:aiofiles", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['handle_exception']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/save_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/save_code.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/save_code.py", "target": "metagpt/utils/save_code.py:save_code_file"}, {"predicate": "is", "source": "metagpt/utils/save_code.py:save_code_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/save_code.py:save_code_file", "target": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"save_code_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/save_code.py:os", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/save_code.py:nbformat", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"nbformat\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/save_code.py:module:metagpt.const", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/save_code.py:names:['DATA_PATH']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/save_code.py:module:metagpt.utils.common", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/save_code.py:names:['write_json_file']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"write_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/common.py:check_cmd_exists", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:check_cmd_exists", "target": "{\"lineno\":44,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"check_cmd_exists\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:require_python_version", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:require_python_version", "target": "{\"lineno\":57,\"end_lineno\":60,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"require_python_version\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:print_members", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:print_members", "target": "{\"lineno\":325,\"end_lineno\":341,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"print_members\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:get_function_schema", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:get_function_schema", "target": "{\"lineno\":344,\"end_lineno\":349,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_function_schema\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:parse_recipient", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:parse_recipient", "target": "{\"lineno\":352,\"end_lineno\":362,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_recipient\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:create_func_call_config", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:create_func_call_config", "target": "{\"lineno\":365,\"end_lineno\":372,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"create_func_call_config\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:remove_comments", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:remove_comments", "target": "{\"lineno\":375,\"end_lineno\":387,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_comments\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:get_class_name", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:get_class_name", "target": "{\"lineno\":390,\"end_lineno\":392,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_name\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_str", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_str", "target": "{\"lineno\":395,\"end_lineno\":402,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_str_set", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_str_set", "target": "{\"lineno\":405,\"end_lineno\":420,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str_set\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:is_send_to", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:is_send_to", "target": "{\"lineno\":423,\"end_lineno\":431,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_send_to\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_name", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_name", "target": "{\"lineno\":434,\"end_lineno\":442,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_name\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:concat_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:concat_namespace", "target": "{\"lineno\":445,\"end_lineno\":458,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"concat_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:split_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:split_namespace", "target": "{\"lineno\":461,\"end_lineno\":478,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:auto_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:auto_namespace", "target": "{\"lineno\":481,\"end_lineno\":512,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"auto_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:add_affix", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:add_affix", "target": "{\"lineno\":515,\"end_lineno\":541,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"add_affix\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:remove_affix", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:remove_affix", "target": "{\"lineno\":544,\"end_lineno\":567,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_affix\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:general_after_log", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:general_after_log", "target": "{\"lineno\":570,\"end_lineno\":600,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"general_after_log\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_json_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_json_file", "target": "{\"lineno\":603,\"end_lineno\":612,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_json_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:write_json_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:write_json_file", "target": "{\"lineno\":615,\"end_lineno\":621,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"write_json_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_csv_to_list", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_csv_to_list", "target": "{\"lineno\":624,\"end_lineno\":644,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_csv_to_list\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:import_class", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:import_class", "target": "{\"lineno\":647,\"end_lineno\":650,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:import_class_inst", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:import_class_inst", "target": "{\"lineno\":653,\"end_lineno\":656,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class_inst\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:format_trackback_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:format_trackback_info", "target": "{\"lineno\":659,\"end_lineno\":660,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"format_trackback_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:serialize_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:serialize_decorator", "target": "{\"lineno\":663,\"end_lineno\":674,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:role_raise_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:role_raise_decorator", "target": "{\"lineno\":677,\"end_lineno\":704,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"role_raise_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:aread", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aread", "target": "{\"lineno\":708,\"end_lineno\":712,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:awrite", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:awrite", "target": "{\"lineno\":715,\"end_lineno\":720,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_file_block", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_file_block", "target": "{\"lineno\":723,\"end_lineno\":737,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"read_file_block\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:list_files", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:list_files", "target": "{\"lineno\":740,\"end_lineno\":754,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"list_files\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:parse_json_code_block", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:parse_json_code_block", "target": "{\"lineno\":757,\"end_lineno\":759,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_json_code_block\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:remove_white_spaces", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:remove_white_spaces", "target": "{\"lineno\":762,\"end_lineno\":772,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_white_spaces\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:aread_bin", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aread_bin", "target": "{\"lineno\":775,\"end_lineno\":793,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread_bin\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:awrite_bin", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:awrite_bin", "target": "{\"lineno\":796,\"end_lineno\":811,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite_bin\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:is_coroutine_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:is_coroutine_func", "target": "{\"lineno\":814,\"end_lineno\":815,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_coroutine_func\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:load_mc_skills_code", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:load_mc_skills_code", "target": "{\"lineno\":818,\"end_lineno\":825,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"load_mc_skills_code\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:encode_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:encode_image", "target": "{\"lineno\":828,\"end_lineno\":839,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"encode_image\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:decode_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:decode_image", "target": "{\"lineno\":842,\"end_lineno\":853,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:ast.Constant:\n@Time : 2023/4/29 16:07\n@Author : alexanderwu\n@File : common.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n Add generic class-to-string and object-to-string conversion functionality.\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\n responses.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 16:07\\n@Author : alexanderwu\\n@File : common.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n Add generic class-to-string and object-to-string conversion functionality.\\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\\n responses.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:__future__", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['annotations']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:ast", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:base64", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:contextlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"contextlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:csv", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"csv\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:importlib", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:inspect", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:json", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:os", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:platform", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:re", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:sys", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:traceback", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:io", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"io\",\"names\":[\"BytesIO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['BytesIO']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"io\",\"names\":[\"BytesIO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:pathlib", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Path']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:typing", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"List\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Any', 'Callable', 'List', 'Tuple', 'Union']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"List\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:urllib.parse", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"quote\",\"unquote\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['quote', 'unquote']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"quote\",\"unquote\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aiofiles", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:loguru", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.Import\",\"tokens\":[\"loguru\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:requests", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:PIL", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Image']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:pydantic_core", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['to_jsonable_python']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:tenacity", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['RetryCallState', 'RetryError', '_utils']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.const", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['MESSAGE_ROUTE_TO_ALL']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.logs", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['logger']", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['handle_exception']", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:_connect", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:ast.Constant:\n@Time : 2023/12/27\n@Author : mashenquan\n@File : redis.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/27\\n@Author : mashenquan\\n@File : redis.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:traceback", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:datetime", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['timedelta']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:aioredis", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aioredis\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:metagpt.configs.redis_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['RedisConfig']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/text.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/text.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:reduce_message_length"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:generate_prompt_chunk"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:split_paragraph"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:decode_unicode_escape"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:_split_by_count"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:_split_text_with_ends"}, {"predicate": "is", "source": "metagpt/utils/text.py:reduce_message_length", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:reduce_message_length", "target": "{\"lineno\":6,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"reduce_message_length\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:generate_prompt_chunk", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:generate_prompt_chunk", "target": "{\"lineno\":34,\"end_lineno\":76,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_prompt_chunk\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:split_paragraph", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:split_paragraph", "target": "{\"lineno\":79,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_paragraph\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:decode_unicode_escape", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:decode_unicode_escape", "target": "{\"lineno\":99,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_unicode_escape\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:_split_by_count", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:_split_by_count", "target": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_by_count\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:_split_text_with_ends", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:_split_text_with_ends", "target": "{\"lineno\":121,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_text_with_ends\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:module:typing", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:names:['Generator', 'Sequence']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:names:['TOKEN_MAX', 'count_string_tokens']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : graph_repository.py\n@Desc : Superclass for graph repository. This script defines a superclass for a graph repository, providing a\n foundation for specific implementations.\n\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : graph_repository.py\\n@Desc : Superclass for graph repository. This script defines a superclass for a graph repository, providing a\\n foundation for specific implementations.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:abc", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:collections", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['defaultdict']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['List']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:pydantic", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['BaseModel']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.repo_parser", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['DotClassInfo', 'DotClassRelationship', 'RepoFileInfo']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['concat_namespace', 'split_namespace']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "is", "source": "metagpt/utils/singleton.py:Singleton:__call__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:ast.Constant:\n@Time : 2023/5/11 16:15\n@Author : alexanderwu\n@File : singleton.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 16:15\\n@Author : alexanderwu\\n@File : singleton.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"abc\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/recovery_util.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/recovery_util.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/recovery_util.py", "target": "metagpt/utils/recovery_util.py:load_history"}, {"predicate": "has_function", "source": "metagpt/utils/recovery_util.py", "target": "metagpt/utils/recovery_util.py:save_history"}, {"predicate": "is", "source": "metagpt/utils/recovery_util.py:load_history", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:load_history", "target": "{\"lineno\":17,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"load_history\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/recovery_util.py:save_history", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:save_history", "target": "{\"lineno\":35,\"end_lineno\":58,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"save_history\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:module:datetime", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:names:['datetime']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:module:pathlib", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:names:['Path']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:nbformat", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"nbformat\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:module:metagpt.const", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:names:['DATA_PATH']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:module:metagpt.roles.role", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:names:['Role']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:module:metagpt.utils.common", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"read_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:names:['read_json_file']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"read_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:module:metagpt.utils.save_code", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.save_code\",\"names\":[\"save_code_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/recovery_util.py:names:['save_code_file']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.save_code\",\"names\":[\"save_code_file\"]}}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:os", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:datetime", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['datetime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Dict', 'List', 'Set']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:aiofiles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Document']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['aread']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.utils.json_to_markdown", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['json_to_markdown']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:_leave", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:_leave", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:get_docstring_statement", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:get_docstring_statement", "target": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_docstring_statement\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:has_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:has_decorator", "target": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"has_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:merge_docstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:merge_docstring", "target": "{\"lineno\":159,\"end_lineno\":176,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_docstring\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringNode", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringNode", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"DocstringNode\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:typing", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['Union']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:libcst as cst", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"libcst as cst\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:libcst._nodes.module", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['Module']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/exceptions.py", "target": "metagpt/utils/exceptions.py:handle_exception"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py:handle_exception", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:handle_exception", "target": "{\"lineno\":20,\"end_lineno\":61,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"handle_exception\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py:ReturnType", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:ReturnType", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"ReturnType\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:ast.Constant:\n@Time : 2023/12/19 14:46\n@Author : alexanderwu\n@File : exceptions.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 14:46\\n@Author : alexanderwu\\n@File : exceptions.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:asyncio", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:functools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"functools\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:traceback", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:names:['Any', 'Callable', 'Tuple', 'Type', 'TypeVar', 'Union']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['Any', 'Tuple', 'Type']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['BaseModel']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:metagpt.logs", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['logger']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:metagpt.utils.common", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['import_class']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "is", "source": "metagpt/utils/highlight.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/highlight.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/highlight.py", "target": "metagpt/utils/highlight.py:highlight"}, {"predicate": "is", "source": "metagpt/utils/highlight.py:highlight", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:highlight", "target": "{\"lineno\":7,\"end_lineno\":25,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"highlight\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['highlight as highlight_']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments.formatters", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['HtmlFormatter', 'TerminalFormatter']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments.lexers", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['PythonLexer', 'SqlLexer']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file", "target": "{\"lineno\":17,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mmdc_pyppeteer.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mmdc_pyppeteer.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:urllib.parse", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['urljoin']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:pyppeteer", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['launch']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.config2", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['config']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:base64", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:os.path", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:traceback", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:uuid", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:aioboto3", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aioboto3\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:aiofiles", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['S3Config']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.const", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/json_to_markdown.py", "target": "metagpt/utils/json_to_markdown.py:json_to_markdown"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py:json_to_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/json_to_markdown.py:json_to_markdown", "target": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"json_to_markdown\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/json_to_markdown.py:ast.Constant:\n@Time : 2023/9/11 11:50\n@Author : femto Zheng\n@File : json_to_markdown.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/11 11:50\\n@Author : femto Zheng\\n@File : json_to_markdown.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:py_make_scanner", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:py_make_scanner", "target": "{\"lineno\":9,\"end_lineno\":69,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_make_scanner\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:JSONObject", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:JSONObject", "target": "{\"lineno\":91,\"end_lineno\":192,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"JSONObject\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:py_scanstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:py_scanstring", "target": "{\"lineno\":195,\"end_lineno\":267,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_scanstring\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:NUMBER_RE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:NUMBER_RE", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"NUMBER_RE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:FLAGS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:FLAGS", "target": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"FLAGS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK", "target": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE", "target": "{\"lineno\":74,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_SINGLEQUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE", "target": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_DOUBLE_QUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE", "target": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_SINGLEQUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:BACKSLASH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:BACKSLASH", "target": "{\"lineno\":77,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"BACKSLASH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:WHITESPACE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:WHITESPACE", "target": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:WHITESPACE_STR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:WHITESPACE_STR", "target": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE_STR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:scanstring", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:scanstring", "target": "{\"lineno\":270,\"end_lineno\":270,\"type_name\":\"ast.Assign\",\"tokens\":[\"scanstring\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:json", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:re", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:module:json", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:names:['JSONDecodeError']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:module:json.decoder", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:names:['_decode_uXXXX']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:_init", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: Git repository management. RFC 135 2.2.3.3.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: Git repository management. RFC 135 2.2.3.3.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:shutil", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:enum", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Enum']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Dict', 'List']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:git.repo", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Repo']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:git.repo.fun", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['is_git_dir']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:gitignore_parser", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['parse_gitignore']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.utils.dependency_file", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['DependencyFile']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['FileRepository']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/read_document.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/read_document.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/read_document.py", "target": "metagpt/utils/read_document.py:read_docx"}, {"predicate": "is", "source": "metagpt/utils/read_document.py:read_docx", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:read_docx", "target": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_docx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:ast.Constant:\n@Time : 2023/4/29 15:45\n@Author : alexanderwu\n@File : read_document.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:45\\n@Author : alexanderwu\\n@File : read_document.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:docx", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"docx\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/parse_docstring.py:remove_spaces", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:remove_spaces", "target": "{\"lineno\":7,\"end_lineno\":8,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_spaces\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:re", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:names:['Tuple']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:module:pydantic", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_docstring.py:names:['BaseModel']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : s3_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : s3_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:names:['YamlModelWithoutDefault']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : browser_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : browser_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:metagpt.tools", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['WebBrowserEngineType']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['YamlModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:ast.Constant:\n@Time : 2024/1/4 19:09\n@Author : alexanderwu\n@File : workspace_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:09\\n@Author : alexanderwu\\n@File : workspace_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:datetime", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['datetime']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:uuid", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['uuid4']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['field_validator', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['DEFAULT_WORKSPACE_ROOT']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['YamlModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : mermaid_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : mermaid_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:names:['Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:names:['YamlModel']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/configs/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/configs/__init__.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType:__missing__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : llm_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : llm_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['field_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['YamlModel']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : redis_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : redis_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:names:['YamlModelWithoutDefault']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : search_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : search_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:names:['Callable', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:module:metagpt.tools", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:names:['SearchEngineType']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:names:['YamlModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : rebuild_class_view.py\n@Desc : Reconstructs class diagram from a source code project.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : rebuild_class_view.py\\n@Desc : Reconstructs class diagram from a source code project.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Set\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Optional', 'Set', 'Tuple']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Set\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:aiofiles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.actions", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.config2", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['config']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.const", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['AGGREGATION', 'COMPOSITION', 'DATA_API_DESIGN_FILE_REPO', 'GENERALIZATION', 'GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.logs", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['logger']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.repo_parser", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['DotClassInfo', 'RepoParser']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.schema", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['UMLClassView']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.common", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['concat_namespace', 'split_namespace']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['DiGraphRepository']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:ast.Constant:\n@Time : 2024/1/4\n@Author : mashenquan\n@File : rebuild_sequence_view.py\n@Desc : Reconstruct sequence view information through reverse engineering.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4\\n@Author : mashenquan\\n@File : rebuild_sequence_view.py\\n@Desc : Reconstruct sequence view information through reverse engineering.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:datetime", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['datetime']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['List', 'Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:pydantic", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['BaseModel']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:tenacity", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.actions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['Action']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.config2", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['config']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.logs", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['logger']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.repo_parser", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['CodeBlockInfo', 'DotClassInfo']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.schema", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['UMLClassView']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.common", "target": "{\"lineno\":25,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"add_affix\",\"aread\",\"auto_namespace\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['add_affix', 'aread', 'auto_namespace', 'concat_namespace', 'general_after_log', 'list_files', 'parse_json_code_block', 'read_file_block', 'split_namespace']", "target": "{\"lineno\":25,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"add_affix\",\"aread\",\"auto_namespace\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['DiGraphRepository']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['SPO', 'GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":32,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\n value of the `Message` object.\n@Modified By: mashenquan, 2023-11-27.\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\n code-block formatting to enhance the understanding for the LLM.\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\n than passing them in when calling the run function.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\\n value of the `Message` object.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\\n code-block formatting to enhance the understanding for the LLM.\\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\\n than passing them in when calling the run function.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:json", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:pydantic", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['Field']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:tenacity", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['Action']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['REFINED_TASK_LIST', 'TASK_LIST']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.write_code_plan_and_change_an", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['REFINED_TEMPLATE']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.const", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['BUGFIX_FILENAME', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.logs", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['logger']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.schema", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CodingContext', 'Document', 'RunCodeResult']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.utils.common", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CodeParser']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['ProjectRepo']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py", "target": "python"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:LANGUAGE", "target": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE", "target": "{\"lineno\":19,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAMMING_LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"ORIGINAL_REQUIREMENTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS", "target": "{\"lineno\":33,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PROJECT_NAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PROJECT_NAME", "target": "{\"lineno\":40,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS", "target": "{\"lineno\":48,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRODUCT_GOALS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS", "target": "{\"lineno\":55,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRODUCT_GOALS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:USER_STORIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:USER_STORIES", "target": "{\"lineno\":67,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"USER_STORIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES", "target": "{\"lineno\":80,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_USER_STORIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS", "target": "{\"lineno\":94,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART", "target": "{\"lineno\":105,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_QUADRANT_CHART\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS", "target": "{\"lineno\":126,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS", "target": "{\"lineno\":133,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL", "target": "{\"lineno\":142,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_POOL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL", "target": "{\"lineno\":149,\"end_lineno\":155,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_POOL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT", "target": "{\"lineno\":157,\"end_lineno\":162,\"type_name\":\"ast.Assign\",\"tokens\":[\"UI_DESIGN_DRAFT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR", "target": "{\"lineno\":164,\"end_lineno\":169,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ISSUE_TYPE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ISSUE_TYPE", "target": "{\"lineno\":171,\"end_lineno\":176,\"type_name\":\"ast.Assign\",\"tokens\":[\"ISSUE_TYPE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:IS_RELATIVE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:IS_RELATIVE", "target": "{\"lineno\":178,\"end_lineno\":183,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_RELATIVE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REASON", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REASON", "target": "{\"lineno\":185,\"end_lineno\":187,\"type_name\":\"ast.Assign\",\"tokens\":[\"REASON\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:NODES", "target": "{\"lineno\":190,\"end_lineno\":203,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_NODES", "target": "{\"lineno\":205,\"end_lineno\":218,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE", "target": "{\"lineno\":220,\"end_lineno\":220,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_PRD_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE", "target": "{\"lineno\":221,\"end_lineno\":221,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRD_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE", "target": "{\"lineno\":222,\"end_lineno\":222,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_ISSUE_TYPE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE", "target": "{\"lineno\":223,\"end_lineno\":223,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_IS_RELATIVE_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ast.Constant:\n@Time : 2023/12/14 11:40\n@Author : alexanderwu\n@File : write_prd_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 11:40\\n@Author : alexanderwu\\n@File : write_prd_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":17,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE", "target": "{\"lineno\":46,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:ast.Constant:\n@Author : alexanderwu\n@File : summarize_code.py\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : summarize_code.py\\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:tenacity", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.actions.action", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['CodeSummarizeContext']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/research.py:get_research_system_text", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:get_research_system_text", "target": "{\"lineno\":276,\"end_lineno\":286,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_research_system_text\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:LANG_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:LANG_PROMPT", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANG_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM", "target": "{\"lineno\":20,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_BASE_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_TOPIC_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT", "target": "{\"lineno\":25,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_TOPIC_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT", "target": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_SEARCH_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT", "target": "{\"lineno\":37,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"COLLECT_AND_RANKURLS_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT", "target": "{\"lineno\":51,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"WEB_BROWSE_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT", "target": "{\"lineno\":63,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONDUCT_RESEARCH_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Any', 'Callable', 'Optional', 'Union']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"TypeAdapter\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['TypeAdapter', 'model_validator']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"TypeAdapter\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['config']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['SearchEngine']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.tools.web_browser_engine", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['WebBrowserEngine']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.utils.common", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['OutputParser']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.utils.text", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['generate_prompt_chunk', 'reduce_message_length']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : skill_action.py\n@Desc : Call learned skill\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : skill_action.py\\n@Desc : Call learned skill\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ast", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:importlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:traceback", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:copy", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['deepcopy']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Dict', 'Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.actions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Action']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.learn.skill_loader", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Skill']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:PROMPT_TEMPLATE", "target": "{\"lineno\":19,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : write_test.py\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\n WriteTest object, rather than passing them in when calling the run function.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : write_test.py\\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Optional']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.actions.action", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['TEST_CODES_FILE_REPO']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Document', 'TestingContext']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['CodeParser']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_graph.py:ActionGraph:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_graph.py:ast.Constant:\n@Time : 2024/1/30 13:52\n@Author : alexanderwu\n@File : action_graph.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/30 13:52\\n@Author : alexanderwu\\n@File : action_graph.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_graph.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_graph.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE", "target": "{\"lineno\":20,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : debug_error.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : debug_error.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['Field']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.actions.action", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['RunCodeContext', 'RunCodeResult']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['CodeParser']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_new_system_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_update_system_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":30,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:ast.Constant:\n@Time : 2023/5/11 19:26\n@Author : alexanderwu\n@File : design_api.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:26\\n@Author : alexanderwu\\n@File : design_api.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.actions", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.actions.design_api_an", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['DATA_STRUCTURES_AND_INTERFACES', 'DESIGN_API_NODE', 'PROGRAM_CALL_FLOW', 'REFINED_DATA_STRUCTURES_AND_INTERFACES', 'REFINED_DESIGN_NODE', 'REFINED_PROGRAM_CALL_FLOW']", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.const", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['DATA_API_DESIGN_FILE_REPO', 'SEQ_FLOW_FILE_REPO']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.schema", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Document', 'Documents', 'Message']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['mermaid_to_file']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/design_api_an.py", "target": "metagpt/actions/design_api_an.py:main"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:main", "target": "{\"lineno\":114,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH", "target": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH", "target": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:PROJECT_NAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:PROJECT_NAME", "target": "{\"lineno\":30,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:FILE_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:FILE_LIST", "target": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILE_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST", "target": "{\"lineno\":41,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_FILE_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES", "target": "{\"lineno\":49,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES", "target": "{\"lineno\":58,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW", "target": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW", "target": "{\"lineno\":76,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR", "target": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:NODES", "target": "{\"lineno\":93,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_NODES", "target": "{\"lineno\":102,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:DESIGN_API_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:DESIGN_API_NODE", "target": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESIGN_API_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE", "target": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DESIGN_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:ast.Constant:\n@Time : 2023/12/12 22:24\n@Author : alexanderwu\n@File : design_api_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/12 22:24\\n@Author : alexanderwu\\n@File : design_api_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['MMC1', 'MMC2']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:__name__:__main__", "target": "{\"lineno\":121,\"end_lineno\":122,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:ast.Constant:\n@Time : 2023/7/11 10:03\n@Author : chengmaoyu\n@File : action_output\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/11 10:03\\n@Author : chengmaoyu\\n@File : action_output\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:names:['BaseModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/action_outcls_registry.py", "target": "metagpt/actions/action_outcls_registry.py:register_action_outcls"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py:register_action_outcls", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:register_action_outcls", "target": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_action_outcls\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py:action_outcls_registry", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:action_outcls_registry", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"action_outcls_registry\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:module:functools", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:names:['wraps']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:ast.Constant:\n@Time : 2023/5/20 17:46\n@Author : alexanderwu\n@File : add_requirement.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 17:46\\n@Author : alexanderwu\\n@File : add_requirement.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/__init__.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/__init__.py", "target": "metagpt/actions/__init__.py:ActionType"}, {"predicate": "is", "source": "metagpt/actions/__init__.py:ActionType", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:ActionType", "target": "{\"lineno\":30,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:__all__", "target": "{\"lineno\":54,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:ast.Constant:\n@Time : 2023/5/11 17:44\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:44\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.action", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.action_output", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['ActionOutput']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.add_requirement", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['UserRequirement']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.debug_error", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['DebugError']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.design_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteDesign']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.design_api_review", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['DesignReview']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.project_management", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteTasks']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.research", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['CollectLinks', 'WebBrowseAndSummarize', 'ConductResearch']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.run_code", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['RunCode']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.search_and_summarize", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['SearchAndSummarize']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_code", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCode']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_code_review", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCodeReview']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePRD']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd_review", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePRDReview']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_test", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteTest']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.ci.execute_nb_code", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['ExecuteNbCode']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.execute_nb_code\",\"names\":[\"ExecuteNbCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.ci.write_analysis_code", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithoutTools\",\"WriteCodeWithTools\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCodeWithoutTools', 'WriteCodeWithTools']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithoutTools\",\"WriteCodeWithTools\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.ci.write_plan", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_plan\",\"names\":[\"WritePlan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePlan']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_plan\",\"names\":[\"WritePlan\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:REVIEW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:REVIEW", "target": "{\"lineno\":12,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:LGTM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:LGTM", "target": "{\"lineno\":22,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_REVIEW_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['List']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['Action']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_init_with_instruction", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_aask", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_run_action_node", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : action.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : action.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.actions.action_node", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ActionNode']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.context_mixin", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ContextMixin']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'RunCodeContext', 'SerializationMixin', 'TestingContext']", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ProjectRepo']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:ast.Constant:\n@Time : 2023/9/13 12:26\n@Author : femto Zheng\n@File : execute_task.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:26\\n@Author : femto Zheng\\n@File : execute_task.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:module:metagpt.schema", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:names:['Message']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_update_prd", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE", "target": "{\"lineno\":41,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":52,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n", "target": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:__future__", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['annotations']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:json", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:pathlib", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Path']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.action_node", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['ActionNode']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.fix_bug", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['FixBug']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.write_prd_an", "target": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['COMPETITIVE_QUADRANT_CHART', 'PROJECT_NAME', 'REFINED_PRD_NODE', 'WP_IS_RELATIVE_NODE', 'WP_ISSUE_TYPE_NODE', 'WRITE_PRD_NODE']", "target": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.const", "target": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['BUGFIX_FILENAME', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.logs", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['logger']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.schema", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['BugFixContext', 'Document', 'Documents', 'Message']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.common", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['CodeParser']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['FileRepository']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['mermaid_to_file']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:_simplify_python_code", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:_simplify_python_code", "target": "{\"lineno\":199,\"end_lineno\":212,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_simplify_python_code\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM", "target": "{\"lineno\":34,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE", "target": "{\"lineno\":58,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_GOOGLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY", "target": "{\"lineno\":86,\"end_lineno\":122,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_NUMPY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX", "target": "{\"lineno\":124,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_SPHINX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:_python_docstring_style", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:_python_docstring_style", "target": "{\"lineno\":149,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"_python_docstring_style\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:ast.Constant:Code Docstring Generator.\n\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\ndocstrings for the given code and system text.\n\nUsage:\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\n\nArguments:\n filename The path to the Python file for which you want to generate docstrings.\n\nOptions:\n --overwrite If specified, overwrite the original file with the code containing docstrings.\n --style= Specify the style of the generated docstrings.\n Valid values: 'google', 'numpy', or 'sphinx'.\n Default: 'google'\n\nExample:\n python3 -m metagpt.actions.write_docstring ./metagpt/software_company.py --overwrite False --style=numpy\n\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\nthe specified docstring style and adds them to the code.\n", "target": "{\"lineno\":1,\"end_lineno\":23,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"Code Docstring Generator.\\n\\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\\ndocstrings for the given code and system text.\\n\\nUsage:\\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\\n\\nArguments:\\n filename The path to the Python file for which you want to generate docstrings.\\n\\nOptions:\\n --overwrite If specified, overwrite the original file with the code containing docstrings.\\n --style= Specify the style of the generated docstrings.\\n Valid values: 'google', 'numpy', or 'sphinx'.\\n Default: 'google'\\n\\nExample:\\n python3 -m metagpt.actions.write_docstring ./metagpt/software_company.py --overwrite False --style=numpy\\n\\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\\nthe specified docstring style and adds them to the code.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:__future__", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['annotations']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:ast", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:pathlib", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Path']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:typing", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Literal', 'Optional']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.actions.action", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Action']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.utils.common", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['OutputParser', 'aread', 'awrite']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.utils.pycst", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['merge_docstring']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:__name__:__main__", "target": "{\"lineno\":215,\"end_lineno\":218,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:ast.Constant:\n@Time : 2023-12-12\n@Author : mashenquan\n@File : fix_bug.py\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023-12-12\\n@Author : mashenquan\\n@File : fix_bug.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:module:metagpt.actions", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:names:['Action']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:QUESTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:QUESTIONS", "target": "{\"lineno\":11,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:ast.Constant:\n@Time : 2023/9/19 15:02\n@Author : DevXiaolan\n@File : prepare_interview.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/19 15:02\\n@Author : DevXiaolan\\n@File : prepare_interview.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:module:metagpt.actions.action_node", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:names:['ActionNode']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_requirements", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_pytest", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_dependencies", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":29,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT", "target": "{\"lineno\":51,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEMPLATE_CONTEXT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : run_code.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\n the understanding for the LLM.\n 2. Fix bug: Add the \"install dependency\" operation.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\n (code files, unit test files, log files) from using the message to using the file name.\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\n class.\n", "target": "{\"lineno\":3,\"end_lineno\":17,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : run_code.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\\n the understanding for the LLM.\\n 2. Fix bug: Add the \\\"install dependency\\\" operation.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\\n (code files, unit test files, log files) from using the message to using the file name.\\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\\n class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:subprocess", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:pathlib", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Path']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:typing", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Tuple']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:pydantic", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Field']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.actions.action", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Action']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.logs", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['logger']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.schema", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['RunCodeContext', 'RunCodeResult']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['handle_exception']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:main", "target": "{\"lineno\":584,\"end_lineno\":585,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REVIEW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REVIEW", "target": "{\"lineno\":13,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_RESULT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS", "target": "{\"lineno\":31,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEXT_STEPS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT", "target": "{\"lineno\":63,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_DRAFT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION", "target": "{\"lineno\":71,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_FUNCTION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE", "target": "{\"lineno\":83,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT", "target": "{\"lineno\":97,\"end_lineno\":416,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT", "target": "{\"lineno\":419,\"end_lineno\":489,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SMALLEST_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE", "target": "{\"lineno\":492,\"end_lineno\":554,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE", "target": "{\"lineno\":557,\"end_lineno\":557,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE", "target": "{\"lineno\":558,\"end_lineno\":558,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3", "target": "{\"lineno\":561,\"end_lineno\":573,\"type_name\":\"ast.Assign\",\"tokens\":[\"CR_FOR_MOVE_FUNCTION_BY_3\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:asyncio", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['List', 'Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions.action_node", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['ActionNode']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:__name__:__main__", "target": "{\"lineno\":588,\"end_lineno\":589,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : talk_action.py\n@Desc : Act as it\u2019s a talk\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : talk_action.py\\n@Desc : Act as it\u2019s a talk\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.actions", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.schema", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Message']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['Dict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.actions", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['Action']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.prompts.tutorial_assistant", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['CONTENT_PROMPT', 'DIRECTORY_PROMPT']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.utils.common", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['OutputParser']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:module:metagpt.actions.action", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:QUESTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:QUESTIONS", "target": "{\"lineno\":9,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:ast.Constant:\n@File : generate_questions.py\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : generate_questions.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:module:metagpt.actions", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:names:['Action']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:module:metagpt.actions.action_node", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:names:['ActionNode']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : prepare_documents.py\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\n RFC 135 2.2.3.5.1.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : prepare_documents.py\\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\\n RFC 135 2.2.3.5.1.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:shutil", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Optional']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['REQUIREMENT_FILENAME']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['FileRepository']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['GitRepository']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['ProjectRepo']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM", "target": "{\"lineno\":18,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM_EN_US\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT", "target": "{\"lineno\":43,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM", "target": "{\"lineno\":59,\"end_lineno\":79,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT", "target": "{\"lineno\":81,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD", "target": "{\"lineno\":92,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_FOOD\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:ast.Constant:\n@Time : 2023/5/23 17:26\n@Author : alexanderwu\n@File : search_google.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:26\\n@Author : alexanderwu\\n@File : search_google.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"pydantic\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['model_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['SearchEngine']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE", "target": "{\"lineno\":21,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION", "target": "{\"lineno\":36,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_AND_INSTRUCTION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE", "target": "{\"lineno\":58,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE", "target": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code_review.py\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\n WriteCode object, rather than passing them in when calling the run function.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code_review.py\\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\\n WriteCode object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:tenacity", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['WriteCode']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.actions.action", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.const", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['REQUIREMENT_FILENAME']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CodingContext']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CodeParser']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : write_teaching_plan.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : write_teaching_plan.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/project_management_an.py", "target": "metagpt/actions/project_management_an.py:main"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:main", "target": "{\"lineno\":124,\"end_lineno\":128,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_PYTHON_PACKAGES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES", "target": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_OTHER_LANGUAGE_PACKAGES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS", "target": "{\"lineno\":27,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS", "target": "{\"lineno\":38,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:TASK_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:TASK_LIST", "target": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST", "target": "{\"lineno\":59,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TASK_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:FULL_API_SPEC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:FULL_API_SPEC", "target": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"FULL_API_SPEC\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE", "target": "{\"lineno\":76,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE", "target": "{\"lineno\":83,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM", "target": "{\"lineno\":93,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR_PM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:NODES", "target": "{\"lineno\":100,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_NODES", "target": "{\"lineno\":110,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:PM_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:PM_NODE", "target": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"PM_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_PM_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_PM_NODE", "target": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PM_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:ast.Constant:\n@Time : 2023/12/14 15:28\n@Author : alexanderwu\n@File : project_management_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 15:28\\n@Author : alexanderwu\\n@File : project_management_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:__name__:__main__", "target": "{\"lineno\":131,\"end_lineno\":132,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_update_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_update_requirements", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":23,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:ast.Constant:\n@Time : 2023/5/11 19:12\n@Author : alexanderwu\n@File : project_management.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:12\\n@Author : alexanderwu\\n@File : project_management.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:json", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.action", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Action']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.action_output", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['ActionOutput']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['PM_NODE', 'REFINED_PM_NODE']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.const", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['PACKAGE_REQUIREMENTS_FILENAME']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.schema", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Document', 'Documents']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_get_children_mapping", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_get_self_mapping", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_create_children_class", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_to_dict", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_compile_f", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_aask_v1", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:dict_to_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:dict_to_markdown", "target": "{\"lineno\":115,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"dict_to_markdown\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:TAG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:TAG", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"TAG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE_CONSTRAINT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_CONSTRAINT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE", "target": "{\"lineno\":43,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"SIMPLE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:REVIEW_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:REVIEW_TEMPLATE", "target": "{\"lineno\":62,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:REVISE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:REVISE_TEMPLATE", "target": "{\"lineno\":92,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVISE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ast.Constant:\n@Time : 2023/12/11 18:45\n@Author : alexanderwu\n@File : action_node.py\n\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/11 18:45\\n@Author : alexanderwu\\n@File : action_node.py\\n\\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:enum", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['Enum']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['Any', 'Dict', 'List', 'Optional', 'Tuple', 'Type', 'Union']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:pydantic", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['BaseModel', 'Field', 'create_model', 'model_validator']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:tenacity", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.actions.action_outcls_registry", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['register_action_outcls']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.llm", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['BaseLLM']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.provider.postprocess.llm_output_postprocess", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['llm_output_postprocess']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.utils.common", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['OutputParser', 'general_after_log']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.utils.human_interaction", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['HumanInteraction']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE", "target": "{\"lineno\":16,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT", "target": "{\"lineno\":111,\"end_lineno\":126,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE", "target": "{\"lineno\":128,\"end_lineno\":180,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE", "target": "{\"lineno\":182,\"end_lineno\":182,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_PLAN_AND_CHANGE_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:ast.Constant:\n@Time : 2023/12/26\n@Author : mannaandpoem\n@File : write_code_plan_and_change_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/26\\n@Author : mannaandpoem\\n@File : write_code_plan_and_change_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['Action']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['ActionNode']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.schema", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['CodePlanAndChangeContext']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:ast.Constant:\n@Time : 2023/5/11 19:31\n@Author : alexanderwu\n@File : design_api_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:31\\n@Author : alexanderwu\\n@File : design_api_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:module:metagpt.actions.action", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 18:10:20\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Actions of the invoice ocr assistant.\n", "target": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 18:10:20\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Actions of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:os", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:zipfile", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"zipfile\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:datetime", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['datetime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:pandas as pd", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:paddleocr", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['PaddleOCR']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.actions", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Action']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['INVOICE_OCR_TABLE_PATH']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.logs", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['logger']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.prompts.invoice_ocr", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['EXTRACT_OCR_MAIN_INFO_PROMPT', 'REPLY_OCR_QUESTION_PROMPT']", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.common", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['OutputParser']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.file", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['File']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/ci/write_analysis_code.py", "target": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode"}, {"predicate": "has_class", "source": "metagpt/actions/ci/write_analysis_code.py", "target": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithoutTools"}, {"predicate": "has_class", "source": "metagpt/actions/ci/write_analysis_code.py", "target": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode", "target": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode:insert_system_message"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode", "target": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode", "target": "{\"lineno\":25,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseWriteAnalysisCode\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode:insert_system_message", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:BaseWriteAnalysisCode:run", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithoutTools", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithoutTools", "target": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithoutTools:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithoutTools", "target": "{\"lineno\":47,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeWithoutTools\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithoutTools:run", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools", "target": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_get_tools_by_type"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools", "target": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_recommend_tool"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools", "target": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_prepare_tools"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools", "target": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools", "target": "{\"lineno\":56,\"end_lineno\":155,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeWithTools\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_get_tools_by_type", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_recommend_tool", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:_prepare_tools", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/write_analysis_code.py:WriteCodeWithTools:run", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:ast.Constant:\n@Date : 2023/11/20 13:19:39\n@Author : orange-crow\n@File : write_analysis_code.py\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Date : 2023/11/20 13:19:39\\n@Author : orange-crow\\n@File : write_analysis_code.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:__future__", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['annotations']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['Tuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.actions", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.prompts.ci.write_analysis_code", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"CODE_GENERATOR_WITH_TOOLS\",\"SELECT_FUNCTION_TOOLS\",\"TOOL_RECOMMENDATION_PROMPT\",\"TOOL_USAGE_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['CODE_GENERATOR_WITH_TOOLS', 'SELECT_FUNCTION_TOOLS', 'TOOL_RECOMMENDATION_PROMPT', 'TOOL_USAGE_PROMPT']", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"CODE_GENERATOR_WITH_TOOLS\",\"SELECT_FUNCTION_TOOLS\",\"TOOL_RECOMMENDATION_PROMPT\",\"TOOL_USAGE_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.schema", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"SystemMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['Message', 'Plan', 'SystemMessage']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"SystemMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.tools", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"TOOL_REGISTRY\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['TOOL_REGISTRY']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"TOOL_REGISTRY\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.tools.tool_registry", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"validate_tool_names\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['validate_tool_names']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.tool_registry\",\"names\":[\"validate_tool_names\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:module:metagpt.utils.common", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_analysis_code.py:names:['create_func_call_config']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\"]}}"}, {"predicate": "is", "source": "metagpt/actions/ci/write_plan.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/ci/write_plan.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/ci/write_plan.py", "target": "metagpt/actions/ci/write_plan.py:WritePlan"}, {"predicate": "has_function", "source": "metagpt/actions/ci/write_plan.py", "target": "metagpt/actions/ci/write_plan.py:rsp_to_tasks"}, {"predicate": "has_function", "source": "metagpt/actions/ci/write_plan.py", "target": "metagpt/actions/ci/write_plan.py:update_plan_from_rsp"}, {"predicate": "has_function", "source": "metagpt/actions/ci/write_plan.py", "target": "metagpt/actions/ci/write_plan.py:precheck_update_plan_from_rsp"}, {"predicate": "is", "source": "metagpt/actions/ci/write_plan.py:WritePlan", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_plan.py:WritePlan", "target": "metagpt/actions/ci/write_plan.py:WritePlan:assign_task_type"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/write_plan.py:WritePlan", "target": "metagpt/actions/ci/write_plan.py:WritePlan:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:WritePlan", "target": "{\"lineno\":24,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePlan\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/write_plan.py:WritePlan:assign_task_type", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/write_plan.py:WritePlan:run", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/write_plan.py:rsp_to_tasks", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:rsp_to_tasks", "target": "{\"lineno\":82,\"end_lineno\":85,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"rsp_to_tasks\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/write_plan.py:update_plan_from_rsp", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:update_plan_from_rsp", "target": "{\"lineno\":88,\"end_lineno\":107,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"update_plan_from_rsp\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/write_plan.py:precheck_update_plan_from_rsp", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:precheck_update_plan_from_rsp", "target": "{\"lineno\":110,\"end_lineno\":116,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"precheck_update_plan_from_rsp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:ast.Constant:\n@Date : 2023/11/20 11:24:03\n@Author : orange-crow\n@File : plan.py\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Date : 2023/11/20 11:24:03\\n@Author : orange-crow\\n@File : plan.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:__future__", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['annotations']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:json", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:copy", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['deepcopy']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['Tuple']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:metagpt.prompts.ci.write_analysis_code", "target": "{\"lineno\":15,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"ASSIGN_TASK_TYPE_CONFIG\",\"ASSIGN_TASK_TYPE_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['ASSIGN_TASK_TYPE_CONFIG', 'ASSIGN_TASK_TYPE_PROMPT']", "target": "{\"lineno\":15,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"ASSIGN_TASK_TYPE_CONFIG\",\"ASSIGN_TASK_TYPE_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:metagpt.schema", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"Task\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['Message', 'Plan', 'Task']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"Task\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:metagpt.tools", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"TOOL_REGISTRY\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['TOOL_REGISTRY']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"TOOL_REGISTRY\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:module:metagpt.utils.common", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\",\"create_func_call_config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/write_plan.py:names:['CodeParser', 'create_func_call_config']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\",\"create_func_call_config\"]}}"}, {"predicate": "is", "source": "metagpt/actions/ci/ask_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/ci/ask_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/ci/ask_review.py", "target": "metagpt/actions/ci/ask_review.py:ReviewConst"}, {"predicate": "has_class", "source": "metagpt/actions/ci/ask_review.py", "target": "metagpt/actions/ci/ask_review.py:AskReview"}, {"predicate": "is", "source": "metagpt/actions/ci/ask_review.py:ReviewConst", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:ReviewConst", "target": "{\"lineno\":10,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviewConst\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/ask_review.py:AskReview", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/ask_review.py:AskReview", "target": "metagpt/actions/ci/ask_review.py:AskReview:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:AskReview", "target": "{\"lineno\":27,\"end_lineno\":62,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AskReview\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/ask_review.py:AskReview:run", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:module:typing", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:names:['Tuple']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:module:metagpt.actions", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:names:['Action']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:module:metagpt.logs", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:names:['logger']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:module:metagpt.schema", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ask_review.py:names:['Message', 'Plan']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\"]}}"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/ci/execute_nb_code.py", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode"}, {"predicate": "has_function", "source": "metagpt/actions/ci/execute_nb_code.py", "target": "metagpt/actions/ci/execute_nb_code.py:truncate"}, {"predicate": "has_function", "source": "metagpt/actions/ci/execute_nb_code.py", "target": "metagpt/actions/ci/execute_nb_code.py:remove_escape_and_color_codes"}, {"predicate": "has_function", "source": "metagpt/actions/ci/execute_nb_code.py", "target": "metagpt/actions/ci/execute_nb_code.py:display_markdown"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:__init__"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:build"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:terminate"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:reset"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_code_cell"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_markdown_cell"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:_display"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_output_to_cell"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:parse_outputs"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:show_bytes_figure"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:is_ipython"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:run_cell"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode", "target": "{\"lineno\":31,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteNbCode\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:build", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:terminate", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:reset", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_code_cell", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_markdown_cell", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:_display", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:add_output_to_cell", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:parse_outputs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:show_bytes_figure", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:is_ipython", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:run_cell", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:ExecuteNbCode:run", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:truncate", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:truncate", "target": "{\"lineno\":199,\"end_lineno\":214,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"truncate\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:remove_escape_and_color_codes", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:remove_escape_and_color_codes", "target": "{\"lineno\":217,\"end_lineno\":221,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"remove_escape_and_color_codes\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/execute_nb_code.py:display_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:display_markdown", "target": "{\"lineno\":224,\"end_lineno\":249,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"display_markdown\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:ast.Constant:\n@Date : 2023/11/17 14:22:15\n@Author : orange-crow\n@File : execute_nb_code.py\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Date : 2023/11/17 14:22:15\\n@Author : orange-crow\\n@File : execute_nb_code.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:__future__", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['annotations']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:asyncio", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:base64", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:traceback", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['Literal', 'Tuple']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:nbformat", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"nbformat\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:nbclient", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbclient\",\"names\":[\"NotebookClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['NotebookClient']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbclient\",\"names\":[\"NotebookClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:nbclient.exceptions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbclient.exceptions\",\"names\":[\"CellTimeoutError\",\"DeadKernelError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['CellTimeoutError', 'DeadKernelError']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbclient.exceptions\",\"names\":[\"CellTimeoutError\",\"DeadKernelError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:nbformat", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbformat\",\"names\":[\"NotebookNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['NotebookNode']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbformat\",\"names\":[\"NotebookNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:nbformat.v4", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbformat.v4\",\"names\":[\"new_code_cell\",\"new_markdown_cell\",\"new_output\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['new_code_cell', 'new_markdown_cell', 'new_output']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"nbformat.v4\",\"names\":[\"new_code_cell\",\"new_markdown_cell\",\"new_output\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:rich.box", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.box\",\"names\":[\"MINIMAL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['MINIMAL']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.box\",\"names\":[\"MINIMAL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:rich.console", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.console\",\"names\":[\"Console\",\"Group\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['Console', 'Group']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.console\",\"names\":[\"Console\",\"Group\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:rich.live", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.live\",\"names\":[\"Live\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['Live']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.live\",\"names\":[\"Live\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:rich.markdown", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.markdown\",\"names\":[\"Markdown\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['Markdown']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.markdown\",\"names\":[\"Markdown\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:rich.panel", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.panel\",\"names\":[\"Panel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['Panel']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.panel\",\"names\":[\"Panel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:rich.syntax", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.syntax\",\"names\":[\"Syntax\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['Syntax']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"rich.syntax\",\"names\":[\"Syntax\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:metagpt.actions", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['Action']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:module:metagpt.logs", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/execute_nb_code.py:names:['logger']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/actions/ci/ml_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/ci/ml_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/ci/ml_action.py", "target": "metagpt/actions/ci/ml_action.py:WriteCodeWithToolsML"}, {"predicate": "has_class", "source": "metagpt/actions/ci/ml_action.py", "target": "metagpt/actions/ci/ml_action.py:UpdateDataColumns"}, {"predicate": "is", "source": "metagpt/actions/ci/ml_action.py:WriteCodeWithToolsML", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/ml_action.py:WriteCodeWithToolsML", "target": "metagpt/actions/ci/ml_action.py:WriteCodeWithToolsML:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:WriteCodeWithToolsML", "target": "{\"lineno\":18,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeWithToolsML\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/ml_action.py:WriteCodeWithToolsML:run", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/ml_action.py:UpdateDataColumns", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/ml_action.py:UpdateDataColumns", "target": "metagpt/actions/ci/ml_action.py:UpdateDataColumns:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:UpdateDataColumns", "target": "{\"lineno\":62,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UpdateDataColumns\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/ml_action.py:UpdateDataColumns:run", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:module:typing", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:names:['Tuple']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:module:metagpt.actions", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:names:['Action']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:module:metagpt.actions.ci.write_analysis_code", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithTools\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:names:['WriteCodeWithTools']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"WriteCodeWithTools\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:module:metagpt.prompts.ci.ml_action", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.ml_action\",\"names\":[\"ML_GENERATE_CODE_PROMPT\",\"ML_TOOL_USAGE_PROMPT\",\"PRINT_DATA_COLUMNS\",\"UPDATE_DATA_COLUMNS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:names:['ML_GENERATE_CODE_PROMPT', 'ML_TOOL_USAGE_PROMPT', 'PRINT_DATA_COLUMNS', 'UPDATE_DATA_COLUMNS']", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.ml_action\",\"names\":[\"ML_GENERATE_CODE_PROMPT\",\"ML_TOOL_USAGE_PROMPT\",\"PRINT_DATA_COLUMNS\",\"UPDATE_DATA_COLUMNS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:module:metagpt.prompts.ci.write_analysis_code", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"CODE_GENERATOR_WITH_TOOLS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:names:['CODE_GENERATOR_WITH_TOOLS']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.ci.write_analysis_code\",\"names\":[\"CODE_GENERATOR_WITH_TOOLS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:module:metagpt.schema", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:names:['Message', 'Plan']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:module:metagpt.utils.common", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\",\"remove_comments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/ml_action.py:names:['create_func_call_config', 'remove_comments']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\",\"remove_comments\"]}}"}, {"predicate": "is", "source": "metagpt/actions/ci/debug_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/ci/debug_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/ci/debug_code.py", "target": "metagpt/actions/ci/debug_code.py:DebugCode"}, {"predicate": "is", "source": "metagpt/actions/ci/debug_code.py:DebugCode", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/actions/ci/debug_code.py:DebugCode", "target": "metagpt/actions/ci/debug_code.py:DebugCode:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:DebugCode", "target": "{\"lineno\":75,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugCode\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/debug_code.py:DebugCode:run", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/ci/debug_code.py:DEBUG_REFLECTION_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:DEBUG_REFLECTION_EXAMPLE", "target": "{\"lineno\":8,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEBUG_REFLECTION_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/debug_code.py:REFLECTION_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:REFLECTION_PROMPT", "target": "{\"lineno\":39,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFLECTION_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/ci/debug_code.py:CODE_REFLECTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:CODE_REFLECTION", "target": "{\"lineno\":55,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REFLECTION\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:module:metagpt.actions.ci.write_analysis_code", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"BaseWriteAnalysisCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:names:['BaseWriteAnalysisCode']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_analysis_code\",\"names\":[\"BaseWriteAnalysisCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:module:metagpt.logs", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:names:['logger']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:module:metagpt.schema", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:names:['Message']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:module:metagpt.utils.common", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/ci/debug_code.py:names:['create_func_call_config']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"create_func_call_config\"]}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/sales.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:SALES_ASSISTANT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:SALES_ASSISTANT", "target": "{\"lineno\":10,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES_ASSISTANT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:SALES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:SALES", "target": "{\"lineno\":33,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:conversation_stages", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:conversation_stages", "target": "{\"lineno\":57,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"conversation_stages\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:ast.Constant:\n@Time : 2023/5/8 15:29\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 15:29\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/prompts/__init__.py:ast.Constant:\n@Time : 2023/5/30 09:51\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/30 09:51\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tool_types.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/tool_types.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/tool_types.py:DATA_PREPROCESS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tool_types.py:DATA_PREPROCESS_PROMPT", "target": "{\"lineno\":2,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PREPROCESS_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tool_types.py:FEATURE_ENGINEERING_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tool_types.py:FEATURE_ENGINEERING_PROMPT", "target": "{\"lineno\":14,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"FEATURE_ENGINEERING_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tool_types.py:MODEL_TRAIN_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tool_types.py:MODEL_TRAIN_PROMPT", "target": "{\"lineno\":26,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_TRAIN_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tool_types.py:MODEL_EVALUATE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tool_types.py:MODEL_EVALUATE_PROMPT", "target": "{\"lineno\":35,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_EVALUATE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tool_types.py:IMAGE2WEBPAGE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tool_types.py:IMAGE2WEBPAGE_PROMPT", "target": "{\"lineno\":42,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMAGE2WEBPAGE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT", "target": "{\"lineno\":11,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2", "target": "{\"lineno\":28,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_2\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3", "target": "{\"lineno\":43,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_3\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4", "target": "{\"lineno\":57,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_4\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5", "target": "{\"lineno\":72,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_5\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:ast.Constant:\n@Time : 2023/6/19 23:07\n@Author : alexanderwu\n@File : summarize.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/19 23:07\\n@Author : alexanderwu\\n@File : summarize.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE", "target": "{\"lineno\":9,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_SAMPLE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/metagpt_sample.py:ast.Constant:\n@Time : 2023/6/7 20:29\n@Author : alexanderwu\n@File : metagpt_sample.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/7 20:29\\n@Author : alexanderwu\\n@File : metagpt_sample.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT", "target": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT", "target": "{\"lineno\":15,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"DIRECTORY_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT", "target": "{\"lineno\":27,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTENT_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Tutorial Assistant's prompt templates.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Tutorial Assistant's prompt templates.\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT", "target": "{\"lineno\":13,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT", "target": "{\"lineno\":29,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"REPLY_OCR_QUESTION_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_SUCCESS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 16:30:25\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Prompts of the invoice ocr assistant.\n", "target": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 16:30:25\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Prompts of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/write_analysis_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/ci/write_analysis_code.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/ci/write_analysis_code.py:ASSIGN_TASK_TYPE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/write_analysis_code.py:ASSIGN_TASK_TYPE_PROMPT", "target": "{\"lineno\":1,\"end_lineno\":7,\"type_name\":\"ast.Assign\",\"tokens\":[\"ASSIGN_TASK_TYPE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/write_analysis_code.py:ASSIGN_TASK_TYPE_CONFIG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/write_analysis_code.py:ASSIGN_TASK_TYPE_CONFIG", "target": "{\"lineno\":9,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"ASSIGN_TASK_TYPE_CONFIG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/write_analysis_code.py:TOOL_RECOMMENDATION_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/write_analysis_code.py:TOOL_RECOMMENDATION_PROMPT", "target": "{\"lineno\":27,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_RECOMMENDATION_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/write_analysis_code.py:SELECT_FUNCTION_TOOLS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/write_analysis_code.py:SELECT_FUNCTION_TOOLS", "target": "{\"lineno\":44,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"SELECT_FUNCTION_TOOLS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/write_analysis_code.py:CODE_GENERATOR_WITH_TOOLS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/write_analysis_code.py:CODE_GENERATOR_WITH_TOOLS", "target": "{\"lineno\":62,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_GENERATOR_WITH_TOOLS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/write_analysis_code.py:TOOL_USAGE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/write_analysis_code.py:TOOL_USAGE_PROMPT", "target": "{\"lineno\":77,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOOL_USAGE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py:UPDATE_DATA_COLUMNS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/ml_action.py:UPDATE_DATA_COLUMNS", "target": "{\"lineno\":7,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"UPDATE_DATA_COLUMNS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py:PRINT_DATA_COLUMNS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/ml_action.py:PRINT_DATA_COLUMNS", "target": "{\"lineno\":30,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRINT_DATA_COLUMNS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py:ML_COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/ml_action.py:ML_COMMON_PROMPT", "target": "{\"lineno\":45,\"end_lineno\":64,\"type_name\":\"ast.Assign\",\"tokens\":[\"ML_COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py:USE_NO_TOOLS_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/ml_action.py:USE_NO_TOOLS_EXAMPLE", "target": "{\"lineno\":66,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"USE_NO_TOOLS_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py:USE_TOOLS_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/ml_action.py:USE_TOOLS_EXAMPLE", "target": "{\"lineno\":88,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"USE_TOOLS_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py:ML_GENERATE_CODE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/ml_action.py:ML_GENERATE_CODE_PROMPT", "target": "{\"lineno\":127,\"end_lineno\":127,\"type_name\":\"ast.Assign\",\"tokens\":[\"ML_GENERATE_CODE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/ci/ml_action.py:ML_TOOL_USAGE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/ci/ml_action.py:ML_TOOL_USAGE_PROMPT", "target": "{\"lineno\":128,\"end_lineno\":128,\"type_name\":\"ast.Assign\",\"tokens\":[\"ML_TOOL_USAGE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/environment/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:__all__", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:module:metagpt.environment.base_env", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:names:['Environment']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:module:metagpt.environment.android_env.android_env", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.android_env\",\"names\":[\"AndroidEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:names:['AndroidEnv']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.android_env\",\"names\":[\"AndroidEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:module:metagpt.environment.mincraft_env.mincraft_env", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.mincraft_env\",\"names\":[\"MincraftExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:names:['MincraftExtEnv']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.mincraft_env\",\"names\":[\"MincraftExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:module:metagpt.environment.werewolf_env.werewolf_env", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.werewolf_env.werewolf_env\",\"names\":[\"WerewolfEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:names:['WerewolfEnv']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.werewolf_env.werewolf_env\",\"names\":[\"WerewolfEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:module:metagpt.environment.stanford_town_env.stanford_town_env", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.stanford_town_env.stanford_town_env\",\"names\":[\"StanfordTownEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:names:['StanfordTownEnv']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.stanford_town_env.stanford_town_env\",\"names\":[\"StanfordTownEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:module:metagpt.environment.software_env.software_env", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.software_env.software_env\",\"names\":[\"SoftwareEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/__init__.py:names:['SoftwareEnv']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.software_env.software_env\",\"names\":[\"SoftwareEnv\"]}}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:ExtEnv:_check_api_exist", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:mark_as_readable", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:mark_as_readable", "target": "{\"lineno\":37,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"mark_as_readable\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:mark_as_writeable", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:mark_as_writeable", "target": "{\"lineno\":43,\"end_lineno\":46,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"mark_as_writeable\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:env_write_api_registry", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:env_write_api_registry", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.Assign\",\"tokens\":[\"env_write_api_registry\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/base_env.py:env_read_api_registry", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:env_read_api_registry", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"env_read_api_registry\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:module:enum", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:names:['Enum']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"TYPE_CHECKING\",\"Any\",\"Dict\",\"Iterable\",\"Optional\",\"Set\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:names:['TYPE_CHECKING', 'Any', 'Dict', 'Iterable', 'Optional', 'Set', 'Union']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"TYPE_CHECKING\",\"Any\",\"Dict\",\"Iterable\",\"Optional\",\"Set\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:module:metagpt.environment.api.env_api", "target": "{\"lineno\":12,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.api.env_api\",\"names\":[\"EnvAPIAbstract\",\"ReadAPIRegistry\",\"WriteAPIRegistry\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:names:['EnvAPIAbstract', 'ReadAPIRegistry', 'WriteAPIRegistry']", "target": "{\"lineno\":12,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.api.env_api\",\"names\":[\"EnvAPIAbstract\",\"ReadAPIRegistry\",\"WriteAPIRegistry\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"get_function_schema\",\"is_coroutine_func\",\"is_send_to\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:names:['get_function_schema', 'is_coroutine_func', 'is_send_to']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"get_function_schema\",\"is_coroutine_func\",\"is_send_to\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:TYPE_CHECKING", "target": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.If\",\"tokens\":[\"TYPE_CHECKING\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/base_env.py:ast.Call:Environment.model_rebuild", "target": "{\"lineno\":212,\"end_lineno\":212,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Call\",\"Environment.model_rebuild\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/android_env/android_ext_env.py:AndroidExtEnv:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:subprocess", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:module:pathlib", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:names:['Path']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:names:['Any', 'Optional']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:names:['Field']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:module:metagpt.environment.android_env.const", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.const\",\"names\":[\"ADB_EXEC_FAIL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:names:['ADB_EXEC_FAIL']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.const\",\"names\":[\"ADB_EXEC_FAIL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_readable\",\"mark_as_writeable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_ext_env.py:names:['ExtEnv', 'mark_as_readable', 'mark_as_writeable']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_readable\",\"mark_as_writeable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_env.py:module:pydantic", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_env.py:names:['Field']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_env.py:module:metagpt.environment.android_env.android_ext_env", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.android_ext_env\",\"names\":[\"AndroidExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_env.py:names:['AndroidExtEnv']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.android_env.android_ext_env\",\"names\":[\"AndroidExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/android_env.py:names:['Environment']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "is", "source": "metagpt/environment/android_env/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/android_env/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/environment/android_env/const.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/android_env/const.py", "target": "python"}, {"predicate": "is", "source": "metagpt/environment/android_env/const.py:ADB_EXEC_FAIL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/android_env/const.py:ADB_EXEC_FAIL", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"ADB_EXEC_FAIL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:StanfordTownExtEnv:_init_maze", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:math", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"math\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:pathlib", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['Path']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['Optional', 'Tuple']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_readable\",\"mark_as_writeable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['ExtEnv', 'mark_as_readable', 'mark_as_writeable']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_readable\",\"mark_as_writeable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:module:metagpt.utils.common", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"read_csv_to_list\",\"read_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_ext_env.py:names:['read_csv_to_list', 'read_json_file']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"read_csv_to_list\",\"read_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/stanford_town_env/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:names:['Environment']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:module:metagpt.environment.stanford_town_env.stanford_town_ext_env", "target": "{\"lineno\":6,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.stanford_town_env.stanford_town_ext_env\",\"names\":[\"StanfordTownExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/stanford_town_env/stanford_town_env.py:names:['StanfordTownExtEnv']", "target": "{\"lineno\":6,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.stanford_town_env.stanford_town_ext_env\",\"names\":[\"StanfordTownExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:module:pydantic", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:names:['Field']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:names:['Environment']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:module:metagpt.environment.werewolf_env.werewolf_ext_env", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.werewolf_env.werewolf_ext_env\",\"names\":[\"WerewolfExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:names:['WerewolfExtEnv']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.werewolf_env.werewolf_ext_env\",\"names\":[\"WerewolfExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:module:metagpt.logs", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:names:['logger']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:module:metagpt.schema", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_env.py:names:['Message']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_role_type_players", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_init_players_state", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_update_players_state", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_check_valid_role", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:WerewolfExtEnv:_check_player_continue", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:STEP_INSTRUCTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:STEP_INSTRUCTIONS", "target": "{\"lineno\":24,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"STEP_INSTRUCTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:random", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"random\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:collections", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"Counter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['Counter']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"Counter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:enum", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['Enum']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['Callable', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['ConfigDict', 'Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_readable\",\"mark_as_writeable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['ExtEnv', 'mark_as_readable', 'mark_as_writeable']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_readable\",\"mark_as_writeable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/werewolf_env/werewolf_ext_env.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__getitem__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__setitem__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/api/env_api.py:EnvAPIRegistry:__len__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/environment/api/env_api.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/api/env_api.py:names:['Any', 'Callable', 'Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/api/env_api.py:module:pydantic", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/api/env_api.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "is", "source": "metagpt/environment/api/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/api/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:re", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:time", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['Any', 'Iterable']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:langchain.embeddings.openai", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings.openai\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings.openai\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:langchain.vectorstores", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"Chroma\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['Chroma']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"Chroma\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['ConfigDict', 'Field']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.config2", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config as CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['config as CONFIG']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config as CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['Environment']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.environment.mincraft_env.const", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.const\",\"names\":[\"MC_CKPT_DIR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['MC_CKPT_DIR']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.const\",\"names\":[\"MC_CKPT_DIR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.environment.mincraft_env.mincraft_ext_env", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.mincraft_ext_env\",\"names\":[\"MincraftExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['MincraftExtEnv']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.mincraft_ext_env\",\"names\":[\"MincraftExtEnv\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:module:metagpt.utils.common", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"load_mc_skills_code\",\"read_json_file\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_env.py:names:['load_mc_skills_code', 'read_json_file', 'write_json_file']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"load_mc_skills_code\",\"read_json_file\",\"write_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/process_monitor.py:SubprocessMonitor:_start", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:re", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:subprocess", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:threading", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:warnings", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:names:['List']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:psutil", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"psutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"define_log_level\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/process_monitor.py:names:['define_log_level']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"define_log_level\"]}}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:MincraftExtEnv:_post_init_ext_env", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:time", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:requests", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_writeable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['ExtEnv', 'mark_as_writeable']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"ExtEnv\",\"mark_as_writeable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:metagpt.environment.mincraft_env.const", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.const\",\"names\":[\"MC_CKPT_DIR\",\"MC_CORE_INVENTORY_ITEMS\",\"MC_CURRICULUM_OB\",\"MC_DEFAULT_WARMUP\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['MC_CKPT_DIR', 'MC_CORE_INVENTORY_ITEMS', 'MC_CURRICULUM_OB', 'MC_DEFAULT_WARMUP', 'METAGPT_ROOT']", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.const\",\"names\":[\"MC_CKPT_DIR\",\"MC_CORE_INVENTORY_ITEMS\",\"MC_CURRICULUM_OB\",\"MC_DEFAULT_WARMUP\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:metagpt.environment.mincraft_env.process_monitor", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.process_monitor\",\"names\":[\"SubprocessMonitor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['SubprocessMonitor']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.mincraft_env.process_monitor\",\"names\":[\"SubprocessMonitor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:module:metagpt.logs", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/mincraft_ext_env.py:names:['logger']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/const.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/const.py", "target": "python"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/const.py:MC_CKPT_DIR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/const.py:MC_CKPT_DIR", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_CKPT_DIR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/const.py:MC_LOG_DIR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/const.py:MC_LOG_DIR", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_LOG_DIR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/const.py:MC_DEFAULT_WARMUP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/const.py:MC_DEFAULT_WARMUP", "target": "{\"lineno\":10,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_DEFAULT_WARMUP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/const.py:MC_CURRICULUM_OB", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/const.py:MC_CURRICULUM_OB", "target": "{\"lineno\":27,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_CURRICULUM_OB\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/mincraft_env/const.py:MC_CORE_INVENTORY_ITEMS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/const.py:MC_CORE_INVENTORY_ITEMS", "target": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MC_CORE_INVENTORY_ITEMS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/const.py:module:metagpt.const", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/const.py:names:['METAGPT_ROOT']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/mincraft_env/const.py:ast.Tuple:['|cobblestone|dirt|coal|.*_pickaxe|.*_sword|.*_axe']", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Tuple\",[\"|cobblestone|dirt|coal|.*_pickaxe|.*_sword|.*_axe\"]],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/environment/software_env/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment/software_env/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/environment/software_env/software_env.py:module:metagpt.environment.base_env", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment/software_env/software_env.py:names:['Environment']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment.base_env\",\"names\":[\"Environment\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:Planner:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/planner.py:STRUCTURAL_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:STRUCTURAL_CONTEXT", "target": "{\"lineno\":17,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRUCTURAL_CONTEXT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:json", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:module:pydantic", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:module:metagpt.actions.ci.ask_review", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ask_review\",\"names\":[\"AskReview\",\"ReviewConst\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:names:['AskReview', 'ReviewConst']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.ask_review\",\"names\":[\"AskReview\",\"ReviewConst\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:module:metagpt.actions.ci.write_plan", "target": "{\"lineno\":8,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_plan\",\"names\":[\"WritePlan\",\"precheck_update_plan_from_rsp\",\"update_plan_from_rsp\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:names:['WritePlan', 'precheck_update_plan_from_rsp', 'update_plan_from_rsp']", "target": "{\"lineno\":8,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.ci.write_plan\",\"names\":[\"WritePlan\",\"precheck_update_plan_from_rsp\",\"update_plan_from_rsp\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:module:metagpt.memory", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:names:['Memory']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"Task\",\"TaskResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/planner.py:names:['Message', 'Plan', 'Task', 'TaskResult']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"Plan\",\"Task\",\"TaskResult\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/solver.py:BaseSolver:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:ast.Constant:\n@Time : 2024/1/30 17:13\n@Author : alexanderwu\n@File : solver.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/30 17:13\\n@Author : alexanderwu\\n@File : solver.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:module:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:names:['abstractmethod']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:module:metagpt.actions.action_graph", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_graph\",\"names\":[\"ActionGraph\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:names:['ActionGraph']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_graph\",\"names\":[\"ActionGraph\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:names:['BaseLLM']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:module:metagpt.strategy.search_space", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.search_space\",\"names\":[\"SearchSpace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/solver.py:names:['SearchSpace']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.search_space\",\"names\":[\"SearchSpace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:enum", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['Enum']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:pydantic", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:metagpt.strategy.base", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['BaseEvaluator', 'BaseParser']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:_bfs_build", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:_dfs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:OUTPUT_FORMAT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:OUTPUT_FORMAT", "target": "{\"lineno\":19,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"OUTPUT_FORMAT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:__future__", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['annotations']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:asyncio", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['Any', 'List', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['LLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.strategy.base", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['ThoughtNode', 'ThoughtTree']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.strategy.tot_schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['MethodSelect', 'Strategy', 'ThoughtSolverConfig']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['CodeParser']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/strategy/search_space.py:SearchSpace:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/strategy/search_space.py:ast.Constant:\n@Time : 2024/1/30 17:15\n@Author : alexanderwu\n@File : search_space.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/30 17:15\\n@Author : alexanderwu\\n@File : search_space.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:__call__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:__call__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:abc", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['ABC']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['List']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:anytree", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['Node', 'RenderTree']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['BaseModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}]}
\ No newline at end of file
diff --git a/tests/data/graph_db/networkx.json b/tests/data/graph_db/networkx.json
deleted file mode 100644
index 9e8c38a8f..000000000
--- a/tests/data/graph_db/networkx.json
+++ /dev/null
@@ -1 +0,0 @@
-{"directed": true, "multigraph": false, "graph": {}, "nodes": [{"id": "metagpt/schema.py"}, {"id": "source_code"}, {"id": "python"}, {"id": "metagpt/schema.py:AIMessage"}, {"id": "class"}, {"id": "metagpt/provider/general_api_base.py"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_key"}, {"id": "class_property"}, {"id": "api_key : NoneType"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_type"}, {"id": "api_type : AZURE_AD, OPEN_AI"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_version"}, {"id": "api_version"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:base_url"}, {"id": "base_url : NoneType"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:organization"}, {"id": "organization : NoneType"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest "}, {"id": "class_function"}, {"id": "arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw"}, {"id": "arequest_raw(method, url, session): aiohttp.ClientResponse"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request "}, {"id": "request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request_headers"}, {"id": "request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request_raw"}, {"id": "request_raw(method, url): requests.Response"}, {"id": "metagpt/actions/action.py"}, {"id": "metagpt/actions/action.py:Action"}, {"id": "metagpt/actions/action.py:Action:context"}, {"id": "context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, str, None]"}, {"id": "metagpt/actions/action.py:Action:desc"}, {"id": "desc : str"}, {"id": "metagpt/actions/action.py:Action:llm"}, {"id": "llm"}, {"id": "metagpt/actions/action.py:Action:model_config"}, {"id": "model_config"}, {"id": "metagpt/actions/action.py:Action:name"}, {"id": "name : str"}, {"id": "metagpt/actions/action.py:Action:node"}, {"id": "node"}, {"id": "metagpt/actions/action.py:Action:prefix"}, {"id": "prefix : str"}, {"id": "metagpt/actions/action.py:Action:run"}, {"id": "run()"}, {"id": "metagpt/actions/action.py:Action:set_name_if_empty"}, {"id": "set_name_if_empty(values)"}, {"id": "metagpt/actions/action.py:Action:set_prefix"}, {"id": "set_prefix(prefix)"}, {"id": "metagpt/actions/action_node.py"}, {"id": "metagpt/actions/action_node.py:ActionNode"}, {"id": "metagpt/actions/action_node.py:ActionNode:children"}, {"id": "children : dict[str, 'ActionNode']"}, {"id": "metagpt/actions/action_node.py:ActionNode:content"}, {"id": "content : str"}, {"id": "metagpt/actions/action_node.py:ActionNode:context"}, {"id": "context : str"}, {"id": "metagpt/actions/action_node.py:ActionNode:example"}, {"id": "example"}, {"id": "metagpt/actions/action_node.py:ActionNode:expected_type"}, {"id": "expected_type : Type"}, {"id": "metagpt/actions/action_node.py:ActionNode:instruct_content"}, {"id": "instruct_content : BaseModel"}, {"id": "metagpt/actions/action_node.py:ActionNode:instruction"}, {"id": "instruction : str"}, {"id": "metagpt/actions/action_node.py:ActionNode:key"}, {"id": "key : str"}, {"id": "metagpt/actions/action_node.py:ActionNode:llm"}, {"id": "metagpt/actions/action_node.py:ActionNode:schema"}, {"id": "schema : str"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_child"}, {"id": "add_child(node: 'ActionNode')"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_children"}, {"id": "add_children(nodes: List['ActionNode'])"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile"}, {"id": "compile(context, schema, mode, template, exclude): str"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_example"}, {"id": "compile_example(schema, mode, tag, exclude): str"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_instruction"}, {"id": "compile_instruction(schema, mode, tag, exclude): str"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_to"}, {"id": "compile_to(i: Dict, schema, kv_sep): str"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_children_class"}, {"id": "create_children_class(exclude)"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_model_class"}, {"id": "create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])"}, {"id": "metagpt/actions/action_node.py:ActionNode:fill"}, {"id": "fill(context, llm, schema, mode, strgy, timeout, exclude)"}, {"id": "metagpt/actions/action_node.py:ActionNode:from_children"}, {"id": "from_children(key, nodes: List['ActionNode'])"}, {"id": "metagpt/actions/action_node.py:ActionNode:get"}, {"id": "get(key)"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_children_mapping"}, {"id": "get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_mapping"}, {"id": "get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_self_mapping"}, {"id": "get_self_mapping(): Dict[str, Tuple[Type, Any]]"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_context"}, {"id": "set_context(context)"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_llm"}, {"id": "set_llm(llm)"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_recursive"}, {"id": "set_recursive(name, value)"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_fill"}, {"id": "simple_fill(schema, mode, timeout, exclude)"}, {"id": "metagpt/actions/action_node.py:ActionNode:tagging"}, {"id": "tagging(text, schema, tag): str"}, {"id": "metagpt/actions/action_node.py:ActionNode:to_dict"}, {"id": "to_dict(format_func, mode, exclude): Dict"}, {"id": "metagpt/actions/action_output.py"}, {"id": "metagpt/actions/action_output.py:ActionOutput"}, {"id": "metagpt/actions/action_output.py:ActionOutput:content"}, {"id": "metagpt/actions/action_output.py:ActionOutput:instruct_content"}, {"id": "metagpt/actions"}, {"id": ""}, {"id": "metagpt/actions:ActionType"}, {"id": "metagpt/actions:ActionType:name"}, {"id": "name"}, {"id": "metagpt/provider/general_api_base.py:ApiType"}, {"id": "metagpt/provider/general_api_base.py:ApiType:name"}, {"id": "metagpt/provider/general_api_base.py:ApiType:from_str"}, {"id": "from_str(label)"}, {"id": "metagpt/roles/architect.py"}, {"id": "metagpt/roles/architect.py:Architect"}, {"id": "metagpt/roles/architect.py:Architect:constraints"}, {"id": "constraints : str"}, {"id": "metagpt/roles/architect.py:Architect:goal"}, {"id": "goal : str"}, {"id": "metagpt/roles/architect.py:Architect:name"}, {"id": "metagpt/roles/architect.py:Architect:profile"}, {"id": "profile : str"}, {"id": "metagpt/actions/skill_action.py"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:args"}, {"id": "args : Optional[Dict]"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask"}, {"id": "ask : str"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt"}, {"id": "prompt"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"id": "rsp : Optional[Message]"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"id": "skill"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments"}, {"id": "parse_arguments(skill_name, txt): dict"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:run"}, {"id": "run(with_message): Message"}, {"id": "metagpt/roles/assistant.py"}, {"id": "metagpt/roles/assistant.py:Assistant"}, {"id": "metagpt/roles/assistant.py:Assistant:constraints"}, {"id": "metagpt/roles/assistant.py:Assistant:desc"}, {"id": "metagpt/roles/assistant.py:Assistant:goal"}, {"id": "metagpt/roles/assistant.py:Assistant:memory"}, {"id": "memory"}, {"id": "metagpt/roles/assistant.py:Assistant:name"}, {"id": "metagpt/roles/assistant.py:Assistant:profile"}, {"id": "metagpt/roles/assistant.py:Assistant:skills"}, {"id": "skills : Optional[SkillsDeclaration]"}, {"id": "metagpt/roles/assistant.py:Assistant:act"}, {"id": "act(): Message"}, {"id": "metagpt/roles/assistant.py:Assistant:get_memory"}, {"id": "get_memory(): str"}, {"id": "metagpt/roles/assistant.py:Assistant:load_memory"}, {"id": "load_memory(m)"}, {"id": "metagpt/roles/assistant.py:Assistant:refine_memory"}, {"id": "refine_memory(): str"}, {"id": "metagpt/roles/assistant.py:Assistant:skill_handler"}, {"id": "skill_handler(text): bool"}, {"id": "metagpt/roles/assistant.py:Assistant:talk"}, {"id": "talk(text)"}, {"id": "metagpt/roles/assistant.py:Assistant:talk_handler"}, {"id": "talk_handler(text): bool"}, {"id": "metagpt/roles/assistant.py:Assistant:think"}, {"id": "think(): bool"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:async_events"}, {"id": "async_events()"}, {"id": "metagpt/tools/iflytek_tts.py"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:audio"}, {"id": "audio : str"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:ced"}, {"id": "ced : str"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:status"}, {"id": "status : int"}, {"id": "metagpt/provider/azure_openai_api.py"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient"}, {"id": "aclient : AsyncAzureOpenAI"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model"}, {"id": "model"}, {"id": "metagpt/tools/azure_tts.py"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:region"}, {"id": "region"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key"}, {"id": "subscription_key"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text"}, {"id": "role_style_text(role, style, text)"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:role_text"}, {"id": "role_text(role, text)"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:style_text"}, {"id": "style_text(style, text)"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech"}, {"id": "synthesize_speech(lang, voice, text, output_file)"}, {"id": "metagpt/tools/prompt_writer.py"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen"}, {"id": "gen()"}, {"id": "metagpt/strategy/tot.py"}, {"id": "metagpt/strategy/tot.py:BFSSolver"}, {"id": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"id": "thought_tree"}, {"id": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes"}, {"id": "generate_and_evaluate_nodes(current_state, current_value, node)"}, {"id": "metagpt/strategy/tot.py:BFSSolver:solve"}, {"id": "solve(init_prompt)"}, {"id": "metagpt/schema.py:BaseContext"}, {"id": "metagpt/schema.py:BaseContext:loads"}, {"id": "loads(val: str): Optional[T]"}, {"id": "metagpt/strategy/base.py"}, {"id": "metagpt/strategy/base.py:BaseEvaluator"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:status_verify "}, {"id": "status_verify ()"}, {"id": "metagpt/provider/base_llm.py"}, {"id": "metagpt/provider/base_llm.py:BaseLLM"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:system_prompt"}, {"id": "system_prompt : str"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt"}, {"id": "use_system_prompt : bool"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask"}, {"id": "aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask_batch"}, {"id": "aask_batch(msgs: list, timeout): str"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask_code"}, {"id": "aask_code(msgs: list[str], timeout): str"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion "}, {"id": "acompletion (messages: list[dict], timeout)"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text "}, {"id": "acompletion_text (messages: list[dict], stream, timeout): str"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function"}, {"id": "get_choice_function(rsp: dict): dict"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments"}, {"id": "get_choice_function_arguments(rsp: dict): dict"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text"}, {"id": "get_choice_text(rsp: dict): str"}, {"id": "metagpt/strategy/base.py:BaseParser"}, {"id": "metagpt/strategy/base.py:BaseParser:propose "}, {"id": "propose (current_state: str): str"}, {"id": "metagpt/strategy/base.py:BaseParser:sample "}, {"id": "sample (current_state: str): str"}, {"id": "metagpt/strategy/base.py:BaseParser:value "}, {"id": "value (input: str): str"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model"}, {"id": "model : NoneType"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run"}, {"id": "run(output: str, schema: dict, req_key: str): Union[dict, list]"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output"}, {"id": "run_extract_content_from_output(content: str, right_key: str): str"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output"}, {"id": "run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output"}, {"id": "run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text"}, {"id": "run_retry_parse_json_text(content: str): Union[dict, list]"}, {"id": "metagpt/document_store/base_store.py"}, {"id": "metagpt/document_store/base_store.py:BaseStore"}, {"id": "metagpt/document_store/base_store.py:BaseStore:add "}, {"id": "add ()"}, {"id": "metagpt/document_store/base_store.py:BaseStore:search "}, {"id": "search ()"}, {"id": "metagpt/document_store/base_store.py:BaseStore:write "}, {"id": "write ()"}, {"id": "metagpt/memory/brain_memory.py"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:cacheable"}, {"id": "cacheable : bool"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary"}, {"id": "historical_summary : str"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:history"}, {"id": "history : List[Message]"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:history_text"}, {"id": "history_text"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty"}, {"id": "is_dirty : bool"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available"}, {"id": "is_history_available"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:knowledge"}, {"id": "knowledge : List[Message]"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id"}, {"id": "last_history_id : str"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:last_talk"}, {"id": "last_talk : Optional[str]"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:llm"}, {"id": "llm : Optional[BaseLLM]"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_answer"}, {"id": "add_answer(msg: Message)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_history"}, {"id": "add_history(msg: Message)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_talk"}, {"id": "add_talk(msg: Message)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:dumps"}, {"id": "dumps(redis_key: str, timeout_sec: int)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:exists"}, {"id": "exists(text): bool"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:extract_info"}, {"id": "extract_info(input_string, pattern)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge"}, {"id": "get_knowledge(): str"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:get_title"}, {"id": "get_title(llm, max_words): str"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_related"}, {"id": "is_related(text1, text2, llm)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:loads"}, {"id": "loads(redis_key: str): 'BrainMemory'"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk"}, {"id": "pop_last_talk()"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:rewrite"}, {"id": "rewrite(sentence: str, context: str, llm)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary"}, {"id": "set_history_summary(history_summary, redis_key, redis_conf)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:split_texts"}, {"id": "split_texts(text: str, window_size): List[str]"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:summarize"}, {"id": "summarize(llm, max_words, keep_language: bool, limit: int)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_int"}, {"id": "to_int(v, default_value)"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format"}, {"id": "to_metagpt_history_format(history): str"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key"}, {"id": "to_redis_key(prefix: str, user_id: str, chat_id: str)"}, {"id": "metagpt/schema.py:BugFixContext"}, {"id": "metagpt/schema.py:BugFixContext:filename"}, {"id": "filename : str"}, {"id": "metagpt/utils/git_repository.py"}, {"id": "metagpt/utils/git_repository.py:ChangeType"}, {"id": "metagpt/utils/git_repository.py:ChangeType:name"}, {"id": "metagpt/document_store/chromadb_store.py"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:client"}, {"id": "client : FastAPI, LocalAPI"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:collection"}, {"id": "collection : Collection"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:add"}, {"id": "add(document, metadata, _id)"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:delete"}, {"id": "delete(_id)"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:persist "}, {"id": "persist ()"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:search"}, {"id": "search(query, n_results, metadata_filter, document_filter)"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:write"}, {"id": "write(documents, metadatas, ids)"}, {"id": "metagpt/schema.py:ClassAttribute"}, {"id": "metagpt/schema.py:ClassAttribute:default_value"}, {"id": "default_value : str"}, {"id": "metagpt/schema.py:ClassAttribute:value_type"}, {"id": "value_type : str"}, {"id": "metagpt/schema.py:ClassAttribute:get_mermaid"}, {"id": "get_mermaid(align): str"}, {"id": "metagpt/repo_parser.py"}, {"id": "metagpt/repo_parser.py:ClassInfo"}, {"id": "metagpt/repo_parser.py:ClassInfo:attributes"}, {"id": "attributes : Dict[str, str]"}, {"id": "metagpt/repo_parser.py:ClassInfo:methods"}, {"id": "methods : Dict[str, str]"}, {"id": "metagpt/repo_parser.py:ClassInfo:name"}, {"id": "metagpt/repo_parser.py:ClassInfo:package"}, {"id": "package : Optional[str]"}, {"id": "metagpt/schema.py:ClassMeta"}, {"id": "metagpt/schema.py:ClassMeta:abstraction"}, {"id": "abstraction : bool"}, {"id": "metagpt/schema.py:ClassMeta:name"}, {"id": "metagpt/schema.py:ClassMeta:static"}, {"id": "static : bool"}, {"id": "metagpt/schema.py:ClassMeta:visibility"}, {"id": "visibility : str"}, {"id": "metagpt/schema.py:ClassMethod"}, {"id": "metagpt/schema.py:ClassMethod:args"}, {"id": "args : List[ClassAttribute]"}, {"id": "metagpt/schema.py:ClassMethod:return_type"}, {"id": "return_type : str"}, {"id": "metagpt/schema.py:ClassMethod:get_mermaid"}, {"id": "metagpt/repo_parser.py:ClassRelationship"}, {"id": "metagpt/repo_parser.py:ClassRelationship:dest"}, {"id": "dest : str"}, {"id": "metagpt/repo_parser.py:ClassRelationship:label"}, {"id": "label : Optional[str]"}, {"id": "metagpt/repo_parser.py:ClassRelationship:relationship"}, {"id": "relationship : str"}, {"id": "metagpt/repo_parser.py:ClassRelationship:src"}, {"id": "src : str"}, {"id": "metagpt/schema.py:ClassView"}, {"id": "metagpt/schema.py:ClassView:attributes"}, {"id": "attributes : List[ClassAttribute]"}, {"id": "metagpt/schema.py:ClassView:methods"}, {"id": "methods : List[ClassMethod]"}, {"id": "metagpt/schema.py:ClassView:get_mermaid"}, {"id": "metagpt/provider/anthropic_api.py"}, {"id": "metagpt/provider/anthropic_api.py:Claude2"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:aask"}, {"id": "aask(prompt: str): str"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:ask"}, {"id": "ask(prompt: str): str"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno"}, {"id": "end_lineno : int"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:lineno"}, {"id": "lineno : int"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:properties"}, {"id": "properties : Dict"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:tokens"}, {"id": "tokens : List"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:type_name"}, {"id": "type_name : str"}, {"id": "metagpt/utils/common.py"}, {"id": "metagpt/utils/common.py:CodeParser"}, {"id": "metagpt/utils/common.py:CodeParser:parse_block"}, {"id": "parse_block(block: str, text: str): str"}, {"id": "metagpt/utils/common.py:CodeParser:parse_blocks"}, {"id": "parse_blocks(text: str)"}, {"id": "metagpt/utils/common.py:CodeParser:parse_code"}, {"id": "parse_code(block: str, text: str, lang: str): str"}, {"id": "metagpt/utils/common.py:CodeParser:parse_file_list"}, {"id": "parse_file_list(block: str, text: str, lang: str): list[str]"}, {"id": "metagpt/utils/common.py:CodeParser:parse_str"}, {"id": "parse_str(block: str, text: str, lang: str)"}, {"id": "metagpt/schema.py:CodeSummarizeContext"}, {"id": "metagpt/schema.py:CodeSummarizeContext:codes_filenames"}, {"id": "codes_filenames : List[str]"}, {"id": "metagpt/schema.py:CodeSummarizeContext:design_filename"}, {"id": "design_filename : str"}, {"id": "metagpt/schema.py:CodeSummarizeContext:reason"}, {"id": "reason : str"}, {"id": "metagpt/schema.py:CodeSummarizeContext:task_filename"}, {"id": "task_filename : str"}, {"id": "metagpt/schema.py:CodeSummarizeContext:loads"}, {"id": "loads(filenames: List): CodeSummarizeContext"}, {"id": "metagpt/schema.py:CodingContext"}, {"id": "metagpt/schema.py:CodingContext:code_doc"}, {"id": "code_doc : Optional[Document]"}, {"id": "metagpt/schema.py:CodingContext:design_doc"}, {"id": "design_doc : Optional[Document]"}, {"id": "metagpt/schema.py:CodingContext:filename"}, {"id": "metagpt/schema.py:CodingContext:task_doc"}, {"id": "task_doc : Optional[Document]"}, {"id": "metagpt/actions/research.py"}, {"id": "metagpt/actions/research.py:CollectLinks"}, {"id": "metagpt/actions/research.py:CollectLinks:context"}, {"id": "context : Optional[str]"}, {"id": "metagpt/actions/research.py:CollectLinks:desc"}, {"id": "metagpt/actions/research.py:CollectLinks:name"}, {"id": "metagpt/actions/research.py:CollectLinks:rank_func"}, {"id": "rank_func : Optional[Callable[[list[str]], None]]"}, {"id": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"id": "search_engine"}, {"id": "metagpt/actions/research.py:CollectLinks:run"}, {"id": "run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\| None): dict[str, list[str]]"}, {"id": "metagpt/learn/skill_loader.py"}, {"id": "metagpt/learn/skill_loader.py:Components"}, {"id": "metagpt/actions/research.py:ConductResearch"}, {"id": "metagpt/actions/research.py:ConductResearch:context"}, {"id": "metagpt/actions/research.py:ConductResearch:llm"}, {"id": "metagpt/actions/research.py:ConductResearch:name"}, {"id": "metagpt/actions/research.py:ConductResearch:run"}, {"id": "run(topic: str, content: str, system_text: str): str"}, {"id": "metagpt/config.py"}, {"id": "metagpt/config.py:Config"}, {"id": "metagpt/config.py:Config:anthropic_api_key"}, {"id": "anthropic_api_key"}, {"id": "metagpt/config.py:Config:calc_usage"}, {"id": "calc_usage"}, {"id": "metagpt/config.py:Config:claude_api_key"}, {"id": "claude_api_key"}, {"id": "metagpt/config.py:Config:code_review_k_times"}, {"id": "code_review_k_times : int"}, {"id": "metagpt/config.py:Config:cost_manager"}, {"id": "cost_manager"}, {"id": "metagpt/config.py:Config:default_yaml_file"}, {"id": "default_yaml_file"}, {"id": "metagpt/config.py:Config:deployment_name"}, {"id": "deployment_name"}, {"id": "metagpt/config.py:Config:domain"}, {"id": "domain"}, {"id": "metagpt/config.py:Config:fireworks_api_base"}, {"id": "fireworks_api_base"}, {"id": "metagpt/config.py:Config:fireworks_api_key"}, {"id": "fireworks_api_key"}, {"id": "metagpt/config.py:Config:fireworks_api_model"}, {"id": "fireworks_api_model"}, {"id": "metagpt/config.py:Config:gemini_api_key"}, {"id": "gemini_api_key"}, {"id": "metagpt/config.py:Config:git_reinit"}, {"id": "git_reinit : bool"}, {"id": "metagpt/config.py:Config:global_proxy"}, {"id": "global_proxy"}, {"id": "metagpt/config.py:Config:google_api_key"}, {"id": "google_api_key"}, {"id": "metagpt/config.py:Config:google_cse_id"}, {"id": "google_cse_id"}, {"id": "metagpt/config.py:Config:home_yaml_file"}, {"id": "home_yaml_file"}, {"id": "metagpt/config.py:Config:inc"}, {"id": "inc : bool"}, {"id": "metagpt/config.py:Config:key_yaml_file"}, {"id": "key_yaml_file"}, {"id": "metagpt/config.py:Config:long_term_memory"}, {"id": "long_term_memory"}, {"id": "metagpt/config.py:Config:max_auto_summarize_code"}, {"id": "max_auto_summarize_code : int"}, {"id": "metagpt/config.py:Config:max_tokens_rsp"}, {"id": "max_tokens_rsp"}, {"id": "metagpt/config.py:Config:mermaid_engine"}, {"id": "mermaid_engine"}, {"id": "metagpt/config.py:Config:mmdc"}, {"id": "mmdc"}, {"id": "metagpt/config.py:Config:model_for_researcher_report"}, {"id": "model_for_researcher_report"}, {"id": "metagpt/config.py:Config:model_for_researcher_summary"}, {"id": "model_for_researcher_summary"}, {"id": "metagpt/config.py:Config:ollama_api_base"}, {"id": "ollama_api_base"}, {"id": "metagpt/config.py:Config:ollama_api_model"}, {"id": "ollama_api_model"}, {"id": "metagpt/config.py:Config:open_llm_api_base"}, {"id": "open_llm_api_base"}, {"id": "metagpt/config.py:Config:open_llm_api_model"}, {"id": "open_llm_api_model"}, {"id": "metagpt/config.py:Config:openai_api_key"}, {"id": "openai_api_key"}, {"id": "metagpt/config.py:Config:openai_api_model"}, {"id": "openai_api_model"}, {"id": "metagpt/config.py:Config:openai_api_rpm"}, {"id": "openai_api_rpm"}, {"id": "metagpt/config.py:Config:openai_api_type"}, {"id": "openai_api_type"}, {"id": "metagpt/config.py:Config:openai_api_version"}, {"id": "openai_api_version"}, {"id": "metagpt/config.py:Config:openai_base_url"}, {"id": "openai_base_url"}, {"id": "metagpt/config.py:Config:openai_proxy"}, {"id": "openai_proxy"}, {"id": "metagpt/config.py:Config:options"}, {"id": "options"}, {"id": "metagpt/config.py:Config:playwright_browser_type"}, {"id": "playwright_browser_type"}, {"id": "metagpt/config.py:Config:project_name"}, {"id": "project_name : str"}, {"id": "metagpt/config.py:Config:project_path"}, {"id": "project_path : str"}, {"id": "metagpt/config.py:Config:prompt_schema"}, {"id": "prompt_schema"}, {"id": "metagpt/config.py:Config:puppeteer_config"}, {"id": "puppeteer_config"}, {"id": "metagpt/config.py:Config:pyppeteer_executable_path"}, {"id": "pyppeteer_executable_path"}, {"id": "metagpt/config.py:Config:repair_llm_output"}, {"id": "repair_llm_output"}, {"id": "metagpt/config.py:Config:reqa_file"}, {"id": "reqa_file : str"}, {"id": "metagpt/config.py:Config:search_engine"}, {"id": "metagpt/config.py:Config:selenium_browser_type"}, {"id": "selenium_browser_type"}, {"id": "metagpt/config.py:Config:serpapi_api_key"}, {"id": "serpapi_api_key"}, {"id": "metagpt/config.py:Config:serper_api_key"}, {"id": "serper_api_key"}, {"id": "metagpt/config.py:Config:spark_api_key"}, {"id": "spark_api_key"}, {"id": "metagpt/config.py:Config:spark_api_secret"}, {"id": "spark_api_secret"}, {"id": "metagpt/config.py:Config:spark_appid"}, {"id": "spark_appid"}, {"id": "metagpt/config.py:Config:spark_url"}, {"id": "spark_url"}, {"id": "metagpt/config.py:Config:timeout"}, {"id": "timeout : int"}, {"id": "metagpt/config.py:Config:web_browser_engine"}, {"id": "web_browser_engine"}, {"id": "metagpt/config.py:Config:workspace_path"}, {"id": "workspace_path : Path"}, {"id": "metagpt/config.py:Config:zhipuai_api_key"}, {"id": "zhipuai_api_key"}, {"id": "metagpt/config.py:Config:get"}, {"id": "metagpt/config.py:Config:get_default_llm_provider_enum"}, {"id": "get_default_llm_provider_enum(): LLMProviderEnum"}, {"id": "metagpt/config.py:Config:get_model_name"}, {"id": "get_model_name(provider): str"}, {"id": "metagpt/config.py:Config:new_environ"}, {"id": "new_environ()"}, {"id": "metagpt/config.py:Config:set_context"}, {"id": "set_context(options: dict)"}, {"id": "metagpt/config.py:Config:update_via_cli"}, {"id": "update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)"}, {"id": "metagpt/tools/openai_text_to_embedding.py"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias"}, {"id": "alias : dict"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:Config"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed"}, {"id": "arbitrary_types_allowed : bool"}, {"id": "metagpt/strategy/tot.py:TreeofThought:Config"}, {"id": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed"}, {"id": "metagpt/utils/cost_manager.py"}, {"id": "metagpt/utils/cost_manager.py:CostManager"}, {"id": "metagpt/utils/cost_manager.py:CostManager:max_budget"}, {"id": "max_budget : float"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_budget"}, {"id": "total_budget : float"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens"}, {"id": "total_completion_tokens : int"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_cost"}, {"id": "total_cost : float"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens"}, {"id": "total_prompt_tokens : int"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_costs"}, {"id": "get_costs(): Costs"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens"}, {"id": "get_total_completion_tokens()"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_cost"}, {"id": "get_total_cost()"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens"}, {"id": "get_total_prompt_tokens()"}, {"id": "metagpt/utils/cost_manager.py:CostManager:update_cost"}, {"id": "update_cost(prompt_tokens, completion_tokens, model)"}, {"id": "metagpt/utils/cost_manager.py:Costs"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_budget"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_cost"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens"}, {"id": "metagpt/utils/custom_decoder.py"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object"}, {"id": "parse_object"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string"}, {"id": "parse_string"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once"}, {"id": "scan_once"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:decode"}, {"id": "decode(s, _w)"}, {"id": "metagpt/roles/customer_service.py"}, {"id": "metagpt/roles/customer_service.py:CustomerService"}, {"id": "metagpt/roles/customer_service.py:CustomerService:desc"}, {"id": "metagpt/roles/customer_service.py:CustomerService:name"}, {"id": "metagpt/roles/customer_service.py:CustomerService:profile"}, {"id": "metagpt/roles/customer_service.py:CustomerService:store"}, {"id": "store : Optional[BaseStore]"}, {"id": "metagpt/tools/search_engine_ddg.py"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs"}, {"id": "ddgs : DDGS"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor"}, {"id": "executor : NoneType"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop"}, {"id": "loop : NoneType"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run"}, {"id": "run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\| None): str"}, {"id": "metagpt/strategy/tot.py:DFSSolver"}, {"id": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"id": "metagpt/strategy/tot.py:DFSSolver:solve"}, {"id": "solve(init_prompt, root)"}, {"id": "metagpt/tools/search_engine_meilisearch.py"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:name"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:url"}, {"id": "url : str"}, {"id": "metagpt/actions/debug_error.py"}, {"id": "metagpt/actions/debug_error.py:DebugError"}, {"id": "metagpt/actions/debug_error.py:DebugError:context"}, {"id": "context"}, {"id": "metagpt/actions/debug_error.py:DebugError:name"}, {"id": "metagpt/actions/debug_error.py:DebugError:run"}, {"id": "run(): str"}, {"id": "metagpt/utils/dependency_file.py"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:exists"}, {"id": "exists"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:delete_file"}, {"id": "delete_file()"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:get"}, {"id": "get(filename: Path \\| str, persist)"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:load"}, {"id": "load()"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:save"}, {"id": "save()"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:update"}, {"id": "update(filename: Path \\| str, dependencies: Set[Path \\| str], persist)"}, {"id": "metagpt/actions/design_api_review.py"}, {"id": "metagpt/actions/design_api_review.py:DesignReview"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:context"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:name"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:run"}, {"id": "run(prd, api_design)"}, {"id": "metagpt/utils/di_graph_repository.py"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname"}, {"id": "pathname"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root"}, {"id": "root"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert"}, {"id": "insert(subject: str, predicate: str, object_: str)"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json"}, {"id": "json(): str"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load"}, {"id": "load(pathname: str \\| Path)"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from"}, {"id": "load_from(pathname: str \\| Path): GraphRepository"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save"}, {"id": "save(path: str \\| Path)"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select"}, {"id": "select(subject: str, predicate: str, object_: str): List[SPO]"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:update "}, {"id": "update (subject: str, predicate: str, object_: str)"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:upsert "}, {"id": "upsert (subject: str, predicate: str, object_: str)"}, {"id": "metagpt/utils/pycst.py"}, {"id": "metagpt/utils/pycst.py:DocstringCollector"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:docstrings"}, {"id": "docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:stack"}, {"id": "stack : list[str]"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef"}, {"id": "leave_ClassDef(node: cst.ClassDef): None"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef"}, {"id": "leave_FunctionDef(node: cst.FunctionDef): None"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_Module"}, {"id": "leave_Module(node: cst.Module): None"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef"}, {"id": "visit_ClassDef(node: cst.ClassDef): bool \\| None"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef"}, {"id": "visit_FunctionDef(node: cst.FunctionDef): bool \\| None"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_Module"}, {"id": "visit_Module(node: cst.Module): bool \\| None"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:docstrings"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:stack"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef"}, {"id": "leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef"}, {"id": "leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module"}, {"id": "leave_Module(original_node: Module, updated_node: Module): Module"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module"}, {"id": "metagpt/document.py"}, {"id": "metagpt/document.py:Document"}, {"id": "metagpt/document.py:Document:author"}, {"id": "author : str"}, {"id": "metagpt/document.py:Document:content"}, {"id": "metagpt/document.py:Document:name"}, {"id": "metagpt/document.py:Document:path"}, {"id": "path : Path"}, {"id": "metagpt/document.py:Document:reviews"}, {"id": "reviews : list"}, {"id": "metagpt/document.py:Document:status"}, {"id": "status"}, {"id": "metagpt/document.py:Document:from_path"}, {"id": "from_path(path: Path)"}, {"id": "metagpt/document.py:Document:from_text"}, {"id": "from_text(text: str, path: Optional[Path])"}, {"id": "metagpt/document.py:Document:persist"}, {"id": "persist()"}, {"id": "metagpt/document.py:Document:to_path"}, {"id": "to_path(path: Optional[Path])"}, {"id": "metagpt/schema.py:Document"}, {"id": "metagpt/schema.py:Document:content"}, {"id": "metagpt/schema.py:Document:filename"}, {"id": "metagpt/schema.py:Document:full_path"}, {"id": "full_path"}, {"id": "metagpt/schema.py:Document:root_path"}, {"id": "root_path : str"}, {"id": "metagpt/schema.py:Document:root_relative_path"}, {"id": "root_relative_path"}, {"id": "metagpt/schema.py:Document:get_meta"}, {"id": "get_meta(): Document"}, {"id": "metagpt/document.py:DocumentStatus"}, {"id": "metagpt/document.py:DocumentStatus:name"}, {"id": "metagpt/schema.py:Documents"}, {"id": "metagpt/schema.py:Documents:docs"}, {"id": "docs : Dict[str, Document]"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding"}, {"id": "embedding : List[float]"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:index"}, {"id": "index : int"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:object"}, {"id": "object : str"}, {"id": "metagpt/roles/engineer.py"}, {"id": "metagpt/roles/engineer.py:Engineer"}, {"id": "metagpt/roles/engineer.py:Engineer:code_todos"}, {"id": "code_todos : list"}, {"id": "metagpt/roles/engineer.py:Engineer:constraints"}, {"id": "metagpt/roles/engineer.py:Engineer:goal"}, {"id": "metagpt/roles/engineer.py:Engineer:n_borg"}, {"id": "n_borg : int"}, {"id": "metagpt/roles/engineer.py:Engineer:name"}, {"id": "metagpt/roles/engineer.py:Engineer:next_todo_action"}, {"id": "next_todo_action : str"}, {"id": "metagpt/roles/engineer.py:Engineer:profile"}, {"id": "metagpt/roles/engineer.py:Engineer:summarize_todos"}, {"id": "summarize_todos : list"}, {"id": "metagpt/roles/engineer.py:Engineer:todo"}, {"id": "todo"}, {"id": "metagpt/roles/engineer.py:Engineer:use_code_review"}, {"id": "use_code_review : bool"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate:gen"}, {"id": "gen(subj)"}, {"id": "metagpt/learn/skill_loader.py:Entity"}, {"id": "metagpt/learn/skill_loader.py:Entity:name"}, {"id": "name : Optional[str]"}, {"id": "metagpt/learn/skill_loader.py:Entity:skills"}, {"id": "skills : List[Skill]"}, {"id": "metagpt/environment.py"}, {"id": "metagpt/environment.py:Environment"}, {"id": "metagpt/environment.py:Environment:desc"}, {"id": "metagpt/environment.py:Environment:history"}, {"id": "history : str"}, {"id": "metagpt/environment.py:Environment:is_idle"}, {"id": "is_idle"}, {"id": "metagpt/environment.py:Environment:members"}, {"id": "members : dict[Role, Set]"}, {"id": "metagpt/environment.py:Environment:model_config"}, {"id": "metagpt/environment.py:Environment:roles"}, {"id": "roles : dict[str, SerializeAsAny[Role]]"}, {"id": "metagpt/environment.py:Environment:add_role"}, {"id": "add_role(role: Role)"}, {"id": "metagpt/environment.py:Environment:add_roles"}, {"id": "add_roles(roles: Iterable[Role])"}, {"id": "metagpt/environment.py:Environment:archive"}, {"id": "archive(auto_archive)"}, {"id": "metagpt/environment.py:Environment:deserialize"}, {"id": "deserialize(stg_path: Path): 'Environment'"}, {"id": "metagpt/environment.py:Environment:get_role"}, {"id": "get_role(name: str): Role"}, {"id": "metagpt/environment.py:Environment:get_roles"}, {"id": "get_roles(): dict[str, Role]"}, {"id": "metagpt/environment.py:Environment:get_subscription"}, {"id": "get_subscription(obj)"}, {"id": "metagpt/environment.py:Environment:init_roles"}, {"id": "init_roles()"}, {"id": "metagpt/environment.py:Environment:publish_message"}, {"id": "publish_message(message: Message, peekable: bool): bool"}, {"id": "metagpt/environment.py:Environment:role_names"}, {"id": "role_names(): list[str]"}, {"id": "metagpt/environment.py:Environment:run"}, {"id": "run(k)"}, {"id": "metagpt/environment.py:Environment:serialize"}, {"id": "serialize(stg_path: Path)"}, {"id": "metagpt/environment.py:Environment:set_subscription"}, {"id": "set_subscription(obj, tags)"}, {"id": "metagpt/learn/skill_loader.py:Example"}, {"id": "metagpt/learn/skill_loader.py:Example:answer"}, {"id": "answer : str"}, {"id": "metagpt/learn/skill_loader.py:Example:ask"}, {"id": "metagpt/actions/execute_task.py"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:context"}, {"id": "context : list[Message]"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:name"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:run "}, {"id": "run ()"}, {"id": "metagpt/document_store/faiss_store.py"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:content_col"}, {"id": "content_col : str"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:embedding"}, {"id": "embedding : OpenAIEmbeddings"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:meta_col"}, {"id": "meta_col : str"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:store"}, {"id": "store"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:add"}, {"id": "add(texts: list[str]): list[str]"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:asearch"}, {"id": "asearch()"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:delete "}, {"id": "delete ()"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:persist"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:search"}, {"id": "search(query, expand_cols, sep)"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:write"}, {"id": "write()"}, {"id": "metagpt/utils/file.py"}, {"id": "metagpt/utils/file.py:File"}, {"id": "metagpt/utils/file.py:File:CHUNK_SIZE"}, {"id": "CHUNK_SIZE : int"}, {"id": "metagpt/utils/file.py:File:read"}, {"id": "read(file_path: Path, chunk_size: int): bytes"}, {"id": "metagpt/utils/file.py:File:write"}, {"id": "write(root_path: Path, filename: str, content: bytes): Path"}, {"id": "metagpt/utils/file_repository.py"}, {"id": "metagpt/utils/file_repository.py:FileRepository"}, {"id": "metagpt/utils/file_repository.py:FileRepository:all_files"}, {"id": "all_files"}, {"id": "metagpt/utils/file_repository.py:FileRepository:changed_files"}, {"id": "changed_files"}, {"id": "metagpt/utils/file_repository.py:FileRepository:root_path"}, {"id": "root_path"}, {"id": "metagpt/utils/file_repository.py:FileRepository:workdir"}, {"id": "workdir"}, {"id": "metagpt/utils/file_repository.py:FileRepository:delete"}, {"id": "delete(filename: Path \\| str)"}, {"id": "metagpt/utils/file_repository.py:FileRepository:delete_file"}, {"id": "delete_file(filename: Path \\| str, relative_path: Path \\| str)"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get"}, {"id": "get(filename: Path \\| str): Document \\| None"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_all"}, {"id": "get_all(): List[Document]"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_all_files"}, {"id": "get_all_files(relative_path: Path \\| str): List[Document]"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files"}, {"id": "get_change_dir_files(dir: Path \\| str): List"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency"}, {"id": "get_changed_dependency(filename: Path \\| str): Set[str]"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_dependency"}, {"id": "get_dependency(filename: Path \\| str): Set[str]"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_file"}, {"id": "get_file(filename: Path \\| str, relative_path: Path \\| str): Document \\| None"}, {"id": "metagpt/utils/file_repository.py:FileRepository:new_filename"}, {"id": "new_filename()"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save"}, {"id": "save(filename: Path \\| str, content, dependencies: List[str])"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_as"}, {"id": "save_as(doc: Document, with_suffix: str, dependencies: List[str], relative_path: Path \\| str)"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_doc"}, {"id": "save_doc(doc: Document, with_suffix: str, dependencies: List[str])"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_file"}, {"id": "save_file(filename: Path \\| str, content, dependencies: List[str], relative_path: Path \\| str)"}, {"id": "metagpt/provider/fireworks_api.py"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost"}, {"id": "total_cost"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs"}, {"id": "model_grade_token_costs(model: str): dict[str, float]"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost"}, {"id": "update_cost(prompt_tokens: int, completion_tokens: int, model: str)"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens"}, {"id": "auto_max_tokens : bool"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:config"}, {"id": "config"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:is_azure"}, {"id": "is_azure : bool"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:model"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:rpm"}, {"id": "rpm : int"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text"}, {"id": "acompletion_text(messages: list[dict], stream, timeout: int): str"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs"}, {"id": "metagpt/actions/fix_bug.py"}, {"id": "metagpt/actions/fix_bug.py:FixBug"}, {"id": "metagpt/actions/fix_bug.py:FixBug:name"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen"}, {"id": "gen(example: str, style: str): Union[list[str], str]"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style"}, {"id": "gen_chatbot_style(example)"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style"}, {"id": "gen_instruction_style(example)"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style"}, {"id": "gen_query_style(example)"}, {"id": "metagpt/provider/google_gemini_api.py"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens"}, {"id": "count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async"}, {"id": "count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:model"}, {"id": "model : str"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion"}, {"id": "acompletion(messages: list[dict]): dict"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage"}, {"id": "aget_usage(messages: list[dict], resp_text: str): dict"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion"}, {"id": "completion(messages: list[dict]): 'GenerateContentResponse'"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text"}, {"id": "get_choice_text(resp: GenerateContentResponse): str"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage"}, {"id": "get_usage(messages: list[dict], resp_text: str): dict"}, {"id": "metagpt/provider/general_api_requestor.py"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor"}, {"id": "metagpt/actions/generate_questions.py"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions:name"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions:run"}, {"id": "run(context)"}, {"id": "metagpt/actions/invoice_ocr.py"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:context"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:language"}, {"id": "language : str"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:llm"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:name"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:run"}, {"id": "run(ocr_results: list, filename: str): dict[str, str]"}, {"id": "metagpt/provider/spark_api.py"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret"}, {"id": "ret : str"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:text"}, {"id": "text"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params"}, {"id": "gen_params()"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close "}, {"id": "on_close (ws, one, two)"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error"}, {"id": "on_error(ws, error)"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message"}, {"id": "on_message(ws, message)"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open"}, {"id": "on_open(ws)"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:run"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:send"}, {"id": "send(ws)"}, {"id": "metagpt/utils/git_repository.py:GitRepository"}, {"id": "metagpt/utils/git_repository.py:GitRepository:changed_files"}, {"id": "metagpt/utils/git_repository.py:GitRepository:is_valid"}, {"id": "is_valid"}, {"id": "metagpt/utils/git_repository.py:GitRepository:status"}, {"id": "metagpt/utils/git_repository.py:GitRepository:workdir"}, {"id": "metagpt/utils/git_repository.py:GitRepository:add_change"}, {"id": "add_change(files: Dict)"}, {"id": "metagpt/utils/git_repository.py:GitRepository:archive"}, {"id": "archive(comments)"}, {"id": "metagpt/utils/git_repository.py:GitRepository:commit"}, {"id": "commit(comments)"}, {"id": "metagpt/utils/git_repository.py:GitRepository:delete_repository"}, {"id": "delete_repository()"}, {"id": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore"}, {"id": "filter_gitignore(filenames: List[str], root_relative_path: Path \\| str): List[str]"}, {"id": "metagpt/utils/git_repository.py:GitRepository:get_dependency"}, {"id": "get_dependency(): DependencyFile"}, {"id": "metagpt/utils/git_repository.py:GitRepository:get_files"}, {"id": "get_files(relative_path: Path \\| str, root_relative_path: Path \\| str, filter_ignored): List"}, {"id": "metagpt/utils/git_repository.py:GitRepository:is_git_dir"}, {"id": "is_git_dir(local_path)"}, {"id": "metagpt/utils/git_repository.py:GitRepository:new_file_repository"}, {"id": "new_file_repository(relative_path: Path \\| str): FileRepository"}, {"id": "metagpt/utils/git_repository.py:GitRepository:open"}, {"id": "open(local_path: Path, auto_init)"}, {"id": "metagpt/utils/git_repository.py:GitRepository:rename_root"}, {"id": "rename_root(new_dir_name)"}, {"id": "metagpt/tools/search_engine_googleapi.py"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor"}, {"id": "executor : Optional[futures.Executor]"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client"}, {"id": "google_api_client"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key"}, {"id": "google_api_key : Optional[str]"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id"}, {"id": "google_cse_id : Optional[str]"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop"}, {"id": "loop : Optional[asyncio.AbstractEventLoop]"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key"}, {"id": "check_google_api_key(val: str)"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id"}, {"id": "check_google_cse_id(val: str)"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run"}, {"id": "run(query: str, max_results: int, as_string: bool, focus: list[str] \\| None): str \\| list[dict]"}, {"id": "metagpt/utils/graph_repository.py"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS"}, {"id": "CLASS : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_FUNCTION"}, {"id": "CLASS_FUNCTION : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY"}, {"id": "CLASS_PROPERTY : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION"}, {"id": "FUNCTION : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE"}, {"id": "GLOBAL_VARIABLE : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_ARGS_DESC"}, {"id": "HAS_ARGS_DESC : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS"}, {"id": "HAS_CLASS : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_FUNCTION"}, {"id": "HAS_CLASS_FUNCTION : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY"}, {"id": "HAS_CLASS_PROPERTY : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW"}, {"id": "HAS_CLASS_VIEW : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION"}, {"id": "HAS_FUNCTION : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO"}, {"id": "HAS_PAGE_INFO : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW"}, {"id": "HAS_SEQUENCE_VIEW : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_TYPE_DESC"}, {"id": "HAS_TYPE_DESC : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS"}, {"id": "IS : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:NULL"}, {"id": "NULL : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:OF"}, {"id": "OF : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:ON"}, {"id": "ON : str"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE"}, {"id": "SOURCE_CODE : str"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:name"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:insert "}, {"id": "insert (subject: str, predicate: str, object_: str)"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:select "}, {"id": "select (subject: str, predicate: str, object_: str): List[SPO]"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update "}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views"}, {"id": "update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[ClassRelationship])"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views"}, {"id": "update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[ClassInfo])"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info"}, {"id": "update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:upsert "}, {"id": "metagpt/provider/human_provider.py"}, {"id": "metagpt/provider/human_provider.py:HumanProvider"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:aask"}, {"id": "aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:acompletion"}, {"id": "acompletion(messages: list[dict], timeout)"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text"}, {"id": "acompletion_text(messages: list[dict], stream, timeout): str"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:ask"}, {"id": "ask(msg: str, timeout): str"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key"}, {"id": "api_key"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret"}, {"id": "api_secret"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id"}, {"id": "app_id"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech"}, {"id": "synthesize_speech(text, output_file: str, voice)"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code"}, {"id": "code : int"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data"}, {"id": "data : Optional[AudioData]"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message"}, {"id": "message : str"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid"}, {"id": "sid : str"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name"}, {"id": "metagpt/tools/metagpt_text_to_image.py"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images"}, {"id": "images : List"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters"}, {"id": "parameters : Dict"}, {"id": "metagpt/document.py:IndexableDocument"}, {"id": "metagpt/document.py:IndexableDocument:content_col"}, {"id": "content_col : Optional[str]"}, {"id": "metagpt/document.py:IndexableDocument:data"}, {"id": "data : Union[pd.DataFrame, list]"}, {"id": "metagpt/document.py:IndexableDocument:meta_col"}, {"id": "meta_col : Optional[str]"}, {"id": "metagpt/document.py:IndexableDocument:model_config"}, {"id": "metagpt/document.py:IndexableDocument:from_path"}, {"id": "from_path(data_path: Path, content_col, meta_col)"}, {"id": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas"}, {"id": "get_docs_and_metadatas(): (list, list)"}, {"id": "metagpt/roles/invoice_ocr_assistant.py"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data"}, {"id": "invoice_data : list[dict]"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:context"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run"}, {"id": "run(file_path: Path): list"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data"}, {"id": "orc_data : Optional[list]"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query"}, {"id": "origin_query : str"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path"}, {"id": "file_path : Path"}, {"id": "metagpt/config.py:LLMProviderEnum"}, {"id": "metagpt/config.py:LLMProviderEnum:name"}, {"id": "metagpt/provider/llm_provider_registry.py"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers"}, {"id": "providers : dict"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider"}, {"id": "get_provider(enum: LLMProviderEnum)"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register"}, {"id": "register(key, provider_cls)"}, {"id": "metagpt/document_store/lancedb_store.py"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:db"}, {"id": "db : LanceDBConnection, RemoteDBConnection"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:name"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:table"}, {"id": "table : LanceTable, NoneType, RemoteTable"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:add"}, {"id": "add(data, metadata, _id)"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:delete"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:drop"}, {"id": "drop(name)"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:persist "}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:search"}, {"id": "search(query, n_results, metric, nprobes)"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:write"}, {"id": "write(data, metadatas, ids)"}, {"id": "metagpt/document_store/base_store.py:LocalStore"}, {"id": "metagpt/document_store/base_store.py:LocalStore:cache_dir"}, {"id": "cache_dir : Optional[Path]"}, {"id": "metagpt/document_store/base_store.py:LocalStore:config"}, {"id": "metagpt/document_store/base_store.py:LocalStore:fname"}, {"id": "fname"}, {"id": "metagpt/document_store/base_store.py:LocalStore:raw_data_path"}, {"id": "raw_data_path : Path"}, {"id": "metagpt/document_store/base_store.py:LocalStore:store"}, {"id": "metagpt/memory/longterm_memory.py"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"id": "memory_storage"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover"}, {"id": "msg_from_recover : bool"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"id": "rc : Optional[RoleContext]"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:add"}, {"id": "add(message: Message)"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:clear"}, {"id": "clear()"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:delete"}, {"id": "delete(message: Message)"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news"}, {"id": "find_news(observed: list[Message], k): list[Message]"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory"}, {"id": "recover_memory(role_id: str, rc: RoleContext)"}, {"id": "metagpt/strategy/tot.py:MCTSSolver"}, {"id": "metagpt/strategy/tot.py:MCTSSolver:solve "}, {"id": "solve (init_prompt)"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client"}, {"id": "client : Client"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents"}, {"id": "add_documents(data_source: DataSource, documents: List[dict])"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search"}, {"id": "search(query)"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index"}, {"id": "set_index(index)"}, {"id": "metagpt/memory/memory.py"}, {"id": "metagpt/memory/memory.py:Memory"}, {"id": "metagpt/memory/memory.py:Memory:ignore_id"}, {"id": "ignore_id : bool"}, {"id": "metagpt/memory/memory.py:Memory:index"}, {"id": "index : DefaultDict[str, list[SerializeAsAny[Message]]]"}, {"id": "metagpt/memory/memory.py:Memory:storage"}, {"id": "storage : list[SerializeAsAny[Message]]"}, {"id": "metagpt/memory/memory.py:Memory:add"}, {"id": "metagpt/memory/memory.py:Memory:add_batch"}, {"id": "add_batch(messages: Iterable[Message])"}, {"id": "metagpt/memory/memory.py:Memory:clear"}, {"id": "metagpt/memory/memory.py:Memory:count"}, {"id": "count(): int"}, {"id": "metagpt/memory/memory.py:Memory:delete"}, {"id": "metagpt/memory/memory.py:Memory:delete_newest"}, {"id": "delete_newest(): 'Message'"}, {"id": "metagpt/memory/memory.py:Memory:deserialize"}, {"id": "deserialize(stg_path: Path): 'Memory'"}, {"id": "metagpt/memory/memory.py:Memory:find_news"}, {"id": "metagpt/memory/memory.py:Memory:get"}, {"id": "get(k): list[Message]"}, {"id": "metagpt/memory/memory.py:Memory:get_by_action"}, {"id": "get_by_action(action): list[Message]"}, {"id": "metagpt/memory/memory.py:Memory:get_by_actions"}, {"id": "get_by_actions(actions: Set): list[Message]"}, {"id": "metagpt/memory/memory.py:Memory:get_by_content"}, {"id": "get_by_content(content: str): list[Message]"}, {"id": "metagpt/memory/memory.py:Memory:get_by_role"}, {"id": "get_by_role(role: str): list[Message]"}, {"id": "metagpt/memory/memory.py:Memory:serialize"}, {"id": "metagpt/memory/memory.py:Memory:try_remember"}, {"id": "try_remember(keyword: str): list[Message]"}, {"id": "metagpt/memory/memory_storage.py"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:embedding"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized"}, {"id": "is_initialized"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl"}, {"id": "mem_ttl : int"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:role_id"}, {"id": "role_id : Optional[str]"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path"}, {"id": "role_mem_path : Optional[str], Path"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:store"}, {"id": "store : NoneType, Optional[FAISS]"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:threshold"}, {"id": "threshold : float"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:add"}, {"id": "add(message: Message): bool"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:clean"}, {"id": "clean()"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:persist"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory"}, {"id": "recover_memory(role_id: str): list[Message]"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar"}, {"id": "search_dissimilar(message: Message, k): list[Message]"}, {"id": "metagpt/schema.py:Message"}, {"id": "metagpt/schema.py:Message:cause_by"}, {"id": "cause_by : str"}, {"id": "metagpt/schema.py:Message:content"}, {"id": "metagpt/schema.py:Message:id"}, {"id": "id : str"}, {"id": "metagpt/schema.py:Message:instruct_content"}, {"id": "instruct_content : Optional[BaseModel]"}, {"id": "metagpt/schema.py:Message:role"}, {"id": "role : str"}, {"id": "metagpt/schema.py:Message:send_to"}, {"id": "send_to : set[str]"}, {"id": "metagpt/schema.py:Message:sent_from"}, {"id": "sent_from : str"}, {"id": "metagpt/schema.py:Message:check_cause_by"}, {"id": "check_cause_by(cause_by: Any): str"}, {"id": "metagpt/schema.py:Message:check_id"}, {"id": "check_id(id: str): str"}, {"id": "metagpt/schema.py:Message:check_instruct_content"}, {"id": "check_instruct_content(ic: Any): BaseModel"}, {"id": "metagpt/schema.py:Message:check_send_to"}, {"id": "check_send_to(send_to: Any): set"}, {"id": "metagpt/schema.py:Message:check_sent_from"}, {"id": "check_sent_from(sent_from: Any): str"}, {"id": "metagpt/schema.py:Message:dump"}, {"id": "dump(): str"}, {"id": "metagpt/schema.py:Message:load"}, {"id": "load(val)"}, {"id": "metagpt/schema.py:Message:ser_instruct_content"}, {"id": "ser_instruct_content(ic: BaseModel): Union[str, None]"}, {"id": "metagpt/schema.py:Message:to_dict"}, {"id": "to_dict(): dict"}, {"id": "metagpt/schema.py:MessageQueue"}, {"id": "metagpt/schema.py:MessageQueue:model_config"}, {"id": "metagpt/schema.py:MessageQueue:dump"}, {"id": "metagpt/schema.py:MessageQueue:empty"}, {"id": "empty()"}, {"id": "metagpt/schema.py:MessageQueue:load"}, {"id": "load(data): 'MessageQueue'"}, {"id": "metagpt/schema.py:MessageQueue:pop"}, {"id": "pop(): Message \\| None"}, {"id": "metagpt/schema.py:MessageQueue:pop_all"}, {"id": "pop_all(): List[Message]"}, {"id": "metagpt/schema.py:MessageQueue:push"}, {"id": "push(msg: Message)"}, {"id": "metagpt/roles/assistant.py:MessageType"}, {"id": "metagpt/roles/assistant.py:MessageType:name"}, {"id": "metagpt/provider/metagpt_api.py"}, {"id": "metagpt/provider/metagpt_api.py:MetaGPTLLM"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url"}, {"id": "model_url"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image"}, {"id": "text_2_image(text, size_type)"}, {"id": "metagpt/strategy/tot_schema.py"}, {"id": "metagpt/strategy/tot_schema.py:MethodSelect"}, {"id": "metagpt/strategy/tot_schema.py:MethodSelect:name"}, {"id": "metagpt/tools/moderation.py"}, {"id": "metagpt/tools/moderation.py:Moderation"}, {"id": "metagpt/tools/moderation.py:Moderation:llm"}, {"id": "metagpt/tools/moderation.py:Moderation:amoderation"}, {"id": "amoderation(content: Union[str, list[str]])"}, {"id": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories"}, {"id": "amoderation_with_categories(content: Union[str, list[str]])"}, {"id": "metagpt/tools/moderation.py:Moderation:handle_moderation_results"}, {"id": "handle_moderation_results(results)"}, {"id": "metagpt/utils/common.py:NoMoneyException"}, {"id": "metagpt/utils/common.py:NoMoneyException:amount"}, {"id": "amount"}, {"id": "metagpt/utils/common.py:NoMoneyException:message"}, {"id": "metagpt/config.py:NotConfiguredException"}, {"id": "metagpt/config.py:NotConfiguredException:message"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:OCRResults"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result"}, {"id": "ocr_result : str"}, {"id": "metagpt/provider/ollama_api.py"}, {"id": "metagpt/provider/ollama_api.py:OllamaCostManager"}, {"id": "metagpt/provider/ollama_api.py:OllamaCostManager:total_completion_tokens"}, {"id": "total_completion_tokens"}, {"id": "metagpt/provider/ollama_api.py:OllamaCostManager:total_prompt_tokens"}, {"id": "total_prompt_tokens"}, {"id": "metagpt/provider/ollama_api.py:OllamaCostManager:update_cost"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"id": "client"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:http_method"}, {"id": "http_method : str"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:model"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url"}, {"id": "suffix_url : str"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion"}, {"id": "acompletion(messages: list[dict], timeout): dict"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text"}, {"id": "get_choice_text(resp: dict): str"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage"}, {"id": "get_usage(resp: dict): dict"}, {"id": "metagpt/provider/openai_api.py"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aclient"}, {"id": "aclient : AsyncOpenAI"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:model"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aask_code"}, {"id": "aask_code(messages: Union[str, Message, list[dict]]): dict"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:acompletion"}, {"id": "acompletion(messages: list[dict], timeout): ChatCompletion"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:amoderation"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments"}, {"id": "get_choice_function_arguments(rsp: ChatCompletion): dict"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text"}, {"id": "get_choice_text(rsp: ChatCompletion): str"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_costs"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:data"}, {"id": "data"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location"}, {"id": "operation_location"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:organization"}, {"id": "organization"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id"}, {"id": "request_id"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms"}, {"id": "response_ms"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after"}, {"id": "retry_after"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:openai_api_key"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding"}, {"id": "text_2_embedding(text, model)"}, {"id": "metagpt/tools/openai_text_to_image.py"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data"}, {"id": "get_image_data(url)"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image"}, {"id": "metagpt/provider/open_llm_api.py"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:auto_max_tokens"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:config"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:is_azure"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:model"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:rpm"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLMCostManager"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:total_completion_tokens"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:total_prompt_tokens"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:update_cost"}, {"id": "metagpt/utils/common.py:OutputParser"}, {"id": "metagpt/utils/common.py:OutputParser:extract_content"}, {"id": "extract_content(text, tag)"}, {"id": "metagpt/utils/common.py:OutputParser:extract_struct"}, {"id": "extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]"}, {"id": "metagpt/utils/common.py:OutputParser:parse_blocks"}, {"id": "metagpt/utils/common.py:OutputParser:parse_code"}, {"id": "parse_code(text: str, lang: str): str"}, {"id": "metagpt/utils/common.py:OutputParser:parse_data"}, {"id": "parse_data(data)"}, {"id": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping"}, {"id": "parse_data_with_mapping(data, mapping)"}, {"id": "metagpt/utils/common.py:OutputParser:parse_file_list"}, {"id": "parse_file_list(text: str): list[str]"}, {"id": "metagpt/utils/common.py:OutputParser:parse_python_code"}, {"id": "parse_python_code(text: str): str"}, {"id": "metagpt/utils/common.py:OutputParser:parse_str"}, {"id": "parse_str(text: str)"}, {"id": "metagpt/learn/skill_loader.py:Parameter"}, {"id": "metagpt/learn/skill_loader.py:Parameter:description"}, {"id": "description : Optional[str]"}, {"id": "metagpt/learn/skill_loader.py:Parameter:type"}, {"id": "type : str"}, {"id": "metagpt/tools/web_browser_engine_playwright.py"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type"}, {"id": "browser_type : Literal['chromium', 'firefox', 'webkit'] \\| None"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs"}, {"id": "launch_kwargs : dict \\| None"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run"}, {"id": "run(url: str): WebPage \\| list[WebPage]"}, {"id": "metagpt/actions/prepare_documents.py"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:context"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:name"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:run"}, {"id": "run(with_messages)"}, {"id": "metagpt/actions/prepare_interview.py"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview:name"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview:run"}, {"id": "metagpt/roles/product_manager.py"}, {"id": "metagpt/roles/product_manager.py:ProductManager"}, {"id": "metagpt/roles/product_manager.py:ProductManager:constraints"}, {"id": "metagpt/roles/product_manager.py:ProductManager:goal"}, {"id": "metagpt/roles/product_manager.py:ProductManager:name"}, {"id": "metagpt/roles/product_manager.py:ProductManager:profile"}, {"id": "metagpt/roles/product_manager.py:ProductManager:todo"}, {"id": "metagpt/roles/product_manager.py:ProductManager:todo_action"}, {"id": "todo_action : str"}, {"id": "metagpt/roles/project_manager.py"}, {"id": "metagpt/roles/project_manager.py:ProjectManager"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:constraints"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:goal"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:name"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:profile"}, {"id": "metagpt/roles/prompt.py"}, {"id": "metagpt/roles/prompt.py:PromptString"}, {"id": "metagpt/roles/prompt.py:PromptString:name"}, {"id": "metagpt/roles/qa_engineer.py"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:constraints"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:goal"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:name"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:profile"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:test_round"}, {"id": "test_round : int"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed"}, {"id": "test_round_allowed : int"}, {"id": "metagpt/document_store/qdrant_store.py"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key"}, {"id": "api_key : Optional[str]"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:host"}, {"id": "host : Optional[str]"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory"}, {"id": "memory : bool"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:port"}, {"id": "port : Optional[int]"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:url"}, {"id": "url : Optional[str]"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:client"}, {"id": "client : QdrantClient"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:add"}, {"id": "add(collection_name: str, points: List[PointStruct])"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection"}, {"id": "create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection"}, {"id": "delete_collection(collection_name: str, timeout)"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection"}, {"id": "has_collection(collection_name: str)"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:search"}, {"id": "search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:write "}, {"id": "metagpt/actions/rebuild_class_view.py"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run"}, {"id": "run(with_messages, format)"}, {"id": "metagpt/actions/rebuild_sequence_view.py"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run"}, {"id": "metagpt/utils/redis.py"}, {"id": "metagpt/utils/redis.py:Redis"}, {"id": "metagpt/utils/redis.py:Redis:is_configured"}, {"id": "is_configured"}, {"id": "metagpt/utils/redis.py:Redis:is_valid"}, {"id": "metagpt/utils/redis.py:Redis:close"}, {"id": "close()"}, {"id": "metagpt/utils/redis.py:Redis:get"}, {"id": "get(key: str): bytes \\| None"}, {"id": "metagpt/utils/redis.py:Redis:set"}, {"id": "set(key: str, data: str, timeout_sec: int)"}, {"id": "metagpt/utils/repair_llm_raw_output.py"}, {"id": "metagpt/utils/repair_llm_raw_output.py:RepairType"}, {"id": "metagpt/utils/repair_llm_raw_output.py:RepairType:name"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ReplyData"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:context"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:llm"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:name"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run"}, {"id": "run(query: str, ocr_result: list): str"}, {"id": "metagpt/document.py:Repo"}, {"id": "metagpt/document.py:Repo:assets"}, {"id": "assets : dict[Path, Document]"}, {"id": "metagpt/document.py:Repo:codes"}, {"id": "codes : dict[Path, Document]"}, {"id": "metagpt/document.py:Repo:docs"}, {"id": "docs : dict[Path, Document]"}, {"id": "metagpt/document.py:Repo:name"}, {"id": "metagpt/document.py:Repo:path"}, {"id": "metagpt/document.py:Repo:eda"}, {"id": "eda(): RepoMetadata"}, {"id": "metagpt/document.py:Repo:from_path"}, {"id": "metagpt/document.py:Repo:get"}, {"id": "get(filename: str): Optional[Document]"}, {"id": "metagpt/document.py:Repo:get_text_documents"}, {"id": "get_text_documents(): list[Document]"}, {"id": "metagpt/document.py:Repo:set"}, {"id": "set(filename: str, content: str)"}, {"id": "metagpt/document.py:Repo:to_path"}, {"id": "to_path()"}, {"id": "metagpt/repo_parser.py:RepoFileInfo"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:classes"}, {"id": "classes : List"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:file"}, {"id": "file : str"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:functions"}, {"id": "functions : List"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:globals"}, {"id": "globals : List"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:page_info"}, {"id": "page_info : List"}, {"id": "metagpt/document.py:RepoMetadata"}, {"id": "metagpt/document.py:RepoMetadata:n_chars"}, {"id": "n_chars : int"}, {"id": "metagpt/document.py:RepoMetadata:n_docs"}, {"id": "n_docs : int"}, {"id": "metagpt/document.py:RepoMetadata:name"}, {"id": "metagpt/document.py:RepoMetadata:symbols"}, {"id": "symbols : list"}, {"id": "metagpt/repo_parser.py:RepoParser"}, {"id": "metagpt/repo_parser.py:RepoParser:base_directory"}, {"id": "base_directory : Path"}, {"id": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info"}, {"id": "extract_class_and_function_info(tree, file_path): RepoFileInfo"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure"}, {"id": "generate_dataframe_structure(output_path)"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_json_structure"}, {"id": "generate_json_structure(output_path)"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_structure"}, {"id": "generate_structure(output_path, mode): Path"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_symbols"}, {"id": "generate_symbols(): List[RepoFileInfo]"}, {"id": "metagpt/repo_parser.py:RepoParser:node_to_str"}, {"id": "node_to_str(node): CodeBlockInfo \\| None"}, {"id": "metagpt/repo_parser.py:RepoParser:rebuild_class_views"}, {"id": "rebuild_class_views(path: str \\| Path)"}, {"id": "metagpt/roles/researcher.py"}, {"id": "metagpt/roles/researcher.py:Report"}, {"id": "metagpt/roles/researcher.py:Report:content"}, {"id": "metagpt/roles/researcher.py:Report:links"}, {"id": "links : Optional[dict[str, list[str]]]"}, {"id": "metagpt/roles/researcher.py:Report:summaries"}, {"id": "summaries : Optional[list[tuple[str, str]]]"}, {"id": "metagpt/roles/researcher.py:Report:topic"}, {"id": "topic : str"}, {"id": "metagpt/roles/researcher.py:Researcher"}, {"id": "metagpt/roles/researcher.py:Researcher:constraints"}, {"id": "metagpt/roles/researcher.py:Researcher:goal"}, {"id": "metagpt/roles/researcher.py:Researcher:language"}, {"id": "metagpt/roles/researcher.py:Researcher:name"}, {"id": "metagpt/roles/researcher.py:Researcher:profile"}, {"id": "metagpt/roles/researcher.py:Researcher:react"}, {"id": "react(): Message"}, {"id": "metagpt/roles/researcher.py:Researcher:research_system_text"}, {"id": "research_system_text(topic, current_task: Action): str"}, {"id": "metagpt/roles/researcher.py:Researcher:write_report"}, {"id": "write_report(topic: str, content: str)"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data"}, {"id": "data : List[Embedding]"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_"}, {"id": "object_ : str"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"id": "usage"}, {"id": "metagpt/learn/skill_loader.py:Returns"}, {"id": "metagpt/learn/skill_loader.py:Returns:format"}, {"id": "format : Optional[str]"}, {"id": "metagpt/learn/skill_loader.py:Returns:type"}, {"id": "metagpt/roles/role.py"}, {"id": "metagpt/roles/role.py:Role"}, {"id": "metagpt/roles/role.py:Role:action_count"}, {"id": "action_count"}, {"id": "metagpt/roles/role.py:Role:actions"}, {"id": "actions : list[SerializeAsAny[Action]]"}, {"id": "metagpt/roles/role.py:Role:constraints"}, {"id": "metagpt/roles/role.py:Role:desc"}, {"id": "metagpt/roles/role.py:Role:goal"}, {"id": "metagpt/roles/role.py:Role:is_human"}, {"id": "is_human : bool"}, {"id": "metagpt/roles/role.py:Role:is_idle"}, {"id": "metagpt/roles/role.py:Role:latest_observed_msg"}, {"id": "latest_observed_msg : Optional[Message]"}, {"id": "metagpt/roles/role.py:Role:llm"}, {"id": "metagpt/roles/role.py:Role:model_config"}, {"id": "metagpt/roles/role.py:Role:name"}, {"id": "metagpt/roles/role.py:Role:profile"}, {"id": "metagpt/roles/role.py:Role:rc"}, {"id": "rc"}, {"id": "metagpt/roles/role.py:Role:recovered"}, {"id": "recovered : bool"}, {"id": "metagpt/roles/role.py:Role:role_id"}, {"id": "role_id : str"}, {"id": "metagpt/roles/role.py:Role:states"}, {"id": "states : list[str]"}, {"id": "metagpt/roles/role.py:Role:subscription"}, {"id": "subscription : set[str]"}, {"id": "metagpt/roles/role.py:Role:todo"}, {"id": "metagpt/roles/role.py:Role:act"}, {"id": "act(): ActionOutput"}, {"id": "metagpt/roles/role.py:Role:check_subscription"}, {"id": "check_subscription()"}, {"id": "metagpt/roles/role.py:Role:deserialize"}, {"id": "deserialize(stg_path: Path): 'Role'"}, {"id": "metagpt/roles/role.py:Role:get_memories"}, {"id": "get_memories(k): list[Message]"}, {"id": "metagpt/roles/role.py:Role:init_actions"}, {"id": "init_actions(actions)"}, {"id": "metagpt/roles/role.py:Role:is_watch"}, {"id": "is_watch(caused_by: str)"}, {"id": "metagpt/roles/role.py:Role:publish_message"}, {"id": "publish_message(msg)"}, {"id": "metagpt/roles/role.py:Role:put_message"}, {"id": "put_message(message)"}, {"id": "metagpt/roles/role.py:Role:react"}, {"id": "metagpt/roles/role.py:Role:refresh_system_message"}, {"id": "refresh_system_message()"}, {"id": "metagpt/roles/role.py:Role:run"}, {"id": "run(with_message): Message \\| None"}, {"id": "metagpt/roles/role.py:Role:serialize"}, {"id": "metagpt/roles/role.py:Role:set_env"}, {"id": "set_env(env: 'Environment')"}, {"id": "metagpt/roles/role.py:Role:set_memory"}, {"id": "set_memory(memory: Memory)"}, {"id": "metagpt/roles/role.py:Role:set_recovered"}, {"id": "set_recovered(recovered: bool)"}, {"id": "metagpt/roles/role.py:Role:subscribe"}, {"id": "subscribe(tags: Set[str])"}, {"id": "metagpt/roles/role.py:Role:think"}, {"id": "think(): Action"}, {"id": "metagpt/roles/role.py:RoleContext"}, {"id": "metagpt/roles/role.py:RoleContext:env"}, {"id": "env : str"}, {"id": "metagpt/roles/role.py:RoleContext:history"}, {"id": "history"}, {"id": "metagpt/roles/role.py:RoleContext:important_memory"}, {"id": "important_memory"}, {"id": "metagpt/roles/role.py:RoleContext:max_react_loop"}, {"id": "max_react_loop : int"}, {"id": "metagpt/roles/role.py:RoleContext:memory"}, {"id": "metagpt/roles/role.py:RoleContext:model_config"}, {"id": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"id": "msg_buffer"}, {"id": "metagpt/roles/role.py:RoleContext:news"}, {"id": "news : list[Type[Message]]"}, {"id": "metagpt/roles/role.py:RoleContext:react_mode"}, {"id": "react_mode"}, {"id": "metagpt/roles/role.py:RoleContext:state"}, {"id": "state : int"}, {"id": "metagpt/roles/role.py:RoleContext:todo"}, {"id": "metagpt/roles/role.py:RoleContext:watch"}, {"id": "watch : set[str]"}, {"id": "metagpt/roles/role.py:RoleContext:check "}, {"id": "check (role_id: str)"}, {"id": "metagpt/roles/role.py:RoleReactMode"}, {"id": "metagpt/roles/role.py:RoleReactMode:name"}, {"id": "metagpt/roles/role.py:RoleReactMode:values"}, {"id": "values()"}, {"id": "metagpt/actions/run_code.py"}, {"id": "metagpt/actions/run_code.py:RunCode"}, {"id": "metagpt/actions/run_code.py:RunCode:context"}, {"id": "metagpt/actions/run_code.py:RunCode:name"}, {"id": "metagpt/actions/run_code.py:RunCode:run"}, {"id": "run(): RunCodeResult"}, {"id": "metagpt/actions/run_code.py:RunCode:run_script"}, {"id": "run_script(working_directory, additional_python_paths, command): Tuple[str, str]"}, {"id": "metagpt/actions/run_code.py:RunCode:run_text"}, {"id": "run_text(code): Tuple[str, str]"}, {"id": "metagpt/schema.py:RunCodeContext"}, {"id": "metagpt/schema.py:RunCodeContext:additional_python_paths"}, {"id": "additional_python_paths : List[str]"}, {"id": "metagpt/schema.py:RunCodeContext:code"}, {"id": "code : Optional[str]"}, {"id": "metagpt/schema.py:RunCodeContext:code_filename"}, {"id": "code_filename : str"}, {"id": "metagpt/schema.py:RunCodeContext:command"}, {"id": "command : List[str]"}, {"id": "metagpt/schema.py:RunCodeContext:mode"}, {"id": "mode : str"}, {"id": "metagpt/schema.py:RunCodeContext:output"}, {"id": "output : Optional[str]"}, {"id": "metagpt/schema.py:RunCodeContext:output_filename"}, {"id": "output_filename : Optional[str]"}, {"id": "metagpt/schema.py:RunCodeContext:test_code"}, {"id": "test_code : Optional[str]"}, {"id": "metagpt/schema.py:RunCodeContext:test_filename"}, {"id": "test_filename : str"}, {"id": "metagpt/schema.py:RunCodeContext:working_directory"}, {"id": "working_directory : str"}, {"id": "metagpt/schema.py:RunCodeResult"}, {"id": "metagpt/schema.py:RunCodeResult:stderr"}, {"id": "stderr : str"}, {"id": "metagpt/schema.py:RunCodeResult:stdout"}, {"id": "stdout : str"}, {"id": "metagpt/schema.py:RunCodeResult:summary"}, {"id": "summary : str"}, {"id": "metagpt/utils/s3.py"}, {"id": "metagpt/utils/s3.py:S3"}, {"id": "metagpt/utils/s3.py:S3:auth_config"}, {"id": "auth_config : dict"}, {"id": "metagpt/utils/s3.py:S3:is_configured"}, {"id": "metagpt/utils/s3.py:S3:is_valid"}, {"id": "metagpt/utils/s3.py:S3:session"}, {"id": "session : Session"}, {"id": "metagpt/utils/s3.py:S3:cache"}, {"id": "cache(data: str, file_ext: str, format: str): str"}, {"id": "metagpt/utils/s3.py:S3:download_file"}, {"id": "download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None"}, {"id": "metagpt/utils/s3.py:S3:get_object"}, {"id": "get_object(bucket: str, object_name: str): bytes"}, {"id": "metagpt/utils/s3.py:S3:get_object_url"}, {"id": "get_object_url(bucket: str, object_name: str): str"}, {"id": "metagpt/utils/s3.py:S3:upload_file"}, {"id": "upload_file(bucket: str, local_path: str, object_name: str): None"}, {"id": "metagpt/tools/sd_engine.py"}, {"id": "metagpt/tools/sd_engine.py:SDEngine"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:payload"}, {"id": "payload : dict"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:sd_t2i_url"}, {"id": "sd_t2i_url"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:sd_url"}, {"id": "sd_url"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:construct_payload"}, {"id": "construct_payload(prompt, negtive_prompt, width, height, sd_model)"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:run"}, {"id": "run(url, payload, session)"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:run_i2i "}, {"id": "run_i2i ()"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:run_sam "}, {"id": "run_sam ()"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:run_t2i"}, {"id": "run_t2i(prompts: List)"}, {"id": "metagpt/utils/graph_repository.py:SPO"}, {"id": "metagpt/utils/graph_repository.py:SPO:object_"}, {"id": "metagpt/utils/graph_repository.py:SPO:predicate"}, {"id": "predicate : str"}, {"id": "metagpt/utils/graph_repository.py:SPO:subject"}, {"id": "subject : str"}, {"id": "metagpt/roles/sales.py"}, {"id": "metagpt/roles/sales.py:Sales"}, {"id": "metagpt/roles/sales.py:Sales:desc"}, {"id": "metagpt/roles/sales.py:Sales:name"}, {"id": "metagpt/roles/sales.py:Sales:profile"}, {"id": "metagpt/roles/sales.py:Sales:store"}, {"id": "metagpt/actions/search_and_summarize.py"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:config"}, {"id": "config : NoneType"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content"}, {"id": "content : Optional[str]"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine"}, {"id": "engine : Optional[SearchEngineType]"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result"}, {"id": "result : str"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"id": "search_engine : Optional[SearchEngine]"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func"}, {"id": "search_func : Optional[Any]"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run"}, {"id": "run(context: list[Message], system_text): str"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func"}, {"id": "validate_engine_and_run_func(values)"}, {"id": "metagpt/tools/search_engine.py"}, {"id": "metagpt/tools/search_engine.py:SearchEngine"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:run_func"}, {"id": "run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:run"}, {"id": "run(query: str, max_results: int, as_string: Literal[True]): str"}, {"id": "metagpt/tools"}, {"id": "metagpt/tools:SearchEngineType"}, {"id": "metagpt/tools:SearchEngineType:name"}, {"id": "metagpt/roles/searcher.py"}, {"id": "metagpt/roles/searcher.py:Searcher"}, {"id": "metagpt/roles/searcher.py:Searcher:constraints"}, {"id": "metagpt/roles/searcher.py:Searcher:engine"}, {"id": "engine"}, {"id": "metagpt/roles/searcher.py:Searcher:goal"}, {"id": "metagpt/roles/searcher.py:Searcher:name"}, {"id": "metagpt/roles/searcher.py:Searcher:profile"}, {"id": "metagpt/roles/searcher.py:Searcher:set_search_func"}, {"id": "set_search_func(search_func)"}, {"id": "metagpt/tools/web_browser_engine_selenium.py"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type"}, {"id": "browser_type : Literal['chrome', 'firefox', 'edge', 'ie'] \\| None"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path"}, {"id": "executable_path"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args"}, {"id": "launch_args"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run"}, {"id": "metagpt/schema.py:SerializationMixin"}, {"id": "metagpt/tools/search_engine_serpapi.py"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession"}, {"id": "aiosession : Optional[aiohttp.ClientSession]"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params"}, {"id": "params : dict"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine"}, {"id": "search_engine : Optional[Any]"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key"}, {"id": "serpapi_api_key : Optional[str]"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key"}, {"id": "check_serpapi_api_key(val: str)"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params"}, {"id": "get_params(query: str): Dict[str, str]"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results"}, {"id": "results(query: str, max_results: int): dict"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run"}, {"id": "run(query, max_results: int, as_string: bool): str"}, {"id": "metagpt/tools/search_engine_serper.py"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key"}, {"id": "serper_api_key : Optional[str]"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key"}, {"id": "check_serper_api_key(val: str)"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers"}, {"id": "get_headers(): Dict[str, str]"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads"}, {"id": "get_payloads(queries: list[str], max_results: int): Dict[str, str]"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:results"}, {"id": "results(queries: list[str], max_results: int): dict"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:run"}, {"id": "run(query: str, max_results: int, as_string: bool): str"}, {"id": "metagpt/schema.py:SimpleMessage"}, {"id": "metagpt/schema.py:SimpleMessage:content"}, {"id": "metagpt/schema.py:SimpleMessage:role"}, {"id": "metagpt/utils/singleton.py"}, {"id": "metagpt/utils/singleton.py:Singleton"}, {"id": "metagpt/roles/sk_agent.py"}, {"id": "metagpt/roles/sk_agent.py:SkAgent"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:constraints"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:goal"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory"}, {"id": "import_semantic_skill_from_directory : Callable"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:import_skill"}, {"id": "import_skill : Callable"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:kernel"}, {"id": "kernel : Kernel"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:llm"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:name"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:plan"}, {"id": "plan : Plan"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:planner"}, {"id": "planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:planner_cls"}, {"id": "planner_cls : Optional[Any]"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:profile"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:run"}, {"id": "run(query: str): str"}, {"id": "metagpt/learn/skill_loader.py:Skill"}, {"id": "metagpt/learn/skill_loader.py:Skill:arguments"}, {"id": "arguments"}, {"id": "metagpt/learn/skill_loader.py:Skill:description"}, {"id": "metagpt/learn/skill_loader.py:Skill:examples"}, {"id": "examples : List[Example]"}, {"id": "metagpt/learn/skill_loader.py:Skill:id"}, {"id": "id : Optional[str]"}, {"id": "metagpt/learn/skill_loader.py:Skill:name"}, {"id": "metagpt/learn/skill_loader.py:Skill:parameters"}, {"id": "parameters : Optional[Dict[str, Parameter]]"}, {"id": "metagpt/learn/skill_loader.py:Skill:returns"}, {"id": "returns"}, {"id": "metagpt/learn/skill_loader.py:Skill:x_prerequisite"}, {"id": "x_prerequisite : Dict"}, {"id": "metagpt/actions/skill_action.py:SkillAction"}, {"id": "metagpt/actions/skill_action.py:SkillAction:args"}, {"id": "args : Dict"}, {"id": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"id": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"id": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function"}, {"id": "find_and_call_function(function_name, args): str"}, {"id": "metagpt/actions/skill_action.py:SkillAction:run"}, {"id": "metagpt/management/skill_manager.py"}, {"id": "metagpt/management/skill_manager.py:SkillManager"}, {"id": "metagpt/management/skill_manager.py:SkillManager:add_skill"}, {"id": "add_skill(skill: Skill)"}, {"id": "metagpt/management/skill_manager.py:SkillManager:del_skill"}, {"id": "del_skill(skill_name: str)"}, {"id": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc"}, {"id": "generate_skill_desc(skill: Skill): str"}, {"id": "metagpt/management/skill_manager.py:SkillManager:get_skill"}, {"id": "get_skill(skill_name: str): Skill"}, {"id": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill"}, {"id": "retrieve_skill(desc: str, n_results: int): list[Skill]"}, {"id": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored"}, {"id": "retrieve_skill_scored(desc: str, n_results: int): dict"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:components"}, {"id": "components : Optional[Components]"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities"}, {"id": "entities : Dict[str, Entity]"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi"}, {"id": "skillapi : str"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill"}, {"id": "get_skill(name, entity_name: str): Skill"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list"}, {"id": "get_skill_list(entity_name: str): Dict"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:load"}, {"id": "load(skill_yaml_file_name: Path): 'SkillsDeclaration'"}, {"id": "metagpt/provider/spark_api.py:SparkLLM"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:acompletion"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text"}, {"id": "metagpt/strategy/tot_schema.py:Strategy"}, {"id": "metagpt/strategy/tot_schema.py:Strategy:name"}, {"id": "metagpt/subscription.py"}, {"id": "metagpt/subscription.py:SubscriptionRunner"}, {"id": "metagpt/subscription.py:SubscriptionRunner:model_config"}, {"id": "metagpt/subscription.py:SubscriptionRunner:tasks"}, {"id": "tasks : dict[Role, asyncio.Task]"}, {"id": "metagpt/subscription.py:SubscriptionRunner:run"}, {"id": "run(raise_exception: bool)"}, {"id": "metagpt/subscription.py:SubscriptionRunner:subscribe"}, {"id": "subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])"}, {"id": "metagpt/subscription.py:SubscriptionRunner:unsubscribe"}, {"id": "unsubscribe(role: Role)"}, {"id": "metagpt/actions/summarize_code.py"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:context"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:name"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:run"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code"}, {"id": "summarize_code(prompt)"}, {"id": "metagpt/schema.py:SystemMessage"}, {"id": "metagpt/actions/talk_action.py"}, {"id": "metagpt/actions/talk_action.py:TalkAction"}, {"id": "metagpt/actions/talk_action.py:TalkAction:aask_args"}, {"id": "aask_args"}, {"id": "metagpt/actions/talk_action.py:TalkAction:context"}, {"id": "metagpt/actions/talk_action.py:TalkAction:history_summary"}, {"id": "history_summary : str"}, {"id": "metagpt/actions/talk_action.py:TalkAction:knowledge"}, {"id": "knowledge : str"}, {"id": "metagpt/actions/talk_action.py:TalkAction:prompt"}, {"id": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4"}, {"id": "prompt_gpt4"}, {"id": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"id": "metagpt/actions/talk_action.py:TalkAction:run"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION"}, {"id": "FORMATION : str"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE"}, {"id": "FORMATION_LOOSE : str"}, {"id": "metagpt/roles/teacher.py"}, {"id": "metagpt/roles/teacher.py:Teacher"}, {"id": "metagpt/roles/teacher.py:Teacher:constraints"}, {"id": "metagpt/roles/teacher.py:Teacher:course_title"}, {"id": "course_title"}, {"id": "metagpt/roles/teacher.py:Teacher:desc"}, {"id": "metagpt/roles/teacher.py:Teacher:goal"}, {"id": "metagpt/roles/teacher.py:Teacher:name"}, {"id": "metagpt/roles/teacher.py:Teacher:profile"}, {"id": "metagpt/roles/teacher.py:Teacher:new_file_name"}, {"id": "new_file_name(lesson_title, ext)"}, {"id": "metagpt/roles/teacher.py:Teacher:save"}, {"id": "save(content)"}, {"id": "metagpt/actions/write_teaching_plan.py"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE"}, {"id": "COURSE_TITLE : str"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG"}, {"id": "DATA_BEGIN_TAG : str"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG"}, {"id": "DATA_END_TAG : str"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE"}, {"id": "PROMPT_TEMPLATE : str"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE"}, {"id": "PROMPT_TITLE_TEMPLATE : str"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS"}, {"id": "TOPICS : list"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS"}, {"id": "TOPIC_STATEMENTS : dict"}, {"id": "metagpt/team.py"}, {"id": "metagpt/team.py:Team"}, {"id": "metagpt/team.py:Team:env"}, {"id": "env"}, {"id": "metagpt/team.py:Team:idea"}, {"id": "idea : str"}, {"id": "metagpt/team.py:Team:investment"}, {"id": "investment : float"}, {"id": "metagpt/team.py:Team:model_config"}, {"id": "metagpt/team.py:Team:deserialize"}, {"id": "deserialize(stg_path: Path): 'Team'"}, {"id": "metagpt/team.py:Team:hire"}, {"id": "hire(roles: list[Role])"}, {"id": "metagpt/team.py:Team:invest"}, {"id": "invest(investment: float)"}, {"id": "metagpt/team.py:Team:run"}, {"id": "run(n_round, idea, send_to, auto_archive)"}, {"id": "metagpt/team.py:Team:run_project"}, {"id": "run_project(idea, send_to: str)"}, {"id": "metagpt/team.py:Team:serialize"}, {"id": "metagpt/team.py:Team:start_project"}, {"id": "start_project(idea, send_to: str)"}, {"id": "metagpt/schema.py:TestingContext"}, {"id": "metagpt/schema.py:TestingContext:code_doc"}, {"id": "code_doc"}, {"id": "metagpt/schema.py:TestingContext:filename"}, {"id": "metagpt/schema.py:TestingContext:test_doc"}, {"id": "test_doc : Optional[Document]"}, {"id": "metagpt/strategy/base.py:ThoughtNode"}, {"id": "metagpt/strategy/base.py:ThoughtNode:id"}, {"id": "id : int"}, {"id": "metagpt/strategy/base.py:ThoughtNode:name"}, {"id": "metagpt/strategy/base.py:ThoughtNode:valid_status"}, {"id": "valid_status : bool"}, {"id": "metagpt/strategy/base.py:ThoughtNode:value"}, {"id": "value : int"}, {"id": "metagpt/strategy/base.py:ThoughtNode:update_valid_status"}, {"id": "update_valid_status(status): None"}, {"id": "metagpt/strategy/base.py:ThoughtNode:update_value"}, {"id": "update_value(value): None"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree"}, {"id": "thought_tree : Optional[ThoughtTree]"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node"}, {"id": "evaluate_node(node, parent_value): None"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts"}, {"id": "generate_thoughts(current_state, current_node): List[ThoughtNode]"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes"}, {"id": "select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:solve "}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution"}, {"id": "update_solution()"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"id": "evaluator"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps"}, {"id": "max_steps : int"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select"}, {"id": "method_select : str"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample"}, {"id": "n_generate_sample : int"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample"}, {"id": "n_select_sample : int"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample"}, {"id": "n_solution_sample : int"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"id": "parser"}, {"id": "metagpt/strategy/base.py:ThoughtTree"}, {"id": "metagpt/strategy/base.py:ThoughtTree:all_nodes"}, {"id": "all_nodes"}, {"id": "metagpt/strategy/base.py:ThoughtTree:parse_node_path"}, {"id": "parse_node_path(node): List[str]"}, {"id": "metagpt/strategy/base.py:ThoughtTree:show"}, {"id": "show(): None"}, {"id": "metagpt/strategy/base.py:ThoughtTree:update_node"}, {"id": "update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]"}, {"id": "metagpt/tools/translator.py"}, {"id": "metagpt/tools/translator.py:Translator"}, {"id": "metagpt/tools/translator.py:Translator:translate_prompt"}, {"id": "translate_prompt(original, lang)"}, {"id": "metagpt/strategy/tot.py:TreeofThought"}, {"id": "metagpt/strategy/tot.py:TreeofThought:config"}, {"id": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"id": "solver"}, {"id": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"id": "strategy"}, {"id": "metagpt/strategy/tot.py:TreeofThought:solve"}, {"id": "metagpt/roles/tutorial_assistant.py"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title"}, {"id": "main_title : str"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content"}, {"id": "total_content : str"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react"}, {"id": "metagpt/tools/ut_writer.py"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method"}, {"id": "chatgpt_method : str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample"}, {"id": "icl_sample : str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:questions_path"}, {"id": "questions_path : str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file"}, {"id": "swagger_file : str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix"}, {"id": "template_prefix : str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path"}, {"id": "ut_py_path : str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save"}, {"id": "ask_gpt_and_save(question: str, tag: str, fname: str)"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc"}, {"id": "build_api_doc(node: dict, path: str, method: str): str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties"}, {"id": "build_object_properties(node, prop_object_required, level: int): str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut"}, {"id": "generate_ut(include_tags): bool"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json"}, {"id": "get_swagger_json(): dict"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping"}, {"id": "get_tags_mapping(): dict"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code"}, {"id": "gpt_msgs_to_code(messages: list): str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str"}, {"id": "para_to_str(name, prop, prop_object_required)"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens"}, {"id": "prompt_tokens : int"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens"}, {"id": "total_tokens : int"}, {"id": "metagpt/schema.py:UserMessage"}, {"id": "metagpt/actions/add_requirement.py"}, {"id": "metagpt/actions/add_requirement.py:UserRequirement"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get"}, {"id": "get(url)"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func"}, {"id": "browse_func : Optional[Union[Callable[[list[str]], None], None]]"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:context"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:desc"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:llm"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:name"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"id": "web_browser_engine : Optional[WebBrowserEngine]"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:run"}, {"id": "run(url: str): dict[str, str]"}, {"id": "metagpt/tools/web_browser_engine.py"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"id": "engine : WebBrowserEngineType \\| None"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func"}, {"id": "run_func : Callable[..., Coroutine[Any, Any, WebPage \\| list[WebPage]]] \\| None"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run"}, {"id": "run(url: str): WebPage"}, {"id": "metagpt/tools:WebBrowserEngineType"}, {"id": "metagpt/tools:WebBrowserEngineType:name"}, {"id": "metagpt/utils/parse_html.py"}, {"id": "metagpt/utils/parse_html.py:WebPage"}, {"id": "metagpt/utils/parse_html.py:WebPage:html"}, {"id": "html : str"}, {"id": "metagpt/utils/parse_html.py:WebPage:inner_text"}, {"id": "inner_text : str"}, {"id": "metagpt/utils/parse_html.py:WebPage:soup"}, {"id": "soup"}, {"id": "metagpt/utils/parse_html.py:WebPage:title"}, {"id": "title"}, {"id": "metagpt/utils/parse_html.py:WebPage:url"}, {"id": "metagpt/utils/parse_html.py:WebPage:get_links"}, {"id": "get_links(): Generator[str, None, None]"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen"}, {"id": "gen(question: str, step: str): list[str]"}, {"id": "metagpt/actions/write_code.py"}, {"id": "metagpt/actions/write_code.py:WriteCode"}, {"id": "metagpt/actions/write_code.py:WriteCode:context"}, {"id": "metagpt/actions/write_code.py:WriteCode:name"}, {"id": "metagpt/actions/write_code.py:WriteCode:get_codes"}, {"id": "get_codes(task_doc, exclude): str"}, {"id": "metagpt/actions/write_code.py:WriteCode:run"}, {"id": "run(): CodingContext"}, {"id": "metagpt/actions/write_code.py:WriteCode:write_code"}, {"id": "write_code(prompt): str"}, {"id": "metagpt/actions/write_code_an_draft.py"}, {"id": "metagpt/actions/write_code_an_draft.py:WriteCodeAN"}, {"id": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run"}, {"id": "metagpt/actions/write_code_review.py"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:context"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:name"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:run"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite"}, {"id": "write_code_review_and_rewrite(context_prompt, cr_prompt, filename)"}, {"id": "metagpt/actions/write_tutorial.py"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:directory"}, {"id": "directory : dict"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:language"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:name"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:run"}, {"id": "run(topic: str): str"}, {"id": "metagpt/actions/design_api.py"}, {"id": "metagpt/actions/design_api.py:WriteDesign"}, {"id": "metagpt/actions/design_api.py:WriteDesign:context"}, {"id": "metagpt/actions/design_api.py:WriteDesign:desc"}, {"id": "metagpt/actions/design_api.py:WriteDesign:name"}, {"id": "metagpt/actions/design_api.py:WriteDesign:run"}, {"id": "run(with_messages: Message, schema: str)"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:language"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:name"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:run"}, {"id": "run(topic: str): Dict"}, {"id": "metagpt/actions/write_docstring.py"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:context"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:desc"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:run"}, {"id": "run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring"}, {"id": "write_docstring(filename: str \\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str"}, {"id": "metagpt/actions/write_prd.py"}, {"id": "metagpt/actions/write_prd.py:WritePRD"}, {"id": "metagpt/actions/write_prd.py:WritePRD:content"}, {"id": "metagpt/actions/write_prd.py:WritePRD:name"}, {"id": "metagpt/actions/write_prd.py:WritePRD:run"}, {"id": "run(with_messages, schema): ActionOutput \\| Message"}, {"id": "metagpt/actions/write_prd_review.py"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:context"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:desc"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:name"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:prd"}, {"id": "prd : Optional[str]"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template"}, {"id": "prd_review_prompt_template : str"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:run"}, {"id": "run(prd)"}, {"id": "metagpt/actions/write_review.py"}, {"id": "metagpt/actions/write_review.py:WriteReview"}, {"id": "metagpt/actions/write_review.py:WriteReview:name"}, {"id": "metagpt/actions/write_review.py:WriteReview:run"}, {"id": "metagpt/actions/project_management.py"}, {"id": "metagpt/actions/project_management.py:WriteTasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:context"}, {"id": "metagpt/actions/project_management.py:WriteTasks:name"}, {"id": "metagpt/actions/project_management.py:WriteTasks:run"}, {"id": "run(with_messages, schema)"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:context"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp"}, {"id": "rsp : Optional[str]"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value"}, {"id": "format_value(value)"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run"}, {"id": "run(with_message)"}, {"id": "metagpt/actions/write_test.py"}, {"id": "metagpt/actions/write_test.py:WriteTest"}, {"id": "metagpt/actions/write_test.py:WriteTest:context"}, {"id": "context : Optional[TestingContext]"}, {"id": "metagpt/actions/write_test.py:WriteTest:name"}, {"id": "metagpt/actions/write_test.py:WriteTest:run"}, {"id": "run(): TestingContext"}, {"id": "metagpt/actions/write_test.py:WriteTest:write_code"}, {"id": "write_code(prompt)"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host"}, {"id": "host"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message"}, {"id": "message : NoneType"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path"}, {"id": "path"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url"}, {"id": "create_url()"}, {"id": "metagpt/provider/zhipuai_api.py"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion"}, {"id": "completion(messages: list[dict], timeout): dict"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:get_choice_text"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuEvent"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:ainvoke"}, {"id": "ainvoke(): dict"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest"}, {"id": "arequest(invoke_type: InvokeType, stream: bool, method: str, headers: dict, kwargs)"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:asse_invoke"}, {"id": "asse_invoke(): AsyncSSEClient"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:get_header"}, {"id": "get_header(): dict"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:get_sse_header"}, {"id": "get_sse_header(): dict"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url"}, {"id": "split_zhipu_api_url(invoke_type: InvokeType, kwargs)"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name"}, {"id": "metagpt/management/skill_manager.py:SkillManager:_store"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_cost_manager"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_cost_manager"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_cost_manager"}, {"id": "metagpt/utils/git_repository.py:GitRepository:_dependency"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_file"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_expr"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_name"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_if"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_if_compare"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_variable"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_assign"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_classes"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships"}, {"id": "metagpt/repo_parser.py:RepoParser:_split_class_line"}, {"id": "metagpt/repo_parser.py:RepoParser:_split_relationship_line"}, {"id": "metagpt/repo_parser.py:RepoParser:_get_label"}, {"id": "metagpt/repo_parser.py:RepoParser:_create_path_mapping"}, {"id": "metagpt/repo_parser.py:RepoParser:_repair_namespaces"}, {"id": "metagpt/repo_parser.py:RepoParser:_repair_ns"}, {"id": "metagpt/repo_parser.py:RepoParser:_find_root"}, {"id": "metagpt/repo_parser.py:is_func"}, {"id": "function"}, {"id": "metagpt/repo_parser.py:ast.Constant:\n@Time : 2023/11/17 17:58\n@Author : alexanderwu\n@File : repo_parser.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/17 17:58\\n@Author : alexanderwu\\n@File : repo_parser.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:__future__"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/repo_parser.py:names:['annotations']"}, {"id": "metagpt/repo_parser.py:ast"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:json"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:re"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:subprocess"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:pathlib"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/repo_parser.py:names:['Path']"}, {"id": "metagpt/repo_parser.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/repo_parser.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/repo_parser.py:pandas as pd"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:pydantic"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/repo_parser.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/repo_parser.py:module:metagpt.const"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"id": "metagpt/repo_parser.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']"}, {"id": "metagpt/repo_parser.py:module:metagpt.logs"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/repo_parser.py:names:['logger']"}, {"id": "metagpt/repo_parser.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"id": "metagpt/repo_parser.py:names:['any_to_str', 'aread']"}, {"id": "metagpt/repo_parser.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/repo_parser.py:names:['handle_exception']"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoFileInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeBlockInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassRelationship\"],\"properties\":{}}"}, {"id": "{\"lineno\":56,\"end_lineno\":417,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":420,\"end_lineno\":421,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_func\"],\"properties\":{}}"}, {"id": "metagpt/startup.py"}, {"id": "metagpt/startup.py:startup"}, {"id": "metagpt/startup.py:app"}, {"id": "global_variable"}, {"id": "metagpt/startup.py:asyncio"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:module:pathlib"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/startup.py:names:['Path']"}, {"id": "metagpt/startup.py:typer"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"typer\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:module:metagpt.config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/startup.py:names:['CONFIG']"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"app\"],\"properties\":{}}"}, {"id": "{\"lineno\":14,\"end_lineno\":75,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"startup\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:__name__:__main__"}, {"id": "{\"lineno\":78,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/config.py:NotConfiguredException:__init__"}, {"id": "metagpt/config.py:LLMProviderEnum:__missing__"}, {"id": "metagpt/config.py:Config:__init__"}, {"id": "metagpt/config.py:Config:_is_valid_llm_key"}, {"id": "metagpt/config.py:Config:_update"}, {"id": "metagpt/config.py:Config:_ensure_workspace_exists"}, {"id": "metagpt/config.py:Config:_init_with_config_files_and_env"}, {"id": "metagpt/config.py:Config:_get"}, {"id": "metagpt/config.py:Config:__setattr__"}, {"id": "metagpt/config.py:Config:__getattr__"}, {"id": "metagpt/config.py:CONFIG"}, {"id": "metagpt/config.py:ast.Constant:\nProvide configuration, singleton\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.11 of RFC 135, add git repository support.\n 2. Add the parameter `src_workspace` for the old version project path.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nProvide configuration, singleton\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.11 of RFC 135, add git repository support.\\n 2. Add the parameter `src_workspace` for the old version project path.\\n\"],\"properties\":{}}"}, {"id": "metagpt/config.py:datetime"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"id": "metagpt/config.py:json"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/config.py:os"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/config.py:warnings"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/config.py:module:copy"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/config.py:names:['deepcopy']"}, {"id": "metagpt/config.py:module:enum"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/config.py:names:['Enum']"}, {"id": "metagpt/config.py:module:pathlib"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/config.py:names:['Path']"}, {"id": "metagpt/config.py:module:typing"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\"]}}"}, {"id": "metagpt/config.py:names:['Any']"}, {"id": "metagpt/config.py:module:uuid"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"id": "metagpt/config.py:names:['uuid4']"}, {"id": "metagpt/config.py:yaml"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/config.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\",\"METAGPT_ROOT\",\"OPTIONS\"]}}"}, {"id": "metagpt/config.py:names:['DEFAULT_WORKSPACE_ROOT', 'METAGPT_ROOT', 'OPTIONS']"}, {"id": "metagpt/config.py:module:metagpt.logs"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/config.py:names:['logger']"}, {"id": "metagpt/config.py:module:metagpt.tools"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\",\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/config.py:names:['SearchEngineType', 'WebBrowserEngineType']"}, {"id": "metagpt/config.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"require_python_version\"]}}"}, {"id": "metagpt/config.py:names:['require_python_version']"}, {"id": "metagpt/config.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"id": "metagpt/config.py:names:['CostManager']"}, {"id": "metagpt/config.py:module:metagpt.utils.singleton"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"id": "metagpt/config.py:names:['Singleton']"}, {"id": "{\"lineno\":29,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NotConfiguredException\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderEnum\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":284,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Config\"],\"properties\":{}}"}, {"id": "{\"lineno\":287,\"end_lineno\":287,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONFIG\"],\"properties\":{}}"}, {"id": "metagpt/subscription.py:asyncio"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/subscription.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"id": "metagpt/subscription.py:names:['AsyncGenerator', 'Awaitable', 'Callable']"}, {"id": "metagpt/subscription.py:module:pydantic"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/subscription.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/subscription.py:module:metagpt.logs"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/subscription.py:names:['logger']"}, {"id": "metagpt/subscription.py:module:metagpt.roles"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/subscription.py:names:['Role']"}, {"id": "metagpt/subscription.py:module:metagpt.schema"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/subscription.py:names:['Message']"}, {"id": "{\"lineno\":11,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubscriptionRunner\"],\"properties\":{}}"}, {"id": "metagpt/__init__.py"}, {"id": "metagpt/__init__.py:module:metagpt"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"id": "metagpt/__init__.py:names:['_compat as _']"}, {"id": "metagpt/llm.py"}, {"id": "metagpt/llm.py:LLM"}, {"id": "metagpt/llm.py:_"}, {"id": "metagpt/llm.py:ast.Constant:\n@Time : 2023/5/11 14:45\n@Author : alexanderwu\n@File : llm.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:45\\n@Author : alexanderwu\\n@File : llm.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/llm.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/llm.py:names:['Optional']"}, {"id": "metagpt/llm.py:module:metagpt.config"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"id": "metagpt/llm.py:names:['CONFIG', 'LLMProviderEnum']"}, {"id": "metagpt/llm.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/llm.py:names:['BaseLLM']"}, {"id": "metagpt/llm.py:module:metagpt.provider.human_provider"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"id": "metagpt/llm.py:names:['HumanProvider']"}, {"id": "metagpt/llm.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"LLM_REGISTRY\"]}}"}, {"id": "metagpt/llm.py:names:['LLM_REGISTRY']"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Assign\",\"tokens\":[\"_\"],\"properties\":{}}"}, {"id": "{\"lineno\":19,\"end_lineno\":24,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"LLM\"],\"properties\":{}}"}, {"id": "metagpt/team.py:Team:__init__"}, {"id": "metagpt/team.py:Team:_check_balance"}, {"id": "metagpt/team.py:Team:_save"}, {"id": "metagpt/team.py:ast.Constant:\n@Time : 2023/5/12 00:30\n@Author : alexanderwu\n@File : team.py\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\n Section 2.2.3.3 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/12 00:30\\n@Author : alexanderwu\\n@File : team.py\\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\\n Section 2.2.3.3 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/team.py:warnings"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/team.py:module:pathlib"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/team.py:names:['Path']"}, {"id": "metagpt/team.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\"]}}"}, {"id": "metagpt/team.py:names:['Any']"}, {"id": "metagpt/team.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/team.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/team.py:module:metagpt.actions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/team.py:names:['UserRequirement']"}, {"id": "metagpt/team.py:module:metagpt.config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/team.py:names:['CONFIG']"}, {"id": "metagpt/team.py:module:metagpt.const"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"id": "metagpt/team.py:names:['MESSAGE_ROUTE_TO_ALL', 'SERDESER_PATH']"}, {"id": "metagpt/team.py:module:metagpt.environment"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/team.py:names:['Environment']"}, {"id": "metagpt/team.py:module:metagpt.logs"}, {"id": "metagpt/team.py:names:['logger']"}, {"id": "metagpt/team.py:module:metagpt.roles"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/team.py:names:['Role']"}, {"id": "metagpt/team.py:module:metagpt.schema"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/team.py:names:['Message']"}, {"id": "metagpt/team.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"id": "metagpt/team.py:names:['NoMoneyException', 'read_json_file', 'serialize_decorator', 'write_json_file']"}, {"id": "{\"lineno\":32,\"end_lineno\":135,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Team\"],\"properties\":{}}"}, {"id": "metagpt/logs.py"}, {"id": "metagpt/logs.py:define_log_level"}, {"id": "metagpt/logs.py:log_llm_stream"}, {"id": "metagpt/logs.py:set_llm_stream_logfunc"}, {"id": "metagpt/logs.py:logger"}, {"id": "metagpt/logs.py:_llm_stream_log"}, {"id": "metagpt/logs.py:ast.Constant:\n@Time : 2023/6/1 12:41\n@Author : alexanderwu\n@File : logs.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/1 12:41\\n@Author : alexanderwu\\n@File : logs.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/logs.py:sys"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/logs.py:module:datetime"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/logs.py:names:['datetime']"}, {"id": "metagpt/logs.py:module:functools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"id": "metagpt/logs.py:names:['partial']"}, {"id": "metagpt/logs.py:module:loguru"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"id": "metagpt/logs.py:names:['logger as _logger']"}, {"id": "metagpt/logs.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/logs.py:names:['METAGPT_ROOT']"}, {"id": "{\"lineno\":18,\"end_lineno\":26,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"define_log_level\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":33,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_llm_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":38,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"set_llm_stream_logfunc\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"_llm_stream_log\"],\"properties\":{}}"}, {"id": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df"}, {"id": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain"}, {"id": "metagpt/document.py:Repo:_path"}, {"id": "metagpt/document.py:Repo:_set"}, {"id": "metagpt/document.py:validate_cols"}, {"id": "metagpt/document.py:read_data"}, {"id": "metagpt/document.py:ast.Constant:\n@Time : 2023/6/8 14:03\n@Author : alexanderwu\n@File : document.py\n@Desc : Classes and Operations Related to Files in the File System.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/8 14:03\\n@Author : alexanderwu\\n@File : document.py\\n@Desc : Classes and Operations Related to Files in the File System.\\n\"],\"properties\":{}}"}, {"id": "metagpt/document.py:module:enum"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/document.py:names:['Enum']"}, {"id": "metagpt/document.py:module:pathlib"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/document.py:names:['Path']"}, {"id": "metagpt/document.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"id": "metagpt/document.py:names:['Optional', 'Union']"}, {"id": "metagpt/document.py:pandas as pd"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/document.py:module:langchain.document_loaders"}, {"id": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"id": "metagpt/document.py:names:['TextLoader', 'UnstructuredPDFLoader', 'UnstructuredWordDocumentLoader']"}, {"id": "metagpt/document.py:module:langchain.text_splitter"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"id": "metagpt/document.py:names:['CharacterTextSplitter']"}, {"id": "metagpt/document.py:module:pydantic"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/document.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/document.py:module:tqdm"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"id": "metagpt/document.py:names:['tqdm']"}, {"id": "metagpt/document.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"id": "metagpt/document.py:names:['RepoParser']"}, {"id": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_cols\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_data\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocumentStatus\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":161,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IndexableDocument\"],\"properties\":{}}"}, {"id": "{\"lineno\":164,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoMetadata\"],\"properties\":{}}"}, {"id": "{\"lineno\":171,\"end_lineno\":235,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Repo\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : environment.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n 1. Remove the functionality of `Environment` class as a public message buffer.\n 2. Standardize the message forwarding behavior of the `Environment` class.\n 3. Add the `is_idle` property.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":13,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : environment.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n 1. Remove the functionality of `Environment` class as a public message buffer.\\n 2. Standardize the message forwarding behavior of the `Environment` class.\\n 3. Add the `is_idle` property.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:asyncio"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:module:pathlib"}, {"id": "metagpt/environment.py:names:['Path']"}, {"id": "metagpt/environment.py:module:typing"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"id": "metagpt/environment.py:names:['Iterable', 'Set']"}, {"id": "metagpt/environment.py:module:pydantic"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"id": "metagpt/environment.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']"}, {"id": "metagpt/environment.py:module:metagpt.config"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/environment.py:names:['CONFIG']"}, {"id": "metagpt/environment.py:module:metagpt.logs"}, {"id": "metagpt/environment.py:names:['logger']"}, {"id": "metagpt/environment.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/environment.py:names:['Role']"}, {"id": "metagpt/environment.py:module:metagpt.schema"}, {"id": "metagpt/environment.py:names:['Message']"}, {"id": "metagpt/environment.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_subscribed\",\"read_json_file\",\"write_json_file\"]}}"}, {"id": "metagpt/environment.py:names:['is_subscribed', 'read_json_file', 'write_json_file']"}, {"id": "{\"lineno\":27,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Environment\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py"}, {"id": "metagpt/_compat.py:platform"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:sys"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:warnings"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:n:a:m:e:p:l:a:t:f:o:r:m:.:s:y:s:t:e:m"}, {"id": "{\"lineno\":5,\"end_lineno\":23,\"type_name\":\"ast.If\",\"tokens\":[\"n\",\"a\",\"m\",\"e\",\"p\",\"l\",\"a\",\"t\",\"f\",\"o\",\"r\",\"m\",\".\",\"s\",\"y\",\"s\",\"t\",\"e\",\"m\"],\"properties\":{}}"}, {"id": "metagpt/const.py"}, {"id": "metagpt/const.py:get_metagpt_package_root"}, {"id": "metagpt/const.py:get_metagpt_root"}, {"id": "metagpt/const.py:OPTIONS"}, {"id": "metagpt/const.py:METAGPT_ROOT"}, {"id": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT"}, {"id": "metagpt/const.py:EXAMPLE_PATH"}, {"id": "metagpt/const.py:DATA_PATH"}, {"id": "metagpt/const.py:TEST_DATA_PATH"}, {"id": "metagpt/const.py:RESEARCH_PATH"}, {"id": "metagpt/const.py:TUTORIAL_PATH"}, {"id": "metagpt/const.py:INVOICE_OCR_TABLE_PATH"}, {"id": "metagpt/const.py:UT_PATH"}, {"id": "metagpt/const.py:SWAGGER_PATH"}, {"id": "metagpt/const.py:UT_PY_PATH"}, {"id": "metagpt/const.py:API_QUESTIONS_PATH"}, {"id": "metagpt/const.py:SERDESER_PATH"}, {"id": "metagpt/const.py:TMP"}, {"id": "metagpt/const.py:SOURCE_ROOT"}, {"id": "metagpt/const.py:PROMPT_PATH"}, {"id": "metagpt/const.py:SKILL_DIRECTORY"}, {"id": "metagpt/const.py:MEM_TTL"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_FROM"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY"}, {"id": "metagpt/const.py:MESSAGE_META_ROLE"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE"}, {"id": "metagpt/const.py:REQUIREMENT_FILENAME"}, {"id": "metagpt/const.py:BUGFIX_FILENAME"}, {"id": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME"}, {"id": "metagpt/const.py:DOCS_FILE_REPO"}, {"id": "metagpt/const.py:PRDS_FILE_REPO"}, {"id": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO"}, {"id": "metagpt/const.py:TASK_FILE_REPO"}, {"id": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO"}, {"id": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO"}, {"id": "metagpt/const.py:SEQ_FLOW_FILE_REPO"}, {"id": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO"}, {"id": "metagpt/const.py:PRD_PDF_FILE_REPO"}, {"id": "metagpt/const.py:TASK_PDF_FILE_REPO"}, {"id": "metagpt/const.py:TEST_CODES_FILE_REPO"}, {"id": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO"}, {"id": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO"}, {"id": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO"}, {"id": "metagpt/const.py:RESOURCES_FILE_REPO"}, {"id": "metagpt/const.py:SD_OUTPUT_FILE_REPO"}, {"id": "metagpt/const.py:GRAPH_REPO_FILE_REPO"}, {"id": "metagpt/const.py:CLASS_VIEW_FILE_REPO"}, {"id": "metagpt/const.py:YAPI_URL"}, {"id": "metagpt/const.py:DEFAULT_LANGUAGE"}, {"id": "metagpt/const.py:DEFAULT_MAX_TOKENS"}, {"id": "metagpt/const.py:COMMAND_TOKENS"}, {"id": "metagpt/const.py:BRAIN_MEMORY"}, {"id": "metagpt/const.py:SKILL_PATH"}, {"id": "metagpt/const.py:SERPER_API_KEY"}, {"id": "metagpt/const.py:DEFAULT_TOKEN_SIZE"}, {"id": "metagpt/const.py:BASE64_FORMAT"}, {"id": "metagpt/const.py:REDIS_KEY"}, {"id": "metagpt/const.py:LLM_API_TIMEOUT"}, {"id": "metagpt/const.py:IGNORED_MESSAGE_ID"}, {"id": "metagpt/const.py:GENERALIZATION"}, {"id": "metagpt/const.py:COMPOSITION"}, {"id": "metagpt/const.py:AGGREGATION"}, {"id": "metagpt/const.py:ast.Constant:\n@Time : 2023/5/1 11:59\n@Author : alexanderwu\n@File : const.py\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\n common properties in the Message.\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/1 11:59\\n@Author : alexanderwu\\n@File : const.py\\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\\n common properties in the Message.\\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\\n\"],\"properties\":{}}"}, {"id": "metagpt/const.py:contextvars"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"contextvars\"],\"properties\":{}}"}, {"id": "metagpt/const.py:os"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/const.py:module:pathlib"}, {"id": "metagpt/const.py:names:['Path']"}, {"id": "metagpt/const.py:module:loguru"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/const.py:names:['logger']"}, {"id": "metagpt/const.py:metagpt"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"OPTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":33,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_package_root\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":46,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_root\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_WORKSPACE_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":56,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_DATA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"TUTORIAL_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_TABLE_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"SWAGGER_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":63,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PY_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":64,\"end_lineno\":64,\"type_name\":\"ast.Assign\",\"tokens\":[\"API_QUESTIONS_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":66,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERDESER_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"TMP\"],\"properties\":{}}"}, {"id": "{\"lineno\":70,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"SOURCE_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":71,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_DIRECTORY\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"MEM_TTL\"],\"properties\":{}}"}, {"id": "{\"lineno\":80,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_FROM\"],\"properties\":{}}"}, {"id": "{\"lineno\":81,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":82,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_CAUSE_BY\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":83,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_META_ROLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":84,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_ALL\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_NONE\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"BUGFIX_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":89,\"end_lineno\":89,\"type_name\":\"ast.Assign\",\"tokens\":[\"PACKAGE_REQUIREMENTS_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"DOCS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRDS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":96,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_API_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":97,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEQ_FLOW_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":99,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRD_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_CODES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_OUTPUTS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":103,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":104,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESOURCES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":106,\"end_lineno\":106,\"type_name\":\"ast.Assign\",\"tokens\":[\"SD_OUTPUT_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":107,\"end_lineno\":107,\"type_name\":\"ast.Assign\",\"tokens\":[\"GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":108,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"CLASS_VIEW_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"YAPI_URL\"],\"properties\":{}}"}, {"id": "{\"lineno\":112,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":113,\"end_lineno\":113,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_MAX_TOKENS\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":114,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMAND_TOKENS\"],\"properties\":{}}"}, {"id": "{\"lineno\":115,\"end_lineno\":115,\"type_name\":\"ast.Assign\",\"tokens\":[\"BRAIN_MEMORY\"],\"properties\":{}}"}, {"id": "{\"lineno\":116,\"end_lineno\":116,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":117,\"end_lineno\":117,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERPER_API_KEY\"],\"properties\":{}}"}, {"id": "{\"lineno\":118,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_TOKEN_SIZE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"BASE64_FORMAT\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"REDIS_KEY\"],\"properties\":{}}"}, {"id": "{\"lineno\":125,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_API_TIMEOUT\"],\"properties\":{}}"}, {"id": "{\"lineno\":128,\"end_lineno\":128,\"type_name\":\"ast.Assign\",\"tokens\":[\"IGNORED_MESSAGE_ID\"],\"properties\":{}}"}, {"id": "{\"lineno\":131,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERALIZATION\"],\"properties\":{}}"}, {"id": "{\"lineno\":132,\"end_lineno\":132,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPOSITION\"],\"properties\":{}}"}, {"id": "{\"lineno\":133,\"end_lineno\":133,\"type_name\":\"ast.Assign\",\"tokens\":[\"AGGREGATION\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:SerializationMixin:__get_pydantic_core_schema__"}, {"id": "metagpt/schema.py:SerializationMixin:__serialize_add_class_type__"}, {"id": "metagpt/schema.py:SerializationMixin:__deserialize_with_real_type__"}, {"id": "metagpt/schema.py:SerializationMixin:__init_subclass__"}, {"id": "metagpt/schema.py:Document:__str__"}, {"id": "metagpt/schema.py:Document:__repr__"}, {"id": "metagpt/schema.py:Message:__init__"}, {"id": "metagpt/schema.py:Message:__setattr__"}, {"id": "metagpt/schema.py:Message:__str__"}, {"id": "metagpt/schema.py:Message:__repr__"}, {"id": "metagpt/schema.py:UserMessage:__init__"}, {"id": "metagpt/schema.py:SystemMessage:__init__"}, {"id": "metagpt/schema.py:AIMessage:__init__"}, {"id": "metagpt/schema.py:CodeSummarizeContext:__hash__"}, {"id": "metagpt/schema.py:T"}, {"id": "metagpt/schema.py:ast.Constant:\n@Time : 2023/5/8 22:12\n@Author : alexanderwu\n@File : schema.py\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\n@Modified By: mashenquan, 2023/11/22.\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\n between actions.\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 22:12\\n@Author : alexanderwu\\n@File : schema.py\\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\\n@Modified By: mashenquan, 2023/11/22.\\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\\n between actions.\\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:module:__future__"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/schema.py:names:['annotations']"}, {"id": "metagpt/schema.py:asyncio"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:json"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:os.path"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:uuid"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:module:abc"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/schema.py:names:['ABC']"}, {"id": "metagpt/schema.py:module:asyncio"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"id": "metagpt/schema.py:names:['Queue', 'QueueEmpty', 'wait_for']"}, {"id": "metagpt/schema.py:module:json"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"id": "metagpt/schema.py:names:['JSONDecodeError']"}, {"id": "metagpt/schema.py:module:pathlib"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/schema.py:names:['Path']"}, {"id": "metagpt/schema.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Dict\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"id": "metagpt/schema.py:names:['Any', 'Callable', 'Dict', 'List', 'Optional', 'Type', 'TypeVar', 'Union']"}, {"id": "metagpt/schema.py:module:pydantic"}, {"id": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\"]}}"}, {"id": "metagpt/schema.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr', 'field_serializer', 'field_validator']"}, {"id": "metagpt/schema.py:module:pydantic_core"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"core_schema\"]}}"}, {"id": "metagpt/schema.py:names:['core_schema']"}, {"id": "metagpt/schema.py:module:metagpt.config"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/schema.py:names:['CONFIG']"}, {"id": "metagpt/schema.py:module:metagpt.const"}, {"id": "{\"lineno\":39,\"end_lineno\":46,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/schema.py:names:['MESSAGE_ROUTE_CAUSE_BY', 'MESSAGE_ROUTE_FROM', 'MESSAGE_ROUTE_TO', 'MESSAGE_ROUTE_TO_ALL', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/schema.py:module:metagpt.logs"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/schema.py:names:['logger']"}, {"id": "metagpt/schema.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"id": "metagpt/schema.py:names:['any_to_str', 'any_to_str_set', 'import_class']"}, {"id": "metagpt/schema.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/schema.py:names:['handle_exception']"}, {"id": "metagpt/schema.py:module:metagpt.utils.serialize"}, {"id": "{\"lineno\":50,\"end_lineno\":54,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"id": "metagpt/schema.py:names:['actionoutout_schema_to_mapping', 'actionoutput_mapping_to_str', 'actionoutput_str_to_mapping']"}, {"id": "{\"lineno\":57,\"end_lineno\":121,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerializationMixin\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SimpleMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":129,\"end_lineno\":164,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"id": "{\"lineno\":167,\"end_lineno\":174,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Documents\"],\"properties\":{}}"}, {"id": "{\"lineno\":177,\"end_lineno\":284,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Message\"],\"properties\":{}}"}, {"id": "{\"lineno\":287,\"end_lineno\":293,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":296,\"end_lineno\":302,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SystemMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":305,\"end_lineno\":311,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AIMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":314,\"end_lineno\":383,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageQueue\"],\"properties\":{}}"}, {"id": "{\"lineno\":387,\"end_lineno\":387,\"type_name\":\"ast.Assign\",\"tokens\":[\"T\"],\"properties\":{}}"}, {"id": "{\"lineno\":390,\"end_lineno\":395,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":398,\"end_lineno\":402,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodingContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":405,\"end_lineno\":408,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TestingContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":411,\"end_lineno\":421,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":424,\"end_lineno\":427,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeResult\"],\"properties\":{}}"}, {"id": "{\"lineno\":430,\"end_lineno\":449,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeSummarizeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":452,\"end_lineno\":453,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BugFixContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":457,\"end_lineno\":461,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassMeta\"],\"properties\":{}}"}, {"id": "{\"lineno\":464,\"end_lineno\":483,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassAttribute\"],\"properties\":{}}"}, {"id": "{\"lineno\":486,\"end_lineno\":499,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassMethod\"],\"properties\":{}}"}, {"id": "{\"lineno\":502,\"end_lineno\":513,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassView\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py"}, {"id": "metagpt/learn/text_to_image.py:text_to_image"}, {"id": "metagpt/learn/text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_image.py\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_image.py\\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:base64"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.config"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['CONFIG']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.const"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.tools.metagpt_text_to_image"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['oas3_metagpt_text_to_image']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.tools.openai_text_to_image"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['oas3_openai_text_to_image']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.utils.s3"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['S3']"}, {"id": "{\"lineno\":18,\"end_lineno\":40,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/learn/__init__.py"}, {"id": "metagpt/learn/__init__.py:__all__"}, {"id": "metagpt/learn/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_image"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['text_to_image']"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_speech"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['text_to_speech']"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.google_search"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['google_search']"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/learn/google_search.py"}, {"id": "metagpt/learn/google_search.py:google_search"}, {"id": "metagpt/learn/google_search.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/learn/google_search.py:names:['SearchEngine']"}, {"id": "{\"lineno\":4,\"end_lineno\":12,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"google_search\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py"}, {"id": "metagpt/learn/text_to_speech.py:text_to_speech"}, {"id": "metagpt/learn/text_to_speech.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : text_to_speech.py\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : text_to_speech.py\\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.config"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['CONFIG']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.const"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.tools.azure_tts"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['oas3_azsure_tts']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.tools.iflytek_tts"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['oas3_iflytek_tts']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.utils.s3"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['S3']"}, {"id": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_speech\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_embedding.py"}, {"id": "metagpt/learn/text_to_embedding.py:text_to_embedding"}, {"id": "metagpt/learn/text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_embedding.py\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_embedding.py\\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_embedding.py:module:metagpt.config"}, {"id": "metagpt/learn/text_to_embedding.py:names:['CONFIG']"}, {"id": "metagpt/learn/text_to_embedding.py:module:metagpt.tools.openai_text_to_embedding"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"id": "metagpt/learn/text_to_embedding.py:names:['oas3_openai_text_to_embedding']"}, {"id": "{\"lineno\":14,\"end_lineno\":24,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_embedding\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : skill_loader.py\n@Desc : Skill YAML Configuration Loader.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : skill_loader.py\\n@Desc : Skill YAML Configuration Loader.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:module:pathlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['Path']"}, {"id": "metagpt/learn/skill_loader.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/learn/skill_loader.py:aiofiles"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:yaml"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/learn/skill_loader.py:module:metagpt.config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['CONFIG']"}, {"id": "{\"lineno\":19,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Example\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Returns\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Parameter\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Entity\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Components\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillsDeclaration\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs"}, {"id": "metagpt/tools/search_engine_ddg.py:module:__future__"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['annotations']"}, {"id": "metagpt/tools/search_engine_ddg.py:asyncio"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:json"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:module:concurrent"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['futures']"}, {"id": "metagpt/tools/search_engine_ddg.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['Literal', 'overload']"}, {"id": "metagpt/tools/search_engine_ddg.py:module:metagpt.config"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['CONFIG']"}, {"id": "{\"lineno\":21,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DDGAPIWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:__name__:__main__"}, {"id": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : metagpt_oas3_api_svc.py\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\n\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : metagpt_oas3_api_svc.py\\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\\n\\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:module:pathlib"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:names:['Path']"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:connexion"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"oas_http_svc\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:__name__:__main__"}, {"id": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__"}, {"id": "metagpt/tools/search_engine_meilisearch.py:ast.Constant:\n@Time : 2023/5/22 21:33\n@Author : alexanderwu\n@File : search_engine_meilisearch.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/22 21:33\\n@Author : alexanderwu\\n@File : search_engine_meilisearch.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['List']"}, {"id": "metagpt/tools/search_engine_meilisearch.py:meilisearch"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"meilisearch\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:meilisearch.index"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['Index']"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['handle_exception']"}, {"id": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataSource\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MeilisearchEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__"}, {"id": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : openai_text_to_embedding.py\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : openai_text_to_embedding.py\\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['List']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:aiohttp"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:requests"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:pydantic"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.config"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['CONFIG']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.logs"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['logger']"}, {"id": "{\"lineno\":20,\"end_lineno\":27,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Embedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Usage\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResultEmbedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":71,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Embedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":87,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_embedding\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response"}, {"id": "metagpt/tools/search_engine_serpapi.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['Any', 'Dict', 'Optional', 'Tuple']"}, {"id": "metagpt/tools/search_engine_serpapi.py:aiohttp"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:metagpt.config"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['CONFIG']"}, {"id": "{\"lineno\":16,\"end_lineno\":110,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerpAPIWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:__name__:__main__"}, {"id": "{\"lineno\":113,\"end_lineno\":116,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_log_stream"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_lock"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_cache"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":4,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:__future__"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:asyncio"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:sys"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:pathlib"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['Path']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['Literal']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:playwright.async_api"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['async_playwright']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['CONFIG']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.logs"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['logger']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['WebPage']"}, {"id": "{\"lineno\":20,\"end_lineno\":99,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PlaywrightWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":106,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_install_lock\"],\"properties\":{}}"}, {"id": "{\"lineno\":109,\"end_lineno\":132,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_install_browsers\"],\"properties\":{}}"}, {"id": "{\"lineno\":135,\"end_lineno\":140,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_log_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":143,\"end_lineno\":143,\"type_name\":\"ast.AnnAssign\",\"tokens\":[\"_install_lock\"],\"properties\":{}}"}, {"id": "{\"lineno\":144,\"end_lineno\":144,\"type_name\":\"ast.Assign\",\"tokens\":[\"_install_cache\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:__init__"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:__init__"}, {"id": "metagpt/tools/search_engine.py:ast.Constant:\n@Time : 2023/5/6 20:15\n@Author : alexanderwu\n@File : search_engine.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/6 20:15\\n@Author : alexanderwu\\n@File : search_engine.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:importlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['Callable', 'Coroutine', 'Literal', 'Optional', 'Union', 'overload']"}, {"id": "metagpt/tools/search_engine.py:module:semantic_kernel.skill_definition"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['sk_function']"}, {"id": "metagpt/tools/search_engine.py:module:metagpt.config"}, {"id": "metagpt/tools/search_engine.py:names:['CONFIG']"}, {"id": "metagpt/tools/search_engine.py:module:metagpt.tools"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":17,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkSearchEngine\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__"}, {"id": "metagpt/tools/web_browser_engine.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n"}, {"id": "metagpt/tools/web_browser_engine.py:module:__future__"}, {"id": "metagpt/tools/web_browser_engine.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine.py:importlib"}, {"id": "metagpt/tools/web_browser_engine.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['Any', 'Callable', 'Coroutine', 'overload']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.config"}, {"id": "metagpt/tools/web_browser_engine.py:names:['CONFIG']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.tools"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['WebBrowserEngineType']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['WebPage']"}, {"id": "{\"lineno\":16,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response"}, {"id": "metagpt/tools/search_engine_serper.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n"}, {"id": "metagpt/tools/search_engine_serper.py:json"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['Any', 'Dict', 'Optional', 'Tuple']"}, {"id": "metagpt/tools/search_engine_serper.py:aiohttp"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_serper.py:module:metagpt.config"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['CONFIG']"}, {"id": "{\"lineno\":17,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerperWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:__name__:__main__"}, {"id": "{\"lineno\":115,\"end_lineno\":118,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/moderation.py:Moderation:__init__"}, {"id": "metagpt/tools/moderation.py:ast.Constant:\n@Time : 2023/9/26 14:27\n@Author : zhanglei\n@File : moderation.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/26 14:27\\n@Author : zhanglei\\n@File : moderation.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/moderation.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/tools/moderation.py:names:['Union']"}, {"id": "metagpt/tools/moderation.py:module:metagpt.llm"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/tools/moderation.py:names:['LLM']"}, {"id": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Moderation\"],\"properties\":{}}"}, {"id": "metagpt/tools/__init__.py"}, {"id": "metagpt/tools/__init__.py:SearchEngineType"}, {"id": "metagpt/tools/__init__.py:WebBrowserEngineType"}, {"id": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__"}, {"id": "metagpt/tools/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:35\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:35\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/__init__.py:module:enum"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/tools/__init__.py:names:['Enum']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngineType\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngineType\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:safe_google_results"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:__future__"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['annotations']"}, {"id": "metagpt/tools/search_engine_googleapi.py:asyncio"}, {"id": "metagpt/tools/search_engine_googleapi.py:json"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:concurrent"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['futures']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['Optional']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:urllib.parse"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['urlparse']"}, {"id": "metagpt/tools/search_engine_googleapi.py:httplib2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"httplib2\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:pydantic"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:metagpt.config"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['CONFIG']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:metagpt.logs"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['logger']"}, {"id": "{\"lineno\":27,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleAPIWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":133,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"safe_google_results\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:__name__:__main__"}, {"id": "{\"lineno\":136,\"end_lineno\":139,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:__future__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:asyncio"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:importlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:concurrent"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['futures']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:copy"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['deepcopy']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['Literal']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.common.by"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['By']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['expected_conditions as EC']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support.wait"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WebDriverWait']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.download_manager"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMDownloadManager']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.http"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMHttpClient']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.config"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['CONFIG']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WebPage']"}, {"id": "{\"lineno\":24,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SeleniumWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"_webdriver_manager_types\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":102,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WDMHttpProxyClient\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_gen_get_driver_func\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py"}, {"id": "metagpt/tools/openapi_v3_hello.py:post_greeting"}, {"id": "metagpt/tools/openapi_v3_hello.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : mashenquan\n@File : openapi_v3_hello.py\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\n\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : mashenquan\\n@File : openapi_v3_hello.py\\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\\n\\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:module:pathlib"}, {"id": "metagpt/tools/openapi_v3_hello.py:names:['Path']"}, {"id": "metagpt/tools/openapi_v3_hello.py:connexion"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"post_greeting\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:__name__:__main__"}, {"id": "{\"lineno\":25,\"end_lineno\":29,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:__init__"}, {"id": "metagpt/tools/azure_tts.py:oas3_azsure_tts"}, {"id": "metagpt/tools/azure_tts.py:ast.Constant:\n@Time : 2023/6/9 22:22\n@Author : Leo Xiao\n@File : azure_tts.py\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/9 22:22\\n@Author : Leo Xiao\\n@File : azure_tts.py\\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:base64"}, {"id": "metagpt/tools/azure_tts.py:module:pathlib"}, {"id": "metagpt/tools/azure_tts.py:names:['Path']"}, {"id": "metagpt/tools/azure_tts.py:module:uuid"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"id": "metagpt/tools/azure_tts.py:names:['uuid4']"}, {"id": "metagpt/tools/azure_tts.py:aiofiles"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:module:azure.cognitiveservices.speech"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"id": "metagpt/tools/azure_tts.py:names:['AudioConfig', 'SpeechConfig', 'SpeechSynthesizer']"}, {"id": "metagpt/tools/azure_tts.py:module:metagpt.config"}, {"id": "metagpt/tools/azure_tts.py:names:['CONFIG']"}, {"id": "metagpt/tools/azure_tts.py:module:metagpt.logs"}, {"id": "metagpt/tools/azure_tts.py:names:['logger']"}, {"id": "{\"lineno\":20,\"end_lineno\":57,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureTTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":105,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_azsure_tts\"],\"properties\":{}}"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:__init__"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:_save"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:run_i2i"}, {"id": "metagpt/tools/sd_engine.py:SDEngine:run_sam"}, {"id": "metagpt/tools/sd_engine.py:decode_base64_to_image"}, {"id": "metagpt/tools/sd_engine.py:batch_decode_base64_to_image"}, {"id": "metagpt/tools/sd_engine.py:payload"}, {"id": "metagpt/tools/sd_engine.py:default_negative_prompt"}, {"id": "metagpt/tools/sd_engine.py:asyncio"}, {"id": "metagpt/tools/sd_engine.py:base64"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/tools/sd_engine.py:io"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"io\"],\"properties\":{}}"}, {"id": "metagpt/tools/sd_engine.py:json"}, {"id": "metagpt/tools/sd_engine.py:module:os.path"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"os.path\",\"names\":[\"join\"]}}"}, {"id": "metagpt/tools/sd_engine.py:names:['join']"}, {"id": "metagpt/tools/sd_engine.py:module:typing"}, {"id": "metagpt/tools/sd_engine.py:names:['List']"}, {"id": "metagpt/tools/sd_engine.py:module:aiohttp"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientSession\"]}}"}, {"id": "metagpt/tools/sd_engine.py:names:['ClientSession']"}, {"id": "metagpt/tools/sd_engine.py:module:PIL"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\",\"PngImagePlugin\"]}}"}, {"id": "metagpt/tools/sd_engine.py:names:['Image', 'PngImagePlugin']"}, {"id": "metagpt/tools/sd_engine.py:module:metagpt.config"}, {"id": "metagpt/tools/sd_engine.py:names:['CONFIG']"}, {"id": "metagpt/tools/sd_engine.py:module:metagpt.const"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SD_OUTPUT_FILE_REPO\"]}}"}, {"id": "metagpt/tools/sd_engine.py:names:['SD_OUTPUT_FILE_REPO']"}, {"id": "metagpt/tools/sd_engine.py:module:metagpt.logs"}, {"id": "metagpt/tools/sd_engine.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"payload\"],\"properties\":{}}"}, {"id": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"default_negative_prompt\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SDEngine\"],\"properties\":{}}"}, {"id": "{\"lineno\":112,\"end_lineno\":117,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_base64_to_image\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":123,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"batch_decode_base64_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/sd_engine.py:__name__:__main__"}, {"id": "{\"lineno\":126,\"end_lineno\":133,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__"}, {"id": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image"}, {"id": "metagpt/tools/openai_text_to_image.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : openai_text_to_image.py\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : openai_text_to_image.py\\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:aiohttp"}, {"id": "metagpt/tools/openai_text_to_image.py:requests"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:module:metagpt.llm"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/tools/openai_text_to_image.py:names:['LLM']"}, {"id": "metagpt/tools/openai_text_to_image.py:module:metagpt.logs"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/openai_text_to_image.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Image\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":69,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:__init__"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut"}, {"id": "metagpt/tools/ut_writer.py:ICL_SAMPLE"}, {"id": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX"}, {"id": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX"}, {"id": "metagpt/tools/ut_writer.py:OCR_API_DOC"}, {"id": "metagpt/tools/ut_writer.py:json"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/ut_writer.py:module:pathlib"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['Path']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['OpenAILLM as GPTAPI']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['awrite']"}, {"id": "{\"lineno\":10,\"end_lineno\":64,\"type_name\":\"ast.Assign\",\"tokens\":[\"ICL_SAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":66,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"YFT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"OCR_API_DOC\"],\"properties\":{}}"}, {"id": "{\"lineno\":103,\"end_lineno\":286,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UTGenerator\"],\"properties\":{}}"}, {"id": "metagpt/tools/translator.py:prompt"}, {"id": "metagpt/tools/translator.py:ast.Constant:\n@Time : 2023/4/29 15:36\n@Author : alexanderwu\n@File : translator.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:36\\n@Author : alexanderwu\\n@File : translator.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"prompt\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Translator\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__"}, {"id": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image"}, {"id": "metagpt/tools/metagpt_text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : metagpt_text_to_image.py\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : metagpt_text_to_image.py\\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:base64"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['Dict', 'List']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:aiohttp"}, {"id": "metagpt/tools/metagpt_text_to_image.py:requests"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['BaseModel']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.config"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['CONFIG']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.logs"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['logger']"}, {"id": "{\"lineno\":20,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTText2Image\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":98,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_metagpt_text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url"}, {"id": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts"}, {"id": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE"}, {"id": "metagpt/tools/iflytek_tts.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : iflytek_tts.py\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : iflytek_tts.py\\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:base64"}, {"id": "metagpt/tools/iflytek_tts.py:hashlib"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:hmac"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:json"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:uuid"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:module:datetime"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['datetime']"}, {"id": "metagpt/tools/iflytek_tts.py:module:enum"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Enum']"}, {"id": "metagpt/tools/iflytek_tts.py:module:pathlib"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Path']"}, {"id": "metagpt/tools/iflytek_tts.py:module:time"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['mktime']"}, {"id": "metagpt/tools/iflytek_tts.py:module:typing"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Optional']"}, {"id": "metagpt/tools/iflytek_tts.py:module:urllib.parse"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['urlencode']"}, {"id": "metagpt/tools/iflytek_tts.py:module:wsgiref.handlers"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['format_date_time']"}, {"id": "metagpt/tools/iflytek_tts.py:aiofiles"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:websockets as websockets"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"websockets as websockets\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:module:pydantic"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['BaseModel']"}, {"id": "metagpt/tools/iflytek_tts.py:module:metagpt.config"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['CONFIG']"}, {"id": "metagpt/tools/iflytek_tts.py:module:metagpt.logs"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['logger']"}, {"id": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSStatus\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AudioData\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSResponse\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_IFLYTEK_VOICE\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":114,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":118,\"end_lineno\":152,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_iflytek_tts\"],\"properties\":{}}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : alexanderwu\n@File : prompt_writer.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : alexanderwu\\n@File : prompt_writer.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/prompt_writer.py:module:typing"}, {"id": "metagpt/tools/prompt_writer.py:names:['Union']"}, {"id": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTPromptGenerator\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WikiHowTemplate\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnronTemplate\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BEAGECTemplate\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory.py:ast.Constant:\n@Time : 2023/5/20 12:15\n@Author : alexanderwu\n@File : memory.py\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 12:15\\n@Author : alexanderwu\\n@File : memory.py\\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory.py:module:collections"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/memory/memory.py:names:['defaultdict']"}, {"id": "metagpt/memory/memory.py:module:pathlib"}, {"id": "metagpt/memory/memory.py:names:['Path']"}, {"id": "metagpt/memory/memory.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"id": "metagpt/memory/memory.py:names:['DefaultDict', 'Iterable', 'Set']"}, {"id": "metagpt/memory/memory.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"id": "metagpt/memory/memory.py:names:['BaseModel', 'Field', 'SerializeAsAny']"}, {"id": "metagpt/memory/memory.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"id": "metagpt/memory/memory.py:names:['IGNORED_MESSAGE_ID']"}, {"id": "metagpt/memory/memory.py:module:metagpt.schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/memory/memory.py:names:['Message']"}, {"id": "metagpt/memory/memory.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"read_json_file\",\"write_json_file\"]}}"}, {"id": "metagpt/memory/memory.py:names:['any_to_str', 'any_to_str_set', 'read_json_file', 'write_json_file']"}, {"id": "{\"lineno\":25,\"end_lineno\":128,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Memory\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary"}, {"id": "metagpt/memory/brain_memory.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : brain_memory.py\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : brain_memory.py\\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:json"}, {"id": "metagpt/memory/brain_memory.py:re"}, {"id": "metagpt/memory/brain_memory.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/memory/brain_memory.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.config"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['CONFIG']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_LANGUAGE\",\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['DEFAULT_LANGUAGE', 'DEFAULT_MAX_TOKENS', 'DEFAULT_TOKEN_SIZE']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.logs"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['logger']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.provider"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['MetaGPTLLM']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['BaseLLM']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.schema"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Message', 'SimpleMessage']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.utils.redis"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Redis']"}, {"id": "{\"lineno\":26,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrainMemory\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:__init__"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:_load"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname"}, {"id": "metagpt/memory/memory_storage.py:ast.Constant:\n@Desc : the implement of memory storage\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of memory storage\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory_storage.py:module:pathlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Path']"}, {"id": "metagpt/memory/memory_storage.py:module:typing"}, {"id": "metagpt/memory/memory_storage.py:names:['Optional']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain.embeddings"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain.vectorstores.faiss"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['FAISS']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain_core.embeddings"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Embeddings']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['DATA_PATH', 'MEM_TTL']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.document_store.faiss_store"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['FaissStore']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.logs"}, {"id": "metagpt/memory/memory_storage.py:names:['logger']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Message']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.utils.serialize"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['deserialize_message', 'serialize_message']"}, {"id": "{\"lineno\":22,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MemoryStorage\"],\"properties\":{}}"}, {"id": "metagpt/memory/__init__.py"}, {"id": "metagpt/memory/__init__.py:__all__"}, {"id": "metagpt/memory/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "metagpt/memory/__init__.py:module:metagpt.memory.memory"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/memory/__init__.py:names:['Memory']"}, {"id": "{\"lineno\":14,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/memory/longterm_memory.py:ast.Constant:\n@Desc : the implement of Long-term memory\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of Long-term memory\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/longterm_memory.py:module:typing"}, {"id": "metagpt/memory/longterm_memory.py:names:['Optional']"}, {"id": "metagpt/memory/longterm_memory.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['ConfigDict', 'Field']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.logs"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['logger']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.memory"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['Memory']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.memory.memory_storage"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['MemoryStorage']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['RoleContext']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.schema"}, {"id": "metagpt/memory/longterm_memory.py:names:['Message']"}, {"id": "{\"lineno\":19,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LongTermMemory\"],\"properties\":{}}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:write"}, {"id": "metagpt/document_store/qdrant_store.py:module:dataclasses"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['dataclass']"}, {"id": "metagpt/document_store/qdrant_store.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['List']"}, {"id": "metagpt/document_store/qdrant_store.py:module:qdrant_client"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['QdrantClient']"}, {"id": "metagpt/document_store/qdrant_store.py:module:qdrant_client.models"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['Filter', 'PointStruct', 'VectorParams']"}, {"id": "metagpt/document_store/qdrant_store.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['BaseStore']"}, {"id": "{\"lineno\":11,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantConnection\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:persist"}, {"id": "metagpt/document_store/chromadb_store.py:ast.Constant:\n@Time : 2023/5/29 14:46\n@Author : alexanderwu\n@File : chromadb_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/29 14:46\\n@Author : alexanderwu\\n@File : chromadb_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/chromadb_store.py:chromadb"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"chromadb\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChromaStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:__init__"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:persist"}, {"id": "metagpt/document_store/lancedb_store.py:ast.Constant:\n@Time : 2023/8/9 15:42\n@Author : unkn-wn (Leon Yee)\n@File : lancedb_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/9 15:42\\n@Author : unkn-wn (Leon Yee)\\n@File : lancedb_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:os"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:shutil"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:lancedb"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"lancedb\"],\"properties\":{}}"}, {"id": "{\"lineno\":14,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LanceStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/__init__.py"}, {"id": "metagpt/document_store/__init__.py:__all__"}, {"id": "metagpt/document_store/__init__.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/__init__.py:module:metagpt.document_store.faiss_store"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"id": "metagpt/document_store/__init__.py:names:['FaissStore']"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:__init__"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:_load"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:_write"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:delete"}, {"id": "metagpt/document_store/faiss_store.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : faiss_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : faiss_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:asyncio"}, {"id": "metagpt/document_store/faiss_store.py:module:pathlib"}, {"id": "metagpt/document_store/faiss_store.py:names:['Path']"}, {"id": "metagpt/document_store/faiss_store.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['Optional']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain.embeddings"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain.vectorstores"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['FAISS']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain_core.embeddings"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['Embeddings']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.config"}, {"id": "metagpt/document_store/faiss_store.py:names:['CONFIG']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.document"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['IndexableDocument']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['LocalStore']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.logs"}, {"id": "metagpt/document_store/faiss_store.py:names:['logger']"}, {"id": "{\"lineno\":22,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FaissStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:search"}, {"id": "metagpt/document_store/base_store.py:BaseStore:write"}, {"id": "metagpt/document_store/base_store.py:BaseStore:add"}, {"id": "metagpt/document_store/base_store.py:LocalStore:__init__"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_load"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_write"}, {"id": "metagpt/document_store/base_store.py:ast.Constant:\n@Time : 2023/5/28 00:01\n@Author : alexanderwu\n@File : base_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/28 00:01\\n@Author : alexanderwu\\n@File : base_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/base_store.py:module:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"id": "metagpt/document_store/base_store.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/document_store/base_store.py:module:pathlib"}, {"id": "metagpt/document_store/base_store.py:names:['Path']"}, {"id": "metagpt/document_store/base_store.py:module:metagpt.config"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/document_store/base_store.py:names:['Config']"}, {"id": "{\"lineno\":14,\"end_lineno\":27,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseStore\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LocalStore\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:ast.Constant:\n@Time : 2023/7/21 11:15\n@Author : Leo Xiao\n@File : anthropic_api.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/21 11:15\\n@Author : Leo Xiao\\n@File : anthropic_api.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:anthropic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"anthropic\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:module:anthropic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"id": "metagpt/provider/anthropic_api.py:names:['Anthropic', 'AsyncAnthropic']"}, {"id": "metagpt/provider/anthropic_api.py:module:metagpt.config"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/provider/anthropic_api.py:names:['CONFIG']"}, {"id": "{\"lineno\":15,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Claude2\"],\"properties\":{}}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream"}, {"id": "metagpt/provider/google_gemini_api.py:google.generativeai as genai"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"google.generativeai as genai\"],\"properties\":{}}"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.ai"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['generativelanguage as glm']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.generative_models"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['GenerativeModel']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['content_types']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types.generation_types"}, {"id": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['AsyncGenerateContentResponse', 'GenerateContentResponse', 'GenerationConfig']"}, {"id": "metagpt/provider/google_gemini_api.py:module:tenacity"}, {"id": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.config"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['CONFIG', 'LLMProviderEnum']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['register_provider']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['log_and_reraise']"}, {"id": "{\"lineno\":29,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiGenerativeModel\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":141,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs"}, {"id": "metagpt/provider/azure_openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation;\n Change cost control from global to company level.\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation;\\n Change cost control from global to company level.\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/azure_openai_api.py:module:openai"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['AsyncAzureOpenAI']"}, {"id": "metagpt/provider/azure_openai_api.py:module:openai._base_client"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['AsyncHttpxClientWrapper']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"LLMProviderEnum\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['LLMProviderEnum']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['OpenAILLM']"}, {"id": "{\"lineno\":22,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureOpenAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:__init_fireworks"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream"}, {"id": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS"}, {"id": "metagpt/provider/fireworks_api.py:re"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/provider/fireworks_api.py:module:openai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['APIConnectionError', 'AsyncStream']"}, {"id": "metagpt/provider/fireworks_api.py:module:openai.types"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/fireworks_api.py:module:openai.types.chat"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['ChatCompletionChunk']"}, {"id": "metagpt/provider/fireworks_api.py:module:tenacity"}, {"id": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CONFIG', 'Config', 'LLMProviderEnum']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.logs"}, {"id": "metagpt/provider/fireworks_api.py:names:['logger']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['register_provider']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['OpenAILLM', 'log_and_reraise']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CostManager', 'Costs']"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_GRADE_TOKEN_COSTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":72,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksCostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":140,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:__init__"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream"}, {"id": "metagpt/provider/ollama_api.py:json"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/ollama_api.py:module:requests"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['ConnectionError']"}, {"id": "metagpt/provider/ollama_api.py:module:tenacity"}, {"id": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['CONFIG', 'LLMProviderEnum']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.const"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['LLM_API_TIMEOUT']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.general_api_requestor"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['GeneralAPIRequestor']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['register_provider']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['log_and_reraise']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['CostManager']"}, {"id": "{\"lineno\":26,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaCostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/__init__.py"}, {"id": "metagpt/provider/__init__.py:__all__"}, {"id": "metagpt/provider/__init__.py:ast.Constant:\n@Time : 2023/5/5 22:59\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 22:59\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.fireworks_api"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['FireworksLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.google_gemini_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['GeminiLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.ollama_api"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OllamaLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.open_llm_api"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OpenLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.zhipuai_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['ZhiPuAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.azure_openai_api"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['AzureOpenAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.metagpt_api"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['MetaGPTLLM']"}, {"id": "{\"lineno\":18,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:__init__"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_init_openai"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_init_client"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_process_message"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens"}, {"id": "metagpt/provider/openai_api.py:log_and_reraise"}, {"id": "metagpt/provider/openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for isolation;\n Change cost control from global to company level.\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for isolation;\\n Change cost control from global to company level.\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/openai_api.py:json"}, {"id": "metagpt/provider/openai_api.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Union\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['AsyncIterator', 'Union']"}, {"id": "metagpt/provider/openai_api.py:module:openai"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['APIConnectionError', 'AsyncOpenAI', 'AsyncStream']"}, {"id": "metagpt/provider/openai_api.py:module:openai._base_client"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['AsyncHttpxClientWrapper']"}, {"id": "metagpt/provider/openai_api.py:module:openai.types"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/openai_api.py:module:openai.types.chat"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['ChatCompletion', 'ChatCompletionChunk']"}, {"id": "metagpt/provider/openai_api.py:module:tenacity"}, {"id": "{\"lineno\":19,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.config"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CONFIG', 'Config', 'LLMProviderEnum']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.constant"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['GENERAL_FUNCTION_SCHEMA', 'GENERAL_TOOL_CHOICE']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.schema"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['Message']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['Costs']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['handle_exception']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":35,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['count_message_tokens', 'count_string_tokens', 'get_max_completion_tokens']"}, {"id": "{\"lineno\":42,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_and_reraise\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":235,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:__init__"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run"}, {"id": "metagpt/provider/spark_api.py:ast.Constant:\n@File : spark_api.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : spark_api.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:_thread as thread"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"_thread as thread\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:base64"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:datetime"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:hashlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:hmac"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:json"}, {"id": "metagpt/provider/spark_api.py:ssl"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"ssl\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:module:time"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['mktime']"}, {"id": "metagpt/provider/spark_api.py:module:urllib.parse"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['urlencode', 'urlparse']"}, {"id": "metagpt/provider/spark_api.py:module:wsgiref.handlers"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['format_date_time']"}, {"id": "metagpt/provider/spark_api.py:websocket"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"websocket\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.config"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['CONFIG', 'LLMProviderEnum']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['logger']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/spark_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['register_provider']"}, {"id": "{\"lineno\":26,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SparkLLM\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":167,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GetMessageFromWeb\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response"}, {"id": "metagpt/provider/general_api_requestor.py:parse_stream_helper"}, {"id": "metagpt/provider/general_api_requestor.py:parse_stream"}, {"id": "metagpt/provider/general_api_requestor.py:asyncio"}, {"id": "metagpt/provider/general_api_requestor.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['AsyncGenerator', 'Generator', 'Iterator', 'Tuple', 'Union']"}, {"id": "metagpt/provider/general_api_requestor.py:aiohttp"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:requests"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:module:metagpt.logs"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['logger']"}, {"id": "metagpt/provider/general_api_requestor.py:module:metagpt.provider.general_api_base"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['APIRequestor']"}, {"id": "{\"lineno\":15,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":35,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralAPIRequestor\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_user_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_system_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text"}, {"id": "metagpt/provider/base_llm.py:ast.Constant:\n@Time : 2023/5/5 23:04\n@Author : alexanderwu\n@File : base_llm.py\n@Desc : mashenquan, 2023/8/22. + try catch\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:04\\n@Author : alexanderwu\\n@File : base_llm.py\\n@Desc : mashenquan, 2023/8/22. + try catch\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:json"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:module:abc"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/provider/base_llm.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['Optional']"}, {"id": "{\"lineno\":14,\"end_lineno\":128,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/constant.py"}, {"id": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA"}, {"id": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE"}, {"id": "{\"lineno\":3,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_FUNCTION_SCHEMA\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_TOOL_CHOICE\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream"}, {"id": "metagpt/provider/zhipuai_api.py:json"}, {"id": "metagpt/provider/zhipuai_api.py:module:enum"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['Enum']"}, {"id": "metagpt/provider/zhipuai_api.py:openai"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:zhipuai"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:module:requests"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['ConnectionError']"}, {"id": "metagpt/provider/zhipuai_api.py:module:tenacity"}, {"id": "{\"lineno\":11,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.config"}, {"id": "metagpt/provider/zhipuai_api.py:names:['CONFIG', 'LLMProviderEnum']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/zhipuai_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "metagpt/provider/zhipuai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['log_and_reraise']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.zhipuai.zhipu_model_api"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['ZhiPuModelAPI']"}, {"id": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuEvent\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":138,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:__init__"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line"}, {"id": "metagpt/provider/general_api_base.py:_console_log_level"}, {"id": "metagpt/provider/general_api_base.py:log_debug"}, {"id": "metagpt/provider/general_api_base.py:log_info"}, {"id": "metagpt/provider/general_api_base.py:log_warn"}, {"id": "metagpt/provider/general_api_base.py:logfmt"}, {"id": "metagpt/provider/general_api_base.py:_build_api_url"}, {"id": "metagpt/provider/general_api_base.py:_requests_proxies_arg"}, {"id": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg"}, {"id": "metagpt/provider/general_api_base.py:_make_session"}, {"id": "metagpt/provider/general_api_base.py:parse_stream_helper"}, {"id": "metagpt/provider/general_api_base.py:parse_stream"}, {"id": "metagpt/provider/general_api_base.py:parse_stream_async"}, {"id": "metagpt/provider/general_api_base.py:aiohttp_session"}, {"id": "metagpt/provider/general_api_base.py:logger"}, {"id": "metagpt/provider/general_api_base.py:TIMEOUT_SECS"}, {"id": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS"}, {"id": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES"}, {"id": "metagpt/provider/general_api_base.py:_thread_context"}, {"id": "metagpt/provider/general_api_base.py:LLM_LOG"}, {"id": "metagpt/provider/general_api_base.py:api_key_to_header"}, {"id": "metagpt/provider/general_api_base.py:asyncio"}, {"id": "metagpt/provider/general_api_base.py:json"}, {"id": "metagpt/provider/general_api_base.py:os"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:platform"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:re"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:sys"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:threading"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:time"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:module:contextlib"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['asynccontextmanager']"}, {"id": "metagpt/provider/general_api_base.py:module:enum"}, {"id": "metagpt/provider/general_api_base.py:names:['Enum']"}, {"id": "metagpt/provider/general_api_base.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['AsyncGenerator', 'AsyncIterator', 'Dict', 'Iterator', 'Optional', 'Tuple', 'Union', 'overload']"}, {"id": "metagpt/provider/general_api_base.py:module:urllib.parse"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['urlencode', 'urlsplit', 'urlunsplit']"}, {"id": "metagpt/provider/general_api_base.py:aiohttp"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:requests"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:sys.version_info"}, {"id": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.If\",\"tokens\":[\"sys.version_info\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:logging"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.Import\",\"tokens\":[\"logging\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:openai"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:module:openai"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['version']"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TIMEOUT_SECS\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_SESSION_LIFETIME_SECS\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_CONNECTION_RETRIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"_thread_context\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_LOG\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":68,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ApiType\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"api_key_to_header\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":82,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_console_log_level\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":89,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_debug\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_info\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_warn\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":120,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"logfmt\"],\"properties\":{}}"}, {"id": "{\"lineno\":123,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIResponse\"],\"properties\":{}}"}, {"id": "{\"lineno\":153,\"end_lineno\":159,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_build_api_url\"],\"properties\":{}}"}, {"id": "{\"lineno\":162,\"end_lineno\":173,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_requests_proxies_arg\"],\"properties\":{}}"}, {"id": "{\"lineno\":176,\"end_lineno\":187,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_aiohttp_proxies_arg\"],\"properties\":{}}"}, {"id": "{\"lineno\":190,\"end_lineno\":196,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_make_session\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":210,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"id": "{\"lineno\":213,\"end_lineno\":217,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":220,\"end_lineno\":224,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"parse_stream_async\"],\"properties\":{}}"}, {"id": "{\"lineno\":227,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"APIRequestor\"],\"properties\":{}}"}, {"id": "{\"lineno\":620,\"end_lineno\":622,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aiohttp_session\"],\"properties\":{}}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__"}, {"id": "metagpt/provider/llm_provider_registry.py:register_provider"}, {"id": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY"}, {"id": "metagpt/provider/llm_provider_registry.py:ast.Constant:\n@Time : 2023/12/19 17:26\n@Author : alexanderwu\n@File : llm_provider_registry.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 17:26\\n@Author : alexanderwu\\n@File : llm_provider_registry.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/llm_provider_registry.py:module:metagpt.config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"LLMProviderEnum\"]}}"}, {"id": "metagpt/provider/llm_provider_registry.py:names:['LLMProviderEnum']"}, {"id": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderRegistry\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_REGISTRY\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":34,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_provider\"],\"properties\":{}}"}, {"id": "metagpt/provider/metagpt_api.py:MetaGPTLLM:__init__"}, {"id": "metagpt/provider/metagpt_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : metagpt_api.py\n@Desc : MetaGPT LLM provider.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : metagpt_api.py\\n@Desc : MetaGPT LLM provider.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.config"}, {"id": "metagpt/provider/metagpt_api.py:names:['LLMProviderEnum']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.provider"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['register_provider']"}, {"id": "{\"lineno\":14,\"end_lineno\":16,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:__init__"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:__init_openllm"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs"}, {"id": "metagpt/provider/open_llm_api.py:module:openai.types"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.config"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['CONFIG', 'Config', 'LLMProviderEnum']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['logger']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['register_provider']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['CostManager', 'Costs']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['count_message_tokens', 'count_string_tokens']"}, {"id": "{\"lineno\":15,\"end_lineno\":33,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLMCostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":76,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/human_provider.py:ast.Constant:\nFilename: MetaGPT/metagpt/provider/human_provider.py\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\nAuthor: garylin2099\n"}, {"id": "{\"lineno\":1,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nFilename: MetaGPT/metagpt/provider/human_provider.py\\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\\nAuthor: garylin2099\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/human_provider.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['Optional']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.logs"}, {"id": "metagpt/provider/human_provider.py:names:['logger']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['BaseLLM']"}, {"id": "{\"lineno\":12,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanProvider\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:_aread"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:module:zhipuai.utils.sse_client"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.utils.sse_client\",\"names\":[\"_FIELD_SEPARATOR\",\"Event\",\"SSEClient\"]}}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:names:['_FIELD_SEPARATOR', 'Event', 'SSEClient']"}, {"id": "{\"lineno\":9,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AsyncSSEClient\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/__init__.py"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:json"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:zhipuai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.model_api.api"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.model_api.api\",\"names\":[\"InvokeType\",\"ModelAPI\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['InvokeType', 'ModelAPI']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.utils.http_client"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.utils.http_client\",\"names\":[\"headers as zhipuai_default_headers\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['headers as zhipuai_default_headers']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.general_api_requestor"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['GeneralAPIRequestor']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.zhipuai.async_sse_client"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['AsyncSSEClient']"}, {"id": "{\"lineno\":15,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuModelAPI\"],\"properties\":{}}"}, {"id": "metagpt/provider/postprocess/__init__.py"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['Union']"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:metagpt.utils.repair_llm_raw_output"}, {"id": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['RepairType', 'extract_content_from_output', 'repair_llm_raw_output', 'retry_parse_json_text']"}, {"id": "{\"lineno\":15,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BasePostProcessPlugin\"],\"properties\":{}}"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:module:typing"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['Union']"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:module:metagpt.provider.postprocess.base_postprocess_plugin"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['BasePostProcessPlugin']"}, {"id": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"llm_output_postprocess\"],\"properties\":{}}"}, {"id": "metagpt/management/__init__.py"}, {"id": "metagpt/management/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:58\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:58\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:__init__"}, {"id": "metagpt/management/skill_manager.py:Skill"}, {"id": "metagpt/management/skill_manager.py:ast.Constant:\n@Time : 2023/6/5 01:44\n@Author : alexanderwu\n@File : skill_manager.py\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/5 01:44\\n@Author : alexanderwu\\n@File : skill_manager.py\\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\\n\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['Action']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.const"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['PROMPT_PATH']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.document_store.chromadb_store"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['ChromaStore']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.logs"}, {"id": "metagpt/management/skill_manager.py:names:['logger']"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Assign\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"id": "{\"lineno\":17,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillManager\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:__name__:__main__"}, {"id": "{\"lineno\":77,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:Engineer:__init__"}, {"id": "metagpt/roles/engineer.py:Engineer:_parse_tasks"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr"}, {"id": "metagpt/roles/engineer.py:Engineer:_act"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_write_code"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_summarize"}, {"id": "metagpt/roles/engineer.py:Engineer:_is_pass"}, {"id": "metagpt/roles/engineer.py:Engineer:_think"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_coding_context"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_coding_doc"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_code_actions"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions"}, {"id": "metagpt/roles/engineer.py:IS_PASS_PROMPT"}, {"id": "metagpt/roles/engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\n distribution feature for message filtering.\n 2. Consolidate message reception and processing logic within `_observe`.\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\n 4. Supplemented the external transmission of internal messages.\n@Modified By: mashenquan, 2023-11-27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":18,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\\n distribution feature for message filtering.\\n 2. Consolidate message reception and processing logic within `_observe`.\\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\\n 4. Supplemented the external transmission of internal messages.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:module:__future__"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['annotations']"}, {"id": "metagpt/roles/engineer.py:json"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:module:collections"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['defaultdict']"}, {"id": "metagpt/roles/engineer.py:module:pathlib"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Path']"}, {"id": "metagpt/roles/engineer.py:module:typing"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Set']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Action', 'WriteCode', 'WriteCodeReview', 'WriteTasks']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.fix_bug"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['FixBug']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.summarize_code"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['SummarizeCode']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.config"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CONFIG']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.const"}, {"id": "{\"lineno\":31,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CODE_SUMMARIES_FILE_REPO', 'CODE_SUMMARIES_PDF_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.logs"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['logger']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.roles"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Role']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.schema"}, {"id": "{\"lineno\":39,\"end_lineno\":45,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CodeSummarizeContext', 'CodingContext', 'Document', 'Documents', 'Message']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":46,\"end_lineno\":46,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['any_to_name', 'any_to_str', 'any_to_str_set']"}, {"id": "{\"lineno\":48,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_PASS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":321,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Engineer\"],\"properties\":{}}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:__init__"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_act"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_observe"}, {"id": "metagpt/roles/qa_engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : qa_engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\n@Modified By: mashenquan, 2023-11-27.\n 1. Following the think-act principle, solidify the task parameters when creating the\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\n to using file references.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : qa_engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\\n to using file references.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.actions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['DebugError', 'RunCode', 'WriteTest']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.actions.summarize_code"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['SummarizeCode']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.config"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['CONFIG']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.const"}, {"id": "{\"lineno\":22,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['MESSAGE_ROUTE_TO_NONE', 'TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.logs"}, {"id": "metagpt/roles/qa_engineer.py:names:['logger']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.roles"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['Role']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.schema"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['Document', 'Message', 'RunCodeContext', 'TestingContext']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['any_to_str_set', 'parse_recipient']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['FileRepository']"}, {"id": "{\"lineno\":34,\"end_lineno\":186,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QaEngineer\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:Teacher:__init__"}, {"id": "metagpt/roles/teacher.py:Teacher:_think"}, {"id": "metagpt/roles/teacher.py:Teacher:_react"}, {"id": "metagpt/roles/teacher.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : teacher.py\n@Desc : Used by Agent Store\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : teacher.py\\n@Desc : Used by Agent Store\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:re"}, {"id": "metagpt/roles/teacher.py:aiofiles"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:module:metagpt.actions"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['UserRequirement']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.actions.write_teaching_plan"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['TeachingPlanBlock', 'WriteTeachingPlanPart']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.config"}, {"id": "metagpt/roles/teacher.py:names:['CONFIG']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.logs"}, {"id": "metagpt/roles/teacher.py:names:['logger']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.roles"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['Role']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.schema"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['Message']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['any_to_str']"}, {"id": "{\"lineno\":25,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Teacher\"],\"properties\":{}}"}, {"id": "metagpt/roles/product_manager.py:ProductManager:__init__"}, {"id": "metagpt/roles/product_manager.py:ProductManager:_think"}, {"id": "metagpt/roles/product_manager.py:ProductManager:_observe"}, {"id": "metagpt/roles/product_manager.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : product_manager.py\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : product_manager.py\\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['UserRequirement', 'WritePRD']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.actions.prepare_documents"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['PrepareDocuments']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.config"}, {"id": "metagpt/roles/product_manager.py:names:['CONFIG']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['Role']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['any_to_name']"}, {"id": "{\"lineno\":17,\"end_lineno\":57,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProductManager\"],\"properties\":{}}"}, {"id": "metagpt/roles/sales.py:Sales:__init__"}, {"id": "metagpt/roles/sales.py:Sales:_set_store"}, {"id": "metagpt/roles/sales.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/sales.py:module:typing"}, {"id": "metagpt/roles/sales.py:names:['Optional']"}, {"id": "metagpt/roles/sales.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Field']"}, {"id": "metagpt/roles/sales.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"id": "metagpt/roles/sales.py:names:['SearchAndSummarize', 'UserRequirement']"}, {"id": "metagpt/roles/sales.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/roles/sales.py:names:['BaseStore']"}, {"id": "metagpt/roles/sales.py:module:metagpt.roles"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Role']"}, {"id": "metagpt/roles/sales.py:module:metagpt.tools"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/roles/sales.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":19,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Sales\"],\"properties\":{}}"}, {"id": "metagpt/roles/searcher.py:Searcher:__init__"}, {"id": "metagpt/roles/searcher.py:Searcher:_act_sp"}, {"id": "metagpt/roles/searcher.py:Searcher:_act"}, {"id": "metagpt/roles/searcher.py:ast.Constant:\n@Time : 2023/5/23 17:25\n@Author : alexanderwu\n@File : searcher.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:25\\n@Author : alexanderwu\\n@File : searcher.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/searcher.py:module:pydantic"}, {"id": "metagpt/roles/searcher.py:names:['Field']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"ActionOutput\",\"SearchAndSummarize\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['ActionOutput', 'SearchAndSummarize']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['ActionNode']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.logs"}, {"id": "metagpt/roles/searcher.py:names:['logger']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.roles"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['Role']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['Message']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.tools"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":21,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Searcher\"],\"properties\":{}}"}, {"id": "metagpt/roles/assistant.py:Assistant:__init__"}, {"id": "metagpt/roles/assistant.py:Assistant:_plan"}, {"id": "metagpt/roles/assistant.py:ast.Constant:\n@Time : 2023/8/7\n@Author : mashenquan\n@File : assistant.py\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\n make these symbols configurable and standardized, making the process of building flows more convenient.\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\n configuration file.\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\n indicates that further reasoning cannot continue.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/7\\n@Author : mashenquan\\n@File : assistant.py\\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\\n make these symbols configurable and standardized, making the process of building flows more convenient.\\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\\n configuration file.\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\\n indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/assistant.py:module:enum"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Enum']"}, {"id": "metagpt/roles/assistant.py:module:pathlib"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Path']"}, {"id": "metagpt/roles/assistant.py:module:typing"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Optional']"}, {"id": "metagpt/roles/assistant.py:module:pydantic"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Field']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.actions.skill_action"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['ArgumentsParingAction', 'SkillAction']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.actions.talk_action"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['TalkAction']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.config"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['CONFIG']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.learn.skill_loader"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['SkillsDeclaration']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.logs"}, {"id": "metagpt/roles/assistant.py:names:['logger']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.memory.brain_memory"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['BrainMemory']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.roles"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Role']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Message']"}, {"id": "{\"lineno\":33,\"end_lineno\":35,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageType\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Assistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/__init__.py"}, {"id": "metagpt/roles/__init__.py:__all__"}, {"id": "metagpt/roles/__init__.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Role']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.architect"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Architect']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.project_manager"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['ProjectManager']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.product_manager"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['ProductManager']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.engineer"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Engineer']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.qa_engineer"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['QaEngineer']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.searcher"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Searcher']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.sales"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Sales']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.customer_service"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['CustomerService']"}, {"id": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:RoleContext:check"}, {"id": "metagpt/roles/role.py:Role:__init__"}, {"id": "metagpt/roles/role.py:Role:_reset"}, {"id": "metagpt/roles/role.py:Role:_setting"}, {"id": "metagpt/roles/role.py:Role:_init_action_system_message"}, {"id": "metagpt/roles/role.py:Role:_init_actions"}, {"id": "metagpt/roles/role.py:Role:_set_react_mode"}, {"id": "metagpt/roles/role.py:Role:_watch"}, {"id": "metagpt/roles/role.py:Role:_set_state"}, {"id": "metagpt/roles/role.py:Role:_get_prefix"}, {"id": "metagpt/roles/role.py:Role:_think"}, {"id": "metagpt/roles/role.py:Role:_act"}, {"id": "metagpt/roles/role.py:Role:_observe"}, {"id": "metagpt/roles/role.py:Role:_react"}, {"id": "metagpt/roles/role.py:Role:_act_by_order"}, {"id": "metagpt/roles/role.py:Role:_plan_and_act"}, {"id": "metagpt/roles/role.py:PREFIX_TEMPLATE"}, {"id": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE"}, {"id": "metagpt/roles/role.py:STATE_TEMPLATE"}, {"id": "metagpt/roles/role.py:ROLE_TEMPLATE"}, {"id": "metagpt/roles/role.py:ast.Constant:\n@Time : 2023/5/11 14:42\n@Author : alexanderwu\n@File : role.py\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\n consolidated within the `_observe` function.\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\n they've subscribed to through the `subscribed_tags` property.\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":21,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:42\\n@Author : alexanderwu\\n@File : role.py\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\\n consolidated within the `_observe` function.\\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\\n they've subscribed to through the `subscribed_tags` property.\\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:module:__future__"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/roles/role.py:names:['annotations']"}, {"id": "metagpt/roles/role.py:module:enum"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/role.py:names:['Enum']"}, {"id": "metagpt/roles/role.py:module:pathlib"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/role.py:names:['Path']"}, {"id": "metagpt/roles/role.py:module:typing"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\"]}}"}, {"id": "metagpt/roles/role.py:names:['Any', 'Iterable', 'Optional', 'Set', 'Type']"}, {"id": "metagpt/roles/role.py:module:pydantic"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"id": "metagpt/roles/role.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/roles/role.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/roles/role.py:names:['ActionNode']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions.add_requirement"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/role.py:names:['UserRequirement']"}, {"id": "metagpt/roles/role.py:module:metagpt.const"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SERDESER_PATH\"]}}"}, {"id": "metagpt/roles/role.py:names:['SERDESER_PATH']"}, {"id": "metagpt/roles/role.py:module:metagpt.llm"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\",\"HumanProvider\"]}}"}, {"id": "metagpt/roles/role.py:names:['LLM', 'HumanProvider']"}, {"id": "metagpt/roles/role.py:module:metagpt.logs"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/role.py:names:['logger']"}, {"id": "metagpt/roles/role.py:module:metagpt.memory"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/roles/role.py:names:['Memory']"}, {"id": "metagpt/roles/role.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/roles/role.py:names:['BaseLLM']"}, {"id": "metagpt/roles/role.py:module:metagpt.schema"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"id": "metagpt/roles/role.py:names:['Message', 'MessageQueue', 'SerializationMixin']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":40,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"import_class\",\"read_json_file\",\"role_raise_decorator\",\"write_json_file\"]}}"}, {"id": "metagpt/roles/role.py:names:['any_to_name', 'any_to_str', 'import_class', 'read_json_file', 'role_raise_decorator', 'write_json_file']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.repair_llm_raw_output"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"id": "metagpt/roles/role.py:names:['extract_state_value_from_output']"}, {"id": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONSTRAINT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"STATE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":70,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"ROLE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":81,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleReactMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":129,\"end_lineno\":510,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Role\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ast.Constant:\n@Time : 2023/9/21 14:10:05\n@Author : Stitch-z\n@File : invoice_ocr_assistant.py\n"}, {"id": "{\"lineno\":4,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 14:10:05\\n@Author : Stitch-z\\n@File : invoice_ocr_assistant.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:json"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:pathlib"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Path']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Optional']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:pandas as pd"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['BaseModel']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.actions.invoice_ocr"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['GenerateTable', 'InvoiceOCR', 'ReplyQuestion']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.prompts.invoice_ocr"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['INVOICE_OCR_SUCCESS']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Message']"}, {"id": "{\"lineno\":23,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoicePath\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OCRResults\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceData\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyData\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCRAssistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/architect.py:Architect:__init__"}, {"id": "metagpt/roles/architect.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : architect.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : architect.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/architect.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"id": "metagpt/roles/architect.py:names:['WritePRD']"}, {"id": "metagpt/roles/architect.py:module:metagpt.actions.design_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"id": "metagpt/roles/architect.py:names:['WriteDesign']"}, {"id": "metagpt/roles/architect.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/architect.py:names:['Role']"}, {"id": "{\"lineno\":14,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Architect\"],\"properties\":{}}"}, {"id": "metagpt/roles/customer_service.py:DESC"}, {"id": "metagpt/roles/customer_service.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "metagpt/roles/customer_service.py:module:typing"}, {"id": "metagpt/roles/customer_service.py:names:['Optional']"}, {"id": "metagpt/roles/customer_service.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['Field']"}, {"id": "metagpt/roles/customer_service.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['BaseStore']"}, {"id": "metagpt/roles/customer_service.py:module:metagpt.roles"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['Sales']"}, {"id": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESC\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomerService\"],\"properties\":{}}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:__init__"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:_think"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:_act"}, {"id": "metagpt/roles/sk_agent.py:ast.Constant:\n@Time : 2023/9/13 12:23\n@Author : femto Zheng\n@File : sk_agent.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\n distribution feature for message filtering.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:23\\n@Author : femto Zheng\\n@File : sk_agent.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\\n distribution feature for message filtering.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/sk_agent.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Any', 'Callable', 'Union']"}, {"id": "metagpt/roles/sk_agent.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Field']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Kernel']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['SequentialPlanner']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.action_planner.action_planner"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['ActionPlanner']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.basic_planner"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['BasicPlanner', 'Plan']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.actions"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['UserRequirement']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.actions.execute_task"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['ExecuteTask']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.llm"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['LLM']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.logs"}, {"id": "metagpt/roles/sk_agent.py:names:['logger']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['BaseLLM']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.roles"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Role']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.schema"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Message']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.utils.make_sk_kernel"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['make_sk_kernel']"}, {"id": "{\"lineno\":28,\"end_lineno\":90,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkAgent\"],\"properties\":{}}"}, {"id": "metagpt/roles/prompt.py:PREFIX"}, {"id": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS"}, {"id": "metagpt/roles/prompt.py:SUFFIX"}, {"id": "metagpt/roles/prompt.py:ast.Constant:\n@Time : 2023/5/18 22:43\n@Author : alexanderwu\n@File : prompt.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 22:43\\n@Author : alexanderwu\\n@File : prompt.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/prompt.py:module:enum"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/prompt.py:names:['Enum']"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_INSTRUCTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUFFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PromptString\"],\"properties\":{}}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act"}, {"id": "metagpt/roles/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/tutorial_assistant.py:module:datetime"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['datetime']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Dict']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.actions.write_tutorial"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['WriteContent', 'WriteDirectory']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['TUTORIAL_PATH']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.logs"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['logger']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.schema"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Message']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.utils.file"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['File']"}, {"id": "{\"lineno\":20,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TutorialAssistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:__init__"}, {"id": "metagpt/roles/project_manager.py:ast.Constant:\n@Time : 2023/5/11 15:04\n@Author : alexanderwu\n@File : project_manager.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 15:04\\n@Author : alexanderwu\\n@File : project_manager.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"id": "metagpt/roles/project_manager.py:names:['WriteTasks']"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.actions.design_api"}, {"id": "metagpt/roles/project_manager.py:names:['WriteDesign']"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.roles.role"}, {"id": "metagpt/roles/project_manager.py:names:['Role']"}, {"id": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectManager\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:Researcher:__init__"}, {"id": "metagpt/roles/researcher.py:Researcher:_think"}, {"id": "metagpt/roles/researcher.py:Researcher:_act"}, {"id": "metagpt/roles/researcher.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:asyncio"}, {"id": "metagpt/roles/researcher.py:re"}, {"id": "metagpt/roles/researcher.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['BaseModel']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['Action', 'CollectLinks', 'ConductResearch', 'WebBrowseAndSummarize']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.actions.research"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['get_research_system_text']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['RESEARCH_PATH']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.logs"}, {"id": "metagpt/roles/researcher.py:names:['logger']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.schema"}, {"id": "metagpt/roles/researcher.py:names:['Message']"}, {"id": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Report\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Researcher\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:__name__:__main__"}, {"id": "{\"lineno\":119,\"end_lineno\":126,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py"}, {"id": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping"}, {"id": "metagpt/utils/serialize.py:actionoutput_mapping_to_str"}, {"id": "metagpt/utils/serialize.py:actionoutput_str_to_mapping"}, {"id": "metagpt/utils/serialize.py:serialize_message"}, {"id": "metagpt/utils/serialize.py:deserialize_message"}, {"id": "metagpt/utils/serialize.py:copy"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py:pickle"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pickle\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"id": "metagpt/utils/serialize.py:names:['import_class']"}, {"id": "{\"lineno\":11,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutout_schema_to_mapping\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":47,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_mapping_to_str\"],\"properties\":{}}"}, {"id": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_str_to_mapping\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":71,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_message\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"deserialize_message\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py"}, {"id": "metagpt/utils/mmdc_playwright.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_playwright.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : Steven Lee\n@File : mmdc_playwright.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : Steven Lee\\n@File : mmdc_playwright.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py:os"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py:module:urllib.parse"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['urljoin']"}, {"id": "metagpt/utils/mmdc_playwright.py:module:playwright.async_api"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['async_playwright']"}, {"id": "metagpt/utils/mmdc_playwright.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":121,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:__init__"}, {"id": "metagpt/utils/dependency_file.py:ast.Constant:\n@Time : 2023/11/22\n@Author : mashenquan\n@File : dependency_file.py\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/22\\n@Author : mashenquan\\n@File : dependency_file.py\\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:module:__future__"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['annotations']"}, {"id": "metagpt/utils/dependency_file.py:json"}, {"id": "metagpt/utils/dependency_file.py:module:pathlib"}, {"id": "metagpt/utils/dependency_file.py:names:['Path']"}, {"id": "metagpt/utils/dependency_file.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['Set']"}, {"id": "metagpt/utils/dependency_file.py:aiofiles"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['aread']"}, {"id": "metagpt/utils/dependency_file.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['handle_exception']"}, {"id": "{\"lineno\":21,\"end_lineno\":102,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DependencyFile\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py"}, {"id": "metagpt/utils/make_sk_kernel.py:make_sk_kernel"}, {"id": "metagpt/utils/make_sk_kernel.py:ast.Constant:\n@Time : 2023/9/13 12:29\n@Author : femto Zheng\n@File : make_sk_kernel.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:29\\n@Author : femto Zheng\\n@File : make_sk_kernel.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py:semantic_kernel as sk"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"semantic_kernel as sk\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion"}, {"id": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['AzureChatCompletion']"}, {"id": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion"}, {"id": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['OpenAIChatCompletion']"}, {"id": "metagpt/utils/make_sk_kernel.py:module:metagpt.config"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['CONFIG']"}, {"id": "{\"lineno\":19,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_sk_kernel\"],\"properties\":{}}"}, {"id": "metagpt/utils/token_counter.py"}, {"id": "metagpt/utils/token_counter.py:count_message_tokens"}, {"id": "metagpt/utils/token_counter.py:count_string_tokens"}, {"id": "metagpt/utils/token_counter.py:get_max_completion_tokens"}, {"id": "metagpt/utils/token_counter.py:TOKEN_COSTS"}, {"id": "metagpt/utils/token_counter.py:TOKEN_MAX"}, {"id": "metagpt/utils/token_counter.py:ast.Constant:\n@Time : 2023/5/18 00:40\n@Author : alexanderwu\n@File : token_counter.py\nref1: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\nref2: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\nref3: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\nref4: https://ai.google.dev/models/gemini\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 00:40\\n@Author : alexanderwu\\n@File : token_counter.py\\nref1: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\\nref2: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\\nref3: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\\nref4: https://ai.google.dev/models/gemini\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/token_counter.py:tiktoken"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"tiktoken\"],\"properties\":{}}"}, {"id": "{\"lineno\":14,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_COSTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_MAX\"],\"properties\":{}}"}, {"id": "{\"lineno\":56,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_message_tokens\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":127,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_string_tokens\"],\"properties\":{}}"}, {"id": "{\"lineno\":130,\"end_lineno\":142,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_max_completion_tokens\"],\"properties\":{}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_json_format"}, {"id": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json"}, {"id": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry"}, {"id": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text"}, {"id": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:copy"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:enum"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['Enum']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['Callable', 'Union']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:regex as re"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"regex as re\"],\"properties\":{}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:tenacity"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['RetryCallState', 'retry', 'stop_after_attempt', 'wait_fixed']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.config"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['CONFIG']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.logs"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['logger']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.utils.custom_decoder"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['CustomDecoder']"}, {"id": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepairType\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":41,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_case_sensitivity\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":64,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_special_character_missing\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":105,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_required_key_pair_missing\"],\"properties\":{}}"}, {"id": "{\"lineno\":108,\"end_lineno\":123,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_json_format\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":137,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_repair_llm_raw_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":140,\"end_lineno\":161,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_llm_raw_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":164,\"end_lineno\":206,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_invalid_json\"],\"properties\":{}}"}, {"id": "{\"lineno\":209,\"end_lineno\":243,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"run_after_exp_and_passon_next_retry\"],\"properties\":{}}"}, {"id": "{\"lineno\":251,\"end_lineno\":265,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"retry_parse_json_text\"],\"properties\":{}}"}, {"id": "{\"lineno\":268,\"end_lineno\":298,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_content_from_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":301,\"end_lineno\":314,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_state_value_from_output\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py"}, {"id": "metagpt/utils/mermaid.py:mermaid_to_file"}, {"id": "metagpt/utils/mermaid.py:MMC1"}, {"id": "metagpt/utils/mermaid.py:MMC2"}, {"id": "metagpt/utils/mermaid.py:ast.Constant:\n@Time : 2023/7/4 10:53\n@Author : alexanderwu alitrack\n@File : mermaid.py\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/4 10:53\\n@Author : alexanderwu alitrack\\n@File : mermaid.py\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py:asyncio"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py:os"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py:module:pathlib"}, {"id": "metagpt/utils/mermaid.py:names:['Path']"}, {"id": "metagpt/utils/mermaid.py:aiofiles"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.config"}, {"id": "metagpt/utils/mermaid.py:names:['CONFIG']"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.logs"}, {"id": "metagpt/utils/mermaid.py:names:['logger']"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"id": "metagpt/utils/mermaid.py:names:['check_cmd_exists']"}, {"id": "{\"lineno\":20,\"end_lineno\":92,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":127,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC1\"],\"properties\":{}}"}, {"id": "{\"lineno\":129,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC2\"],\"properties\":{}}"}, {"id": "metagpt/utils/parse_html.py:get_html_content"}, {"id": "metagpt/utils/parse_html.py:_get_soup"}, {"id": "metagpt/utils/parse_html.py:module:__future__"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['annotations']"}, {"id": "metagpt/utils/parse_html.py:module:typing"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['Generator', 'Optional']"}, {"id": "metagpt/utils/parse_html.py:module:urllib.parse"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['urljoin', 'urlparse']"}, {"id": "metagpt/utils/parse_html.py:module:bs4"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['BeautifulSoup']"}, {"id": "metagpt/utils/parse_html.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['BaseModel', 'PrivateAttr']"}, {"id": "{\"lineno\":11,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebPage\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":45,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_html_content\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_soup\"],\"properties\":{}}"}, {"id": "metagpt/utils/special_tokens.py"}, {"id": "metagpt/utils/special_tokens.py:MSG_SEP"}, {"id": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Assign\",\"tokens\":[\"MSG_SEP\"],\"properties\":{}}"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILENAME_CODE_SEP\"],\"properties\":{}}"}, {"id": "metagpt/utils/ahttp_client.py"}, {"id": "metagpt/utils/ahttp_client.py:apost"}, {"id": "metagpt/utils/ahttp_client.py:apost_stream"}, {"id": "metagpt/utils/ahttp_client.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/utils/ahttp_client.py:names:['Any', 'Mapping', 'Optional', 'Union']"}, {"id": "metagpt/utils/ahttp_client.py:aiohttp"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/utils/ahttp_client.py:module:aiohttp.client"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"id": "metagpt/utils/ahttp_client.py:names:['DEFAULT_TIMEOUT']"}, {"id": "{\"lineno\":11,\"end_lineno\":28,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":49,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost_stream\"],\"properties\":{}}"}, {"id": "metagpt/utils/__init__.py"}, {"id": "metagpt/utils/__init__.py:__all__"}, {"id": "metagpt/utils/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:50\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:50\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.read_document"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['read_docx']"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.singleton"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['Singleton']"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['TOKEN_COSTS', 'count_message_tokens', 'count_string_tokens']"}, {"id": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py"}, {"id": "metagpt/utils/mmdc_ink.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_ink.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mermaid.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py:base64"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py:module:aiohttp"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"id": "metagpt/utils/mmdc_ink.py:names:['ClientError', 'ClientSession']"}, {"id": "metagpt/utils/mmdc_ink.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_ink.py:names:['logger']"}, {"id": "{\"lineno\":15,\"end_lineno\":41,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:upsert"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:update"}, {"id": "metagpt/utils/di_graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : di_graph_repository.py\n@Desc : Graph repository based on DiGraph\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : di_graph_repository.py\\n@Desc : Graph repository based on DiGraph\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:__future__"}, {"id": "metagpt/utils/di_graph_repository.py:names:['annotations']"}, {"id": "metagpt/utils/di_graph_repository.py:json"}, {"id": "metagpt/utils/di_graph_repository.py:module:pathlib"}, {"id": "metagpt/utils/di_graph_repository.py:names:['Path']"}, {"id": "metagpt/utils/di_graph_repository.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['List']"}, {"id": "metagpt/utils/di_graph_repository.py:networkx"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"networkx\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['aread', 'awrite']"}, {"id": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['SPO', 'GraphRepository']"}, {"id": "{\"lineno\":21,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DiGraphRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/cost_manager.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : openai.py\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : openai.py\\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/cost_manager.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"id": "metagpt/utils/cost_manager.py:names:['NamedTuple']"}, {"id": "metagpt/utils/cost_manager.py:module:pydantic"}, {"id": "metagpt/utils/cost_manager.py:names:['BaseModel']"}, {"id": "metagpt/utils/cost_manager.py:module:metagpt.logs"}, {"id": "metagpt/utils/cost_manager.py:names:['logger']"}, {"id": "metagpt/utils/cost_manager.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"id": "metagpt/utils/cost_manager.py:names:['TOKEN_COSTS']"}, {"id": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Costs\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CostManager\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : file.py\n@Describe : General file operations.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : file.py\\n@Describe : General file operations.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:module:pathlib"}, {"id": "metagpt/utils/file.py:names:['Path']"}, {"id": "metagpt/utils/file.py:aiofiles"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:module:metagpt.logs"}, {"id": "metagpt/utils/file.py:names:['logger']"}, {"id": "metagpt/utils/file.py:module:metagpt.utils.exceptions"}, {"id": "metagpt/utils/file.py:names:['handle_exception']"}, {"id": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"File\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:NoMoneyException:__init__"}, {"id": "metagpt/utils/common.py:NoMoneyException:__str__"}, {"id": "metagpt/utils/common.py:check_cmd_exists"}, {"id": "metagpt/utils/common.py:require_python_version"}, {"id": "metagpt/utils/common.py:print_members"}, {"id": "metagpt/utils/common.py:parse_recipient"}, {"id": "metagpt/utils/common.py:get_class_name"}, {"id": "metagpt/utils/common.py:any_to_str"}, {"id": "metagpt/utils/common.py:any_to_str_set"}, {"id": "metagpt/utils/common.py:is_subscribed"}, {"id": "metagpt/utils/common.py:any_to_name"}, {"id": "metagpt/utils/common.py:concat_namespace"}, {"id": "metagpt/utils/common.py:split_namespace"}, {"id": "metagpt/utils/common.py:general_after_log"}, {"id": "metagpt/utils/common.py:read_json_file"}, {"id": "metagpt/utils/common.py:write_json_file"}, {"id": "metagpt/utils/common.py:import_class"}, {"id": "metagpt/utils/common.py:import_class_inst"}, {"id": "metagpt/utils/common.py:format_trackback_info"}, {"id": "metagpt/utils/common.py:serialize_decorator"}, {"id": "metagpt/utils/common.py:role_raise_decorator"}, {"id": "metagpt/utils/common.py:aread"}, {"id": "metagpt/utils/common.py:awrite"}, {"id": "metagpt/utils/common.py:read_file_block"}, {"id": "metagpt/utils/common.py:ast.Constant:\n@Time : 2023/4/29 16:07\n@Author : alexanderwu\n@File : common.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n Add generic class-to-string and object-to-string conversion functionality.\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\n responses.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 16:07\\n@Author : alexanderwu\\n@File : common.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n Add generic class-to-string and object-to-string conversion functionality.\\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\\n responses.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:__future__"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/common.py:names:['annotations']"}, {"id": "metagpt/utils/common.py:ast"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:contextlib"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"contextlib\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:importlib"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:inspect"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:json"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:os"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:platform"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:re"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:sys"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:traceback"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:typing"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:pathlib"}, {"id": "metagpt/utils/common.py:names:['Path']"}, {"id": "metagpt/utils/common.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"id": "metagpt/utils/common.py:names:['Any', 'List', 'Tuple', 'Union']"}, {"id": "metagpt/utils/common.py:aiofiles"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:loguru"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Import\",\"tokens\":[\"loguru\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:pydantic_core"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"id": "metagpt/utils/common.py:names:['to_jsonable_python']"}, {"id": "metagpt/utils/common.py:module:tenacity"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"_utils\"]}}"}, {"id": "metagpt/utils/common.py:names:['RetryCallState', '_utils']"}, {"id": "metagpt/utils/common.py:module:metagpt.const"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"id": "metagpt/utils/common.py:names:['MESSAGE_ROUTE_TO_ALL']"}, {"id": "metagpt/utils/common.py:module:metagpt.logs"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/utils/common.py:names:['logger']"}, {"id": "metagpt/utils/common.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/utils/common.py:names:['handle_exception']"}, {"id": "{\"lineno\":38,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"check_cmd_exists\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"require_python_version\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":231,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OutputParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":234,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":307,\"end_lineno\":316,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NoMoneyException\"],\"properties\":{}}"}, {"id": "{\"lineno\":319,\"end_lineno\":335,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"print_members\"],\"properties\":{}}"}, {"id": "{\"lineno\":338,\"end_lineno\":348,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_recipient\"],\"properties\":{}}"}, {"id": "{\"lineno\":351,\"end_lineno\":353,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_name\"],\"properties\":{}}"}, {"id": "{\"lineno\":356,\"end_lineno\":363,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str\"],\"properties\":{}}"}, {"id": "{\"lineno\":366,\"end_lineno\":381,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str_set\"],\"properties\":{}}"}, {"id": "{\"lineno\":384,\"end_lineno\":392,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_subscribed\"],\"properties\":{}}"}, {"id": "{\"lineno\":395,\"end_lineno\":403,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_name\"],\"properties\":{}}"}, {"id": "{\"lineno\":406,\"end_lineno\":407,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"concat_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":410,\"end_lineno\":411,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":414,\"end_lineno\":444,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"general_after_log\"],\"properties\":{}}"}, {"id": "{\"lineno\":447,\"end_lineno\":456,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_json_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":459,\"end_lineno\":465,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"write_json_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":468,\"end_lineno\":471,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class\"],\"properties\":{}}"}, {"id": "{\"lineno\":474,\"end_lineno\":477,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class_inst\"],\"properties\":{}}"}, {"id": "{\"lineno\":480,\"end_lineno\":481,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"format_trackback_info\"],\"properties\":{}}"}, {"id": "{\"lineno\":484,\"end_lineno\":495,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":498,\"end_lineno\":519,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"role_raise_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":523,\"end_lineno\":527,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread\"],\"properties\":{}}"}, {"id": "{\"lineno\":530,\"end_lineno\":535,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite\"],\"properties\":{}}"}, {"id": "{\"lineno\":538,\"end_lineno\":552,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"read_file_block\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:Redis:__init__"}, {"id": "metagpt/utils/redis.py:Redis:_connect"}, {"id": "metagpt/utils/redis.py:ast.Constant:\n@Time : 2023/12/27\n@Author : mashenquan\n@File : redis.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/27\\n@Author : mashenquan\\n@File : redis.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:__future__"}, {"id": "metagpt/utils/redis.py:names:['annotations']"}, {"id": "metagpt/utils/redis.py:traceback"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:datetime"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"id": "metagpt/utils/redis.py:names:['timedelta']"}, {"id": "metagpt/utils/redis.py:aioredis"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aioredis\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:metagpt.config"}, {"id": "metagpt/utils/redis.py:names:['CONFIG']"}, {"id": "metagpt/utils/redis.py:module:metagpt.logs"}, {"id": "metagpt/utils/redis.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Redis\"],\"properties\":{}}"}, {"id": "metagpt/utils/text.py"}, {"id": "metagpt/utils/text.py:reduce_message_length"}, {"id": "metagpt/utils/text.py:generate_prompt_chunk"}, {"id": "metagpt/utils/text.py:split_paragraph"}, {"id": "metagpt/utils/text.py:decode_unicode_escape"}, {"id": "metagpt/utils/text.py:_split_by_count"}, {"id": "metagpt/utils/text.py:_split_text_with_ends"}, {"id": "metagpt/utils/text.py:module:typing"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"id": "metagpt/utils/text.py:names:['Generator', 'Sequence']"}, {"id": "metagpt/utils/text.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"id": "metagpt/utils/text.py:names:['TOKEN_MAX', 'count_string_tokens']"}, {"id": "{\"lineno\":6,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"reduce_message_length\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":76,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_prompt_chunk\"],\"properties\":{}}"}, {"id": "{\"lineno\":79,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_paragraph\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_unicode_escape\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_by_count\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_text_with_ends\"],\"properties\":{}}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:__init__"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:insert"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:upsert"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:select"}, {"id": "metagpt/utils/graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : graph_repository.py\n@Desc : Superclass for graph repository.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : graph_repository.py\\n@Desc : Superclass for graph repository.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/graph_repository.py:module:abc"}, {"id": "metagpt/utils/graph_repository.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/utils/graph_repository.py:module:pathlib"}, {"id": "metagpt/utils/graph_repository.py:names:['Path']"}, {"id": "metagpt/utils/graph_repository.py:module:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['List']"}, {"id": "metagpt/utils/graph_repository.py:module:pydantic"}, {"id": "metagpt/utils/graph_repository.py:names:['BaseModel']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/graph_repository.py:names:['logger']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"ClassInfo\",\"ClassRelationship\",\"RepoFileInfo\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['ClassInfo', 'ClassRelationship', 'RepoFileInfo']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['concat_namespace']"}, {"id": "{\"lineno\":21,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphKeyword\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":200,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/singleton.py:Singleton:__call__"}, {"id": "metagpt/utils/singleton.py:ast.Constant:\n@Time : 2023/5/11 16:15\n@Author : alexanderwu\n@File : singleton.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 16:15\\n@Author : alexanderwu\\n@File : singleton.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/singleton.py:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"abc\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":22,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Singleton\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:__init__"}, {"id": "metagpt/utils/file_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:__future__"}, {"id": "metagpt/utils/file_repository.py:names:['annotations']"}, {"id": "metagpt/utils/file_repository.py:json"}, {"id": "metagpt/utils/file_repository.py:os"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:datetime"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['datetime']"}, {"id": "metagpt/utils/file_repository.py:module:pathlib"}, {"id": "metagpt/utils/file_repository.py:names:['Path']"}, {"id": "metagpt/utils/file_repository.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['Dict', 'List', 'Set']"}, {"id": "metagpt/utils/file_repository.py:aiofiles"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.config"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['CONFIG']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/file_repository.py:names:['logger']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.schema"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['Document']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['aread']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.utils.json_to_markdown"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['json_to_markdown']"}, {"id": "{\"lineno\":26,\"end_lineno\":290,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FileRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:__init__"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:_leave"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:__init__"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:_leave"}, {"id": "metagpt/utils/pycst.py:get_docstring_statement"}, {"id": "metagpt/utils/pycst.py:has_decorator"}, {"id": "metagpt/utils/pycst.py:merge_docstring"}, {"id": "metagpt/utils/pycst.py:DocstringNode"}, {"id": "metagpt/utils/pycst.py:module:__future__"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['annotations']"}, {"id": "metagpt/utils/pycst.py:module:typing"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['Union']"}, {"id": "metagpt/utils/pycst.py:libcst as cst"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"libcst as cst\"],\"properties\":{}}"}, {"id": "metagpt/utils/pycst.py:module:libcst._nodes.module"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['Module']"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"DocstringNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_docstring_statement\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"has_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringCollector\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringTransformer\"],\"properties\":{}}"}, {"id": "{\"lineno\":159,\"end_lineno\":176,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_docstring\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py"}, {"id": "metagpt/utils/exceptions.py:handle_exception"}, {"id": "metagpt/utils/exceptions.py:ReturnType"}, {"id": "metagpt/utils/exceptions.py:ast.Constant:\n@Time : 2023/12/19 14:46\n@Author : alexanderwu\n@File : exceptions.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 14:46\\n@Author : alexanderwu\\n@File : exceptions.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:asyncio"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:functools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"functools\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:traceback"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"id": "metagpt/utils/exceptions.py:names:['Any', 'Callable', 'Tuple', 'Type', 'TypeVar', 'Union']"}, {"id": "metagpt/utils/exceptions.py:module:metagpt.logs"}, {"id": "metagpt/utils/exceptions.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"ReturnType\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":61,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"handle_exception\"],\"properties\":{}}"}, {"id": "metagpt/utils/highlight.py"}, {"id": "metagpt/utils/highlight.py:highlight"}, {"id": "metagpt/utils/highlight.py:module:pygments"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['highlight as highlight_']"}, {"id": "metagpt/utils/highlight.py:module:pygments.formatters"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['HtmlFormatter', 'TerminalFormatter']"}, {"id": "metagpt/utils/highlight.py:module:pygments.lexers"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['PythonLexer', 'SqlLexer']"}, {"id": "{\"lineno\":7,\"end_lineno\":25,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"highlight\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mmdc_pyppeteer.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mmdc_pyppeteer.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:os"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:urllib.parse"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['urljoin']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:pyppeteer"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['launch']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.config"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['CONFIG']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:S3:__init__"}, {"id": "metagpt/utils/s3.py:base64"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:os.path"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:traceback"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:uuid"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:module:pathlib"}, {"id": "metagpt/utils/s3.py:names:['Path']"}, {"id": "metagpt/utils/s3.py:module:typing"}, {"id": "metagpt/utils/s3.py:names:['Optional']"}, {"id": "metagpt/utils/s3.py:aioboto3"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aioboto3\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:aiofiles"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:module:metagpt.config"}, {"id": "metagpt/utils/s3.py:names:['CONFIG']"}, {"id": "metagpt/utils/s3.py:module:metagpt.const"}, {"id": "metagpt/utils/s3.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/utils/s3.py:module:metagpt.logs"}, {"id": "metagpt/utils/s3.py:names:['logger']"}, {"id": "{\"lineno\":16,\"end_lineno\":170,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3\"],\"properties\":{}}"}, {"id": "metagpt/utils/json_to_markdown.py"}, {"id": "metagpt/utils/json_to_markdown.py:json_to_markdown"}, {"id": "metagpt/utils/json_to_markdown.py:ast.Constant:\n@Time : 2023/9/11 11:50\n@Author : femto Zheng\n@File : json_to_markdown.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/11 11:50\\n@Author : femto Zheng\\n@File : json_to_markdown.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"json_to_markdown\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__"}, {"id": "metagpt/utils/custom_decoder.py:py_make_scanner"}, {"id": "metagpt/utils/custom_decoder.py:JSONObject"}, {"id": "metagpt/utils/custom_decoder.py:py_scanstring"}, {"id": "metagpt/utils/custom_decoder.py:NUMBER_RE"}, {"id": "metagpt/utils/custom_decoder.py:FLAGS"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE"}, {"id": "metagpt/utils/custom_decoder.py:BACKSLASH"}, {"id": "metagpt/utils/custom_decoder.py:WHITESPACE"}, {"id": "metagpt/utils/custom_decoder.py:WHITESPACE_STR"}, {"id": "metagpt/utils/custom_decoder.py:scanstring"}, {"id": "metagpt/utils/custom_decoder.py:json"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:re"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:module:json"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"id": "metagpt/utils/custom_decoder.py:names:['JSONDecodeError']"}, {"id": "metagpt/utils/custom_decoder.py:module:json.decoder"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"id": "metagpt/utils/custom_decoder.py:names:['_decode_uXXXX']"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"NUMBER_RE\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":69,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_make_scanner\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"FLAGS\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_SINGLEQUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_DOUBLE_QUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_SINGLEQUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"BACKSLASH\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE_STR\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":192,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"JSONObject\"],\"properties\":{}}"}, {"id": "{\"lineno\":195,\"end_lineno\":267,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_scanstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":270,\"end_lineno\":270,\"type_name\":\"ast.Assign\",\"tokens\":[\"scanstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":273,\"end_lineno\":297,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomDecoder\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:__init__"}, {"id": "metagpt/utils/git_repository.py:GitRepository:_init"}, {"id": "metagpt/utils/git_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: Git repository management. RFC 135 2.2.3.3.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: Git repository management. RFC 135 2.2.3.3.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:module:__future__"}, {"id": "metagpt/utils/git_repository.py:names:['annotations']"}, {"id": "metagpt/utils/git_repository.py:shutil"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:module:enum"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Enum']"}, {"id": "metagpt/utils/git_repository.py:module:pathlib"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Path']"}, {"id": "metagpt/utils/git_repository.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Dict', 'List']"}, {"id": "metagpt/utils/git_repository.py:module:git.repo"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Repo']"}, {"id": "metagpt/utils/git_repository.py:module:git.repo.fun"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['is_git_dir']"}, {"id": "metagpt/utils/git_repository.py:module:gitignore_parser"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['parse_gitignore']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/git_repository.py:names:['logger']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.utils.dependency_file"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['DependencyFile']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['FileRepository']"}, {"id": "{\"lineno\":25,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChangeType\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":272,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GitRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/read_document.py"}, {"id": "metagpt/utils/read_document.py:read_docx"}, {"id": "metagpt/utils/read_document.py:ast.Constant:\n@Time : 2023/4/29 15:45\n@Author : alexanderwu\n@File : read_document.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:45\\n@Author : alexanderwu\\n@File : read_document.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/read_document.py:docx"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"docx\"],\"properties\":{}}"}, {"id": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_docx\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_name"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_variable_type"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_function_args"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root"}, {"id": "metagpt/actions/rebuild_class_view.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : rebuild_class_view.py\n@Desc : Rebuild class view info\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : rebuild_class_view.py\\n@Desc : Rebuild class view info\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_class_view.py:re"}, {"id": "metagpt/actions/rebuild_class_view.py:module:pathlib"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Path']"}, {"id": "metagpt/actions/rebuild_class_view.py:aiofiles"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Action']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.config"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['CONFIG']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.const"}, {"id": "{\"lineno\":16,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['AGGREGATION', 'COMPOSITION', 'DATA_API_DESIGN_FILE_REPO', 'GENERALIZATION', 'GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.logs"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['logger']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['RepoParser']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.schema"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"ClassAttribute\",\"ClassMethod\",\"ClassView\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['ClassAttribute', 'ClassMethod', 'ClassView']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['split_namespace']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['DiGraphRepository']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":31,\"end_lineno\":217,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildClassView\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ast.Constant:\n@Time : 2024/1/4\n@Author : mashenquan\n@File : rebuild_sequence_view.py\n@Desc : Rebuild sequence view info\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4\\n@Author : mashenquan\\n@File : rebuild_sequence_view.py\\n@Desc : Rebuild sequence view info\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:typing"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['List']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.actions"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['Action']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.config"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['CONFIG']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['DiGraphRepository']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['GraphKeyword']"}, {"id": "{\"lineno\":18,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildSequenceView\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_code.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\n value of the `Message` object.\n@Modified By: mashenquan, 2023-11-27.\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\n code-block formatting to enhance the understanding for the LLM.\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\n than passing them in when calling the run function.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\\n value of the `Message` object.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\\n code-block formatting to enhance the understanding for the LLM.\\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\\n than passing them in when calling the run function.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:json"}, {"id": "metagpt/actions/write_code.py:module:pydantic"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['Field']"}, {"id": "metagpt/actions/write_code.py:module:tenacity"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['Action']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.config"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CONFIG']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.const"}, {"id": "{\"lineno\":25,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_SUMMARIES_FILE_REPO\",\"DOCS_FILE_REPO\",\"TASK_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['BUGFIX_FILENAME', 'CODE_SUMMARIES_FILE_REPO', 'DOCS_FILE_REPO', 'TASK_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.logs"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['logger']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CodingContext', 'Document', 'RunCodeResult']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CodeParser']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['FileRepository']"}, {"id": "{\"lineno\":37,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":154,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py"}, {"id": "metagpt/actions/write_prd_an.py:main"}, {"id": "metagpt/actions/write_prd_an.py:LANGUAGE"}, {"id": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE"}, {"id": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS"}, {"id": "metagpt/actions/write_prd_an.py:PROJECT_NAME"}, {"id": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS"}, {"id": "metagpt/actions/write_prd_an.py:USER_STORIES"}, {"id": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART"}, {"id": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL"}, {"id": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT"}, {"id": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR"}, {"id": "metagpt/actions/write_prd_an.py:ISSUE_TYPE"}, {"id": "metagpt/actions/write_prd_an.py:IS_RELATIVE"}, {"id": "metagpt/actions/write_prd_an.py:REASON"}, {"id": "metagpt/actions/write_prd_an.py:NODES"}, {"id": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE"}, {"id": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE"}, {"id": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE"}, {"id": "metagpt/actions/write_prd_an.py:ast.Constant:\n@Time : 2023/12/14 11:40\n@Author : alexanderwu\n@File : write_prd_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 11:40\\n@Author : alexanderwu\\n@File : write_prd_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/actions/write_prd_an.py:names:['List']"}, {"id": "metagpt/actions/write_prd_an.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_prd_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/write_prd_an.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_prd_an.py:names:['logger']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAMMING_LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"ORIGINAL_REQUIREMENTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRODUCT_GOALS\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"USER_STORIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_QUADRANT_CHART\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_POOL\"],\"properties\":{}}"}, {"id": "{\"lineno\":107,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"UI_DESIGN_DRAFT\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":119,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":126,\"type_name\":\"ast.Assign\",\"tokens\":[\"ISSUE_TYPE\"],\"properties\":{}}"}, {"id": "{\"lineno\":128,\"end_lineno\":133,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_RELATIVE\"],\"properties\":{}}"}, {"id": "{\"lineno\":135,\"end_lineno\":137,\"type_name\":\"ast.Assign\",\"tokens\":[\"REASON\"],\"properties\":{}}"}, {"id": "{\"lineno\":140,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":155,\"end_lineno\":155,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_PRD_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":156,\"end_lineno\":156,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_ISSUE_TYPE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":157,\"end_lineno\":157,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_IS_RELATIVE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":160,\"end_lineno\":162,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py:__name__:__main__"}, {"id": "{\"lineno\":165,\"end_lineno\":166,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE"}, {"id": "metagpt/actions/summarize_code.py:ast.Constant:\n@Author : alexanderwu\n@File : summarize_code.py\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : summarize_code.py\\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/summarize_code.py:module:pathlib"}, {"id": "metagpt/actions/summarize_code.py:names:['Path']"}, {"id": "metagpt/actions/summarize_code.py:module:pydantic"}, {"id": "metagpt/actions/summarize_code.py:names:['Field']"}, {"id": "metagpt/actions/summarize_code.py:module:tenacity"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['Action']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.config"}, {"id": "metagpt/actions/summarize_code.py:names:['CONFIG']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.logs"}, {"id": "metagpt/actions/summarize_code.py:names:['logger']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['CodeSummarizeContext']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['FileRepository']"}, {"id": "{\"lineno\":20,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SummarizeCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__"}, {"id": "metagpt/actions/research.py:ConductResearch:__init__"}, {"id": "metagpt/actions/research.py:get_research_system_text"}, {"id": "metagpt/actions/research.py:LANG_PROMPT"}, {"id": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM"}, {"id": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM"}, {"id": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT"}, {"id": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT"}, {"id": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT"}, {"id": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT"}, {"id": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT"}, {"id": "metagpt/actions/research.py:module:__future__"}, {"id": "metagpt/actions/research.py:names:['annotations']"}, {"id": "metagpt/actions/research.py:asyncio"}, {"id": "metagpt/actions/research.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/actions/research.py:names:['Callable', 'Optional', 'Union']"}, {"id": "metagpt/actions/research.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"id": "metagpt/actions/research.py:names:['Field', 'parse_obj_as']"}, {"id": "metagpt/actions/research.py:module:metagpt.actions"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/research.py:names:['Action']"}, {"id": "metagpt/actions/research.py:module:metagpt.config"}, {"id": "metagpt/actions/research.py:names:['CONFIG']"}, {"id": "metagpt/actions/research.py:module:metagpt.llm"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/actions/research.py:names:['LLM']"}, {"id": "metagpt/actions/research.py:module:metagpt.logs"}, {"id": "metagpt/actions/research.py:names:['logger']"}, {"id": "metagpt/actions/research.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/actions/research.py:names:['BaseLLM']"}, {"id": "metagpt/actions/research.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/actions/research.py:names:['SearchEngine']"}, {"id": "metagpt/actions/research.py:module:metagpt.tools.web_browser_engine"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/actions/research.py:names:['WebBrowserEngine', 'WebBrowserEngineType']"}, {"id": "metagpt/actions/research.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/research.py:names:['OutputParser']"}, {"id": "metagpt/actions/research.py:module:metagpt.utils.text"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"id": "metagpt/actions/research.py:names:['generate_prompt_chunk', 'reduce_message_length']"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANG_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":22,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_BASE_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_TOPIC_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_TOPIC_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_SEARCH_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"COLLECT_AND_RANKURLS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"WEB_BROWSE_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":65,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONDUCT_RESEARCH_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":80,\"end_lineno\":173,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CollectLinks\"],\"properties\":{}}"}, {"id": "{\"lineno\":176,\"end_lineno\":244,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowseAndSummarize\"],\"properties\":{}}"}, {"id": "{\"lineno\":247,\"end_lineno\":278,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ConductResearch\"],\"properties\":{}}"}, {"id": "{\"lineno\":281,\"end_lineno\":291,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_research_system_text\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : skill_action.py\n@Desc : Call learned skill\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : skill_action.py\\n@Desc : Call learned skill\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:module:__future__"}, {"id": "metagpt/actions/skill_action.py:names:['annotations']"}, {"id": "metagpt/actions/skill_action.py:ast"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:importlib"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:traceback"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:module:copy"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['deepcopy']"}, {"id": "metagpt/actions/skill_action.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Dict', 'Optional']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.actions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Action']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.learn.skill_loader"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Skill']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.logs"}, {"id": "metagpt/actions/skill_action.py:names:['logger']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.schema"}, {"id": "metagpt/actions/skill_action.py:names:['Message']"}, {"id": "{\"lineno\":24,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ArgumentsParingAction\"],\"properties\":{}}"}, {"id": "{\"lineno\":81,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillAction\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_test.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_test.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : write_test.py\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\n WriteTest object, rather than passing them in when calling the run function.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : write_test.py\\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_test.py:module:typing"}, {"id": "metagpt/actions/write_test.py:names:['Optional']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/write_test.py:names:['Action']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.config"}, {"id": "metagpt/actions/write_test.py:names:['CONFIG']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['TEST_CODES_FILE_REPO']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_test.py:names:['logger']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['Document', 'TestingContext']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['CodeParser']"}, {"id": "{\"lineno\":20,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTest\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/debug_error.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : debug_error.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : debug_error.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:re"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['Field']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['Action']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.config"}, {"id": "metagpt/actions/debug_error.py:names:['CONFIG']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.const"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.logs"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['logger']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.schema"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['RunCodeContext', 'RunCodeResult']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['CodeParser']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['FileRepository']"}, {"id": "{\"lineno\":23,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":83,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugError\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_new_system_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_merge"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_update_system_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_pdf"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file"}, {"id": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/design_api.py:ast.Constant:\n@Time : 2023/5/11 19:26\n@Author : alexanderwu\n@File : design_api.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:26\\n@Author : alexanderwu\\n@File : design_api.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api.py:json"}, {"id": "metagpt/actions/design_api.py:module:pathlib"}, {"id": "metagpt/actions/design_api.py:names:['Path']"}, {"id": "metagpt/actions/design_api.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Optional']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.actions"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.actions.design_api_an"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DESIGN_API_NODE\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['DESIGN_API_NODE']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.config"}, {"id": "metagpt/actions/design_api.py:names:['CONFIG']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.const"}, {"id": "{\"lineno\":19,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"PRDS_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['DATA_API_DESIGN_FILE_REPO', 'PRDS_FILE_REPO', 'SEQ_FLOW_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'SYSTEM_DESIGN_PDF_FILE_REPO']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['logger']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.schema"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Document', 'Documents', 'Message']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['FileRepository']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['mermaid_to_file']"}, {"id": "{\"lineno\":31,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDesign\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py"}, {"id": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH"}, {"id": "metagpt/actions/design_api_an.py:PROJECT_NAME"}, {"id": "metagpt/actions/design_api_an.py:FILE_LIST"}, {"id": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES"}, {"id": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW"}, {"id": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR"}, {"id": "metagpt/actions/design_api_an.py:NODES"}, {"id": "metagpt/actions/design_api_an.py:DESIGN_API_NODE"}, {"id": "metagpt/actions/design_api_an.py:ast.Constant:\n@Time : 2023/12/12 22:24\n@Author : alexanderwu\n@File : design_api_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/12 22:24\\n@Author : alexanderwu\\n@File : design_api_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py:module:typing"}, {"id": "metagpt/actions/design_api_an.py:names:['List']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/design_api_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"id": "metagpt/actions/design_api_an.py:names:['MMC1', 'MMC2']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILE_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":64,\"end_lineno\":64,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESIGN_API_NODE\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_output.py:ActionOutput:__init__"}, {"id": "metagpt/actions/action_output.py:ast.Constant:\n@Time : 2023/7/11 10:03\n@Author : chengmaoyu\n@File : action_output\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/11 10:03\\n@Author : chengmaoyu\\n@File : action_output\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_output.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/actions/action_output.py:names:['BaseModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionOutput\"],\"properties\":{}}"}, {"id": "metagpt/actions/add_requirement.py:ast.Constant:\n@Time : 2023/5/20 17:46\n@Author : alexanderwu\n@File : add_requirement.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 17:46\\n@Author : alexanderwu\\n@File : add_requirement.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/add_requirement.py:module:metagpt.actions"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/add_requirement.py:names:['Action']"}, {"id": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserRequirement\"],\"properties\":{}}"}, {"id": "metagpt/actions/__init__.py"}, {"id": "metagpt/actions/__init__.py:ActionType"}, {"id": "metagpt/actions/__init__.py:__all__"}, {"id": "metagpt/actions/__init__.py:ast.Constant:\n@Time : 2023/5/11 17:44\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:44\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/__init__.py:module:enum"}, {"id": "metagpt/actions/__init__.py:names:['Enum']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['Action']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['ActionOutput']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.add_requirement"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['UserRequirement']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.debug_error"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['DebugError']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.design_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteDesign']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.design_api_review"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['DesignReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.project_management"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteTasks']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.research"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['CollectLinks', 'WebBrowseAndSummarize', 'ConductResearch']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.run_code"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['RunCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.search_and_summarize"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['SearchAndSummarize']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_code"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_code_review"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCodeReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePRD']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd_review"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePRDReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_test"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteTest']"}, {"id": "{\"lineno\":27,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionType\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_review.py:REVIEW"}, {"id": "metagpt/actions/write_review.py:LGTM"}, {"id": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE"}, {"id": "metagpt/actions/write_review.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_review.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/actions/write_review.py:names:['List']"}, {"id": "metagpt/actions/write_review.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_review.py:names:['Action']"}, {"id": "metagpt/actions/write_review.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/write_review.py:names:['ActionNode']"}, {"id": "{\"lineno\":12,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"id": "{\"lineno\":22,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_REVIEW_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/action.py:Action:_init_with_instruction"}, {"id": "metagpt/actions/action.py:Action:__str__"}, {"id": "metagpt/actions/action.py:Action:__repr__"}, {"id": "metagpt/actions/action.py:Action:_aask"}, {"id": "metagpt/actions/action.py:Action:_run_action_node"}, {"id": "metagpt/actions/action.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : action.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : action.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action.py:module:__future__"}, {"id": "metagpt/actions/action.py:names:['annotations']"}, {"id": "metagpt/actions/action.py:module:typing"}, {"id": "metagpt/actions/action.py:names:['Optional', 'Union']"}, {"id": "metagpt/actions/action.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/actions/action.py:names:['ConfigDict', 'Field', 'model_validator']"}, {"id": "metagpt/actions/action.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/action.py:names:['ActionNode']"}, {"id": "metagpt/actions/action.py:module:metagpt.llm"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/actions/action.py:names:['LLM']"}, {"id": "metagpt/actions/action.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/actions/action.py:names:['BaseLLM']"}, {"id": "metagpt/actions/action.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"id": "metagpt/actions/action.py:names:['CodeSummarizeContext', 'CodingContext', 'RunCodeContext', 'SerializationMixin', 'TestingContext']"}, {"id": "{\"lineno\":27,\"end_lineno\":80,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Action\"],\"properties\":{}}"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:run"}, {"id": "metagpt/actions/execute_task.py:ast.Constant:\n@Time : 2023/9/13 12:26\n@Author : femto Zheng\n@File : execute_task.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:26\\n@Author : femto Zheng\\n@File : execute_task.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/execute_task.py:module:metagpt.actions"}, {"id": "metagpt/actions/execute_task.py:names:['Action']"}, {"id": "metagpt/actions/execute_task.py:module:metagpt.schema"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/execute_task.py:names:['Message']"}, {"id": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteTask\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_run_new_requirement"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_is_relative"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_merge"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_update_prd"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_save_pdf"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix"}, {"id": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE"}, {"id": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/write_prd.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:module:__future__"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['annotations']"}, {"id": "metagpt/actions/write_prd.py:json"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:module:pathlib"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['Path']"}, {"id": "metagpt/actions/write_prd.py:module:typing"}, {"id": "metagpt/actions/write_prd.py:names:['Optional']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['ActionNode']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.fix_bug"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['FixBug']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.write_prd_an"}, {"id": "{\"lineno\":23,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"PROJECT_NAME\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['PROJECT_NAME', 'WP_IS_RELATIVE_NODE', 'WP_ISSUE_TYPE_NODE', 'WRITE_PRD_NODE']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.config"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['CONFIG']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.const"}, {"id": "{\"lineno\":30,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DOCS_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['BUGFIX_FILENAME', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'DOCS_FILE_REPO', 'PRD_PDF_FILE_REPO', 'PRDS_FILE_REPO', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.logs"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['logger']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.schema"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['BugFixContext', 'Document', 'Documents', 'Message']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['CodeParser']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['FileRepository']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['mermaid_to_file']"}, {"id": "{\"lineno\":44,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":64,\"end_lineno\":194,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRD\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:_simplify_python_code"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX"}, {"id": "metagpt/actions/write_docstring.py:_python_docstring_style"}, {"id": "metagpt/actions/write_docstring.py:ast.Constant:Code Docstring Generator.\n\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\ndocstrings for the given code and system text.\n\nUsage:\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\n\nArguments:\n filename The path to the Python file for which you want to generate docstrings.\n\nOptions:\n --overwrite If specified, overwrite the original file with the code containing docstrings.\n --style= Specify the style of the generated docstrings.\n Valid values: 'google', 'numpy', or 'sphinx'.\n Default: 'google'\n\nExample:\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\n\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\nthe specified docstring style and adds them to the code.\n"}, {"id": "{\"lineno\":1,\"end_lineno\":23,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"Code Docstring Generator.\\n\\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\\ndocstrings for the given code and system text.\\n\\nUsage:\\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\\n\\nArguments:\\n filename The path to the Python file for which you want to generate docstrings.\\n\\nOptions:\\n --overwrite If specified, overwrite the original file with the code containing docstrings.\\n --style= Specify the style of the generated docstrings.\\n Valid values: 'google', 'numpy', or 'sphinx'.\\n Default: 'google'\\n\\nExample:\\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\\n\\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\\nthe specified docstring style and adds them to the code.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:module:__future__"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['annotations']"}, {"id": "metagpt/actions/write_docstring.py:ast"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:module:pathlib"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Path']"}, {"id": "metagpt/actions/write_docstring.py:module:typing"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Literal', 'Optional']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Action']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['OutputParser', 'aread', 'awrite']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.utils.pycst"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['merge_docstring']"}, {"id": "{\"lineno\":34,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_GOOGLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":122,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_NUMPY\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_SPHINX\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"_python_docstring_style\"],\"properties\":{}}"}, {"id": "{\"lineno\":156,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDocstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":212,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_simplify_python_code\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:__name__:__main__"}, {"id": "{\"lineno\":215,\"end_lineno\":218,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/fix_bug.py:ast.Constant:\n@Time : 2023-12-12\n@Author : mashenquan\n@File : fix_bug.py\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023-12-12\\n@Author : mashenquan\\n@File : fix_bug.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/fix_bug.py:module:metagpt.actions"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/fix_bug.py:names:['Action']"}, {"id": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FixBug\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_interview.py:QUESTIONS"}, {"id": "metagpt/actions/prepare_interview.py:ast.Constant:\n@Time : 2023/9/19 15:02\n@Author : DevXiaolan\n@File : prepare_interview.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/19 15:02\\n@Author : DevXiaolan\\n@File : prepare_interview.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_interview.py:module:metagpt.actions"}, {"id": "metagpt/actions/prepare_interview.py:names:['Action']"}, {"id": "metagpt/actions/prepare_interview.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/prepare_interview.py:names:['ActionNode']"}, {"id": "{\"lineno\":11,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareInterview\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_dependencies"}, {"id": "metagpt/actions/run_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/run_code.py:CONTEXT"}, {"id": "metagpt/actions/run_code.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : run_code.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\n the understanding for the LLM.\n 2. Fix bug: Add the \"install dependency\" operation.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\n (code files, unit test files, log files) from using the message to using the file name.\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\n class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":17,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : run_code.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\\n the understanding for the LLM.\\n 2. Fix bug: Add the \\\"install dependency\\\" operation.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\\n (code files, unit test files, log files) from using the message to using the file name.\\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\\n class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:subprocess"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:module:typing"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Tuple']"}, {"id": "metagpt/actions/run_code.py:module:pydantic"}, {"id": "metagpt/actions/run_code.py:names:['Field']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/run_code.py:names:['Action']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.config"}, {"id": "metagpt/actions/run_code.py:names:['CONFIG']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.logs"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['logger']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['RunCodeContext', 'RunCodeResult']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['handle_exception']"}, {"id": "{\"lineno\":29,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":162,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:main"}, {"id": "metagpt/actions/write_code_an_draft.py:REVIEW"}, {"id": "metagpt/actions/write_code_an_draft.py:LGTM"}, {"id": "metagpt/actions/write_code_an_draft.py:ACTIONS"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_FUNCTION"}, {"id": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE"}, {"id": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3"}, {"id": "metagpt/actions/write_code_an_draft.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n"}, {"id": "metagpt/actions/write_code_an_draft.py:asyncio"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:module:typing"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['List']"}, {"id": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['Action']"}, {"id": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['ActionNode']"}, {"id": "{\"lineno\":13,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":64,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_DRAFT\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_FUNCTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":84,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":417,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":420,\"end_lineno\":490,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SMALLEST_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":493,\"end_lineno\":555,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":558,\"end_lineno\":558,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":559,\"end_lineno\":559,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":562,\"end_lineno\":574,\"type_name\":\"ast.Assign\",\"tokens\":[\"CR_FOR_MOVE_FUNCTION_BY_3\"],\"properties\":{}}"}, {"id": "{\"lineno\":577,\"end_lineno\":582,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeAN\"],\"properties\":{}}"}, {"id": "{\"lineno\":586,\"end_lineno\":587,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:__name__:__main__"}, {"id": "{\"lineno\":590,\"end_lineno\":591,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/talk_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : talk_action.py\n@Desc : Act as it\u2019s a talk\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : talk_action.py\\n@Desc : Act as it\u2019s a talk\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/talk_action.py:module:typing"}, {"id": "metagpt/actions/talk_action.py:names:['Optional']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.actions"}, {"id": "metagpt/actions/talk_action.py:names:['Action']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.config"}, {"id": "metagpt/actions/talk_action.py:names:['CONFIG']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_LANGUAGE\"]}}"}, {"id": "metagpt/actions/talk_action.py:names:['DEFAULT_LANGUAGE']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.logs"}, {"id": "metagpt/actions/talk_action.py:names:['logger']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.schema"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/talk_action.py:names:['Message']"}, {"id": "{\"lineno\":19,\"end_lineno\":91,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkAction\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":163,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkActionPrompt\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_tutorial.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_tutorial.py:module:typing"}, {"id": "metagpt/actions/write_tutorial.py:names:['Dict']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.actions"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['Action']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.prompts.tutorial_assistant"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['CONTENT_PROMPT', 'DIRECTORY_PROMPT']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['OutputParser']"}, {"id": "{\"lineno\":17,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDirectory\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteContent\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_review.py:module:typing"}, {"id": "metagpt/actions/write_prd_review.py:names:['Optional']"}, {"id": "metagpt/actions/write_prd_review.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_prd_review.py:names:['Action']"}, {"id": "{\"lineno\":14,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRDReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/generate_questions.py:QUESTIONS"}, {"id": "metagpt/actions/generate_questions.py:ast.Constant:\n@Time : 2023/9/12 17:45\n@Author : fisherdeng\n@File : generate_questions.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/12 17:45\\n@Author : fisherdeng\\n@File : generate_questions.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/generate_questions.py:module:metagpt.actions"}, {"id": "metagpt/actions/generate_questions.py:names:['Action']"}, {"id": "metagpt/actions/generate_questions.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/generate_questions.py:names:['ActionNode']"}, {"id": "{\"lineno\":11,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":27,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateQuestions\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo"}, {"id": "metagpt/actions/prepare_documents.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : prepare_documents.py\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\n RFC 135 2.2.3.5.1.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : prepare_documents.py\\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\\n RFC 135 2.2.3.5.1.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:shutil"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:module:pathlib"}, {"id": "metagpt/actions/prepare_documents.py:names:['Path']"}, {"id": "metagpt/actions/prepare_documents.py:module:typing"}, {"id": "metagpt/actions/prepare_documents.py:names:['Optional']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.config"}, {"id": "metagpt/actions/prepare_documents.py:names:['CONFIG']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.const"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DOCS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['DOCS_FILE_REPO', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['Document']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.file_repository"}, {"id": "metagpt/actions/prepare_documents.py:names:['FileRepository']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['GitRepository']"}, {"id": "{\"lineno\":22,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareDocuments\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD"}, {"id": "metagpt/actions/search_and_summarize.py:ast.Constant:\n@Time : 2023/5/23 17:26\n@Author : alexanderwu\n@File : search_google.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:26\\n@Author : alexanderwu\\n@File : search_google.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Any', 'Optional']"}, {"id": "metagpt/actions/search_and_summarize.py:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"pydantic\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Field', 'model_validator']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Action']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.config"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['CONFIG', 'Config']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.logs"}, {"id": "metagpt/actions/search_and_summarize.py:names:['logger']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.schema"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Message']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.tools"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['SearchEngineType']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['SearchEngine']"}, {"id": "{\"lineno\":20,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM_EN_US\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_FOOD\"],\"properties\":{}}"}, {"id": "{\"lineno\":107,\"end_lineno\":158,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchAndSummarize\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION"}, {"id": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE"}, {"id": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE"}, {"id": "metagpt/actions/write_code_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code_review.py\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\n WriteCode object, rather than passing them in when calling the run function.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code_review.py\\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\\n WriteCode object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_review.py:module:pydantic"}, {"id": "metagpt/actions/write_code_review.py:names:['Field']"}, {"id": "metagpt/actions/write_code_review.py:module:tenacity"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['WriteCode']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/write_code_review.py:names:['Action']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.config"}, {"id": "metagpt/actions/write_code_review.py:names:['CONFIG']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_code_review.py:names:['logger']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CodingContext']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CodeParser']"}, {"id": "{\"lineno\":21,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_AND_INSTRUCTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":176,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__"}, {"id": "metagpt/actions/write_teaching_plan.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : write_teaching_plan.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : write_teaching_plan.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_teaching_plan.py:module:typing"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Optional']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Action']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.config"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['CONFIG']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['logger']"}, {"id": "{\"lineno\":15,\"end_lineno\":86,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTeachingPlanPart\"],\"properties\":{}}"}, {"id": "{\"lineno\":89,\"end_lineno\":188,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TeachingPlanBlock\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py"}, {"id": "metagpt/actions/project_management_an.py:main"}, {"id": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES"}, {"id": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES"}, {"id": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS"}, {"id": "metagpt/actions/project_management_an.py:TASK_LIST"}, {"id": "metagpt/actions/project_management_an.py:FULL_API_SPEC"}, {"id": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE"}, {"id": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM"}, {"id": "metagpt/actions/project_management_an.py:NODES"}, {"id": "metagpt/actions/project_management_an.py:PM_NODE"}, {"id": "metagpt/actions/project_management_an.py:ast.Constant:\n@Time : 2023/12/14 15:28\n@Author : alexanderwu\n@File : project_management_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 15:28\\n@Author : alexanderwu\\n@File : project_management_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py:module:typing"}, {"id": "metagpt/actions/project_management_an.py:names:['List']"}, {"id": "metagpt/actions/project_management_an.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/project_management_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/project_management_an.py:module:metagpt.logs"}, {"id": "metagpt/actions/project_management_an.py:names:['logger']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_PYTHON_PACKAGES\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_OTHER_LANGUAGE_PACKAGES\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"FULL_API_SPEC\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR_PM\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"PM_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":81,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py:__name__:__main__"}, {"id": "{\"lineno\":86,\"end_lineno\":87,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_update_tasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_merge"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_update_requirements"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_save_pdf"}, {"id": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/project_management.py:ast.Constant:\n@Time : 2023/5/11 19:12\n@Author : alexanderwu\n@File : project_management.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:12\\n@Author : alexanderwu\\n@File : project_management.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:json"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:module:typing"}, {"id": "metagpt/actions/project_management.py:names:['Optional']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['ActionOutput']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['Action']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['PM_NODE']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.config"}, {"id": "metagpt/actions/project_management.py:names:['CONFIG']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.const"}, {"id": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['PACKAGE_REQUIREMENTS_FILENAME', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO', 'TASK_PDF_FILE_REPO']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.logs"}, {"id": "metagpt/actions/project_management.py:names:['logger']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.schema"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['Document', 'Documents']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.utils.file_repository"}, {"id": "metagpt/actions/project_management.py:names:['FileRepository']"}, {"id": "{\"lineno\":30,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTasks\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:ActionNode:__init__"}, {"id": "metagpt/actions/action_node.py:ActionNode:__str__"}, {"id": "metagpt/actions/action_node.py:ActionNode:__repr__"}, {"id": "metagpt/actions/action_node.py:ActionNode:_compile_f"}, {"id": "metagpt/actions/action_node.py:ActionNode:_aask_v1"}, {"id": "metagpt/actions/action_node.py:dict_to_markdown"}, {"id": "metagpt/actions/action_node.py:TAG"}, {"id": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT"}, {"id": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT"}, {"id": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:ast.Constant:\n@Time : 2023/12/11 18:45\n@Author : alexanderwu\n@File : action_node.py\n\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/11 18:45\\n@Author : alexanderwu\\n@File : action_node.py\\n\\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:json"}, {"id": "metagpt/actions/action_node.py:module:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['Any', 'Dict', 'List', 'Optional', 'Tuple', 'Type']"}, {"id": "metagpt/actions/action_node.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"create_model\",\"model_validator\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['BaseModel', 'create_model', 'model_validator']"}, {"id": "metagpt/actions/action_node.py:module:tenacity"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.config"}, {"id": "metagpt/actions/action_node.py:names:['CONFIG']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.llm"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['BaseLLM']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.logs"}, {"id": "metagpt/actions/action_node.py:names:['logger']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.provider.postprocess.llm_output_postprocess"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['llm_output_postprocess']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['OutputParser', 'general_after_log']"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"TAG\"],\"properties\":{}}"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE_CONSTRAINT\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_CONSTRAINT\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"SIMPLE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":53,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"dict_to_markdown\"],\"properties\":{}}"}, {"id": "{\"lineno\":56,\"end_lineno\":349,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionNode\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_review.py:ast.Constant:\n@Time : 2023/5/11 19:31\n@Author : alexanderwu\n@File : design_api_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:31\\n@Author : alexanderwu\\n@File : design_api_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_review.py:module:typing"}, {"id": "metagpt/actions/design_api_review.py:names:['Optional']"}, {"id": "metagpt/actions/design_api_review.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/design_api_review.py:names:['Action']"}, {"id": "{\"lineno\":14,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DesignReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr"}, {"id": "metagpt/actions/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 18:10:20\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Actions of the invoice ocr assistant.\n"}, {"id": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 18:10:20\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Actions of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:os"}, {"id": "metagpt/actions/invoice_ocr.py:zipfile"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"zipfile\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:module:datetime"}, {"id": "metagpt/actions/invoice_ocr.py:names:['datetime']"}, {"id": "metagpt/actions/invoice_ocr.py:module:pathlib"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Path']"}, {"id": "metagpt/actions/invoice_ocr.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Optional']"}, {"id": "metagpt/actions/invoice_ocr.py:pandas as pd"}, {"id": "metagpt/actions/invoice_ocr.py:module:paddleocr"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['PaddleOCR']"}, {"id": "metagpt/actions/invoice_ocr.py:module:pydantic"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Field']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.actions"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Action']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.const"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['INVOICE_OCR_TABLE_PATH']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.llm"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['LLM']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.logs"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['logger']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.prompts.invoice_ocr"}, {"id": "{\"lineno\":25,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['EXTRACT_OCR_MAIN_INFO_PROMPT', 'REPLY_OCR_QUESTION_PROMPT']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/actions/invoice_ocr.py:names:['BaseLLM']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['OutputParser']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.file"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['File']"}, {"id": "{\"lineno\":34,\"end_lineno\":120,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCR\"],\"properties\":{}}"}, {"id": "{\"lineno\":123,\"end_lineno\":165,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateTable\"],\"properties\":{}}"}, {"id": "{\"lineno\":168,\"end_lineno\":194,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyQuestion\"],\"properties\":{}}"}, {"id": "metagpt/prompts/sales.py"}, {"id": "metagpt/prompts/sales.py:SALES_ASSISTANT"}, {"id": "metagpt/prompts/sales.py:SALES"}, {"id": "metagpt/prompts/sales.py:conversation_stages"}, {"id": "metagpt/prompts/sales.py:ast.Constant:\n@Time : 2023/5/8 15:29\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 15:29\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES_ASSISTANT\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"conversation_stages\"],\"properties\":{}}"}, {"id": "metagpt/prompts/__init__.py"}, {"id": "metagpt/prompts/__init__.py:ast.Constant:\n@Time : 2023/5/30 09:51\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/30 09:51\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/prompts/summarize.py"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5"}, {"id": "metagpt/prompts/summarize.py:ast.Constant:\n@Time : 2023/6/19 23:07\n@Author : alexanderwu\n@File : summarize.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/19 23:07\\n@Author : alexanderwu\\n@File : summarize.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_2\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_3\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_4\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_5\"],\"properties\":{}}"}, {"id": "metagpt/prompts/metagpt_sample.py"}, {"id": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE"}, {"id": "metagpt/prompts/metagpt_sample.py:ast.Constant:\n@Time : 2023/6/7 20:29\n@Author : alexanderwu\n@File : metagpt_sample.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/7 20:29\\n@Author : alexanderwu\\n@File : metagpt_sample.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_SAMPLE\"],\"properties\":{}}"}, {"id": "metagpt/prompts/tutorial_assistant.py"}, {"id": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Tutorial Assistant's prompt templates.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Tutorial Assistant's prompt templates.\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":15,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"DIRECTORY_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTENT_PROMPT\"],\"properties\":{}}"}, {"id": "metagpt/prompts/invoice_ocr.py"}, {"id": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS"}, {"id": "metagpt/prompts/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 16:30:25\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Prompts of the invoice ocr assistant.\n"}, {"id": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 16:30:25\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Prompts of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":13,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"REPLY_OCR_QUESTION_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_SUCCESS\"],\"properties\":{}}"}, {"id": "metagpt/strategy/tot_schema.py:module:enum"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/strategy/tot_schema.py:names:['Enum']"}, {"id": "metagpt/strategy/tot_schema.py:module:pydantic"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/strategy/tot_schema.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/strategy/tot_schema.py:module:metagpt.strategy.base"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"id": "metagpt/strategy/tot_schema.py:names:['BaseEvaluator', 'BaseParser']"}, {"id": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MethodSelect\"],\"properties\":{}}"}, {"id": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Strategy\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverConfig\"],\"properties\":{}}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:solve"}, {"id": "metagpt/strategy/tot.py:BFSSolver:_bfs_build"}, {"id": "metagpt/strategy/tot.py:DFSSolver:_dfs"}, {"id": "metagpt/strategy/tot.py:MCTSSolver:solve"}, {"id": "metagpt/strategy/tot.py:TreeofThought:__init__"}, {"id": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver"}, {"id": "metagpt/strategy/tot.py:OUTPUT_FORMAT"}, {"id": "metagpt/strategy/tot.py:module:__future__"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['annotations']"}, {"id": "metagpt/strategy/tot.py:asyncio"}, {"id": "metagpt/strategy/tot.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['Any', 'List', 'Optional']"}, {"id": "metagpt/strategy/tot.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.llm"}, {"id": "metagpt/strategy/tot.py:names:['LLM']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.logs"}, {"id": "metagpt/strategy/tot.py:names:['logger']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/strategy/tot.py:names:['BaseLLM']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.strategy.base"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['ThoughtNode', 'ThoughtTree']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.strategy.tot_schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['MethodSelect', 'Strategy', 'ThoughtSolverConfig']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['CodeParser']"}, {"id": "{\"lineno\":19,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"OUTPUT_FORMAT\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverBase\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BFSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DFSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":230,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MCTSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":235,\"end_lineno\":277,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeofThought\"],\"properties\":{}}"}, {"id": "metagpt/strategy/__init__.py"}, {"id": "metagpt/strategy/base.py:BaseParser:__call__"}, {"id": "metagpt/strategy/base.py:BaseParser:propose"}, {"id": "metagpt/strategy/base.py:BaseParser:sample"}, {"id": "metagpt/strategy/base.py:BaseParser:value"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:__call__"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:status_verify"}, {"id": "metagpt/strategy/base.py:module:abc"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/strategy/base.py:names:['ABC']"}, {"id": "metagpt/strategy/base.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/strategy/base.py:names:['List']"}, {"id": "metagpt/strategy/base.py:module:anytree"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"id": "metagpt/strategy/base.py:names:['Node', 'RenderTree']"}, {"id": "metagpt/strategy/base.py:module:pydantic"}, {"id": "metagpt/strategy/base.py:names:['BaseModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseEvaluator\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtTree\"],\"properties\":{}}"}, {"id": "{\"name\":\"AIMessage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"APIRequestor\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"AZURE_AD, OPEN_AI \",\"default_value\":\"\"},{\"name\":\"api_version\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"base_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"arequest\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"files\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[True]\",\"default_value\":\"\"},{\"name\":\"request_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"request_timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[Union[float, Tuple[float, float]]]\",\"default_value\":\"\"}],\"return_type\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\"},{\"name\":\"arequest_raw\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"aiohttp.ClientResponse\"},{\"name\":\"request\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"files\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[True]\",\"default_value\":\"\"},{\"name\":\"request_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"request_timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[Union[float, Tuple[float, float]]]\",\"default_value\":\"\"}],\"return_type\":\"Tuple[Iterator[OpenAIResponse], bool, str]\"},{\"name\":\"request_headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"extra\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, str]\"},{\"name\":\"request_raw\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"requests.Response\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"request\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"arequest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_validate_headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_prepare_request_raw\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_async_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_response_line\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Action\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, str, None] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"set_name_if_empty\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"values\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_init_with_instruction\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_aask\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_action_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ActionNode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"children\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[str, ActionNode] \",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expected_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Type \",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"BaseModel \",\"default_value\":\"\"},{\"name\":\"instruction\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add_child\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"ActionNode\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_children\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ActionNode]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"compile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"template\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"compile_example\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"compile_instruction\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"compile_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"i\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"kv_sep\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"create_children_class\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"create_model_class\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"class_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Dict[str, Tuple[Type, Any]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"fill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strgy\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"from_children\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ActionNode]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_children_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, Tuple[Type, Any]]\"},{\"name\":\"get_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, Tuple[Type, Any]]\"},{\"name\":\"get_self_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Dict[str, Tuple[Type, Any]]\"},{\"name\":\"set_context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_recursive\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"simple_fill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"tagging\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"to_dict\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"format_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_compile_f\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_aask_v1\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ActionOutput\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"BaseModel \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ActionType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ApiType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"from_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"label\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Architect\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ArgumentsParingAction\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Dict] \",\"default_value\":\"\"},{\"name\":\"ask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Message] \",\"default_value\":\"\"},{\"name\":\"skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"parse_arguments\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"txt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Message\"}]}"}, {"id": "{\"name\":\"Assistant\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"skills\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[SkillsDeclaration] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"act\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"get_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"load_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"m\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"refine_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"skill_handler\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"talk\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"talk_handler\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"think\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"bool\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_plan\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"AsyncSSEClient\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"async_events\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_aread\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"AudioData\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"audio\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"ced\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AzureOpenAILLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"aclient\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"AsyncAzureOpenAI \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"_init_client\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_make_client_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"AzureTTS\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"region\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"subscription_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"role_style_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"role_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"style_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"synthesize_speech\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"voice\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"output_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"BEAGECTemplate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"gen\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"BFSSolver\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"thought_tree\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"generate_and_evaluate_nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"current_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_bfs_build\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"BaseContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"loads\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Optional[T]\"}]}"}, {"id": "{\"name\":\"BaseEvaluator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"status_verify\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__call__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"status_verify\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"BaseLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"aask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"system_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[list[str]]\",\"default_value\":\"\"},{\"name\":\"format_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[list[dict[str, str]]]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"aask_batch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"aask_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"acompletion\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"acompletion_text\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_choice_function\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"get_choice_function_arguments\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"_user_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_assistant_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_system_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_system_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_default_system_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_extract_assistant_rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"BaseParser\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"propose\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"current_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"sample\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"current_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"value\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"input\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__call__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"propose\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"BasePostProcessPlugin\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"req_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Union[dict, list]\"},{\"name\":\"run_extract_content_from_output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"right_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"run_repair_llm_output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"req_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Union[dict, list]\"},{\"name\":\"run_repair_llm_raw_output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"req_keys\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"repair_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"run_retry_parse_json_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Union[dict, list]\"}]}"}, {"id": "{\"name\":\"BaseStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"add\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"BrainMemory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"cacheable\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"historical_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"history\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Message] \",\"default_value\":\"\"},{\"name\":\"is_dirty\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"knowledge\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Message] \",\"default_value\":\"\"},{\"name\":\"last_history_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"last_talk\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"history_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_history_available\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add_answer\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_history\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_talk\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"dumps\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"redis_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"timeout_sec\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"exists\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"extract_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"input_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pattern\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_knowledge\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"get_title\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_words\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"is_related\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text1\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text2\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"loads\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"redis_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"BrainMemory\"},{\"name\":\"pop_last_talk\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"rewrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"sentence\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_history_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"history_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"redis_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"redis_conf\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"split_texts\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"window_size\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"List[str]\"},{\"name\":\"summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_words\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"keep_language\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"limit\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"to_int\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"v\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"default_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"to_metagpt_history_format\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"history\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"to_redis_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"user_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"chat_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_openai_summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_metagpt_summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_metagpt_is_related\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_openai_is_related\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_metagpt_rewrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_openai_rewrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"BugFixContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ChangeType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ChromaStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"FastAPI, LocalAPI \",\"default_value\":\"\"},{\"name\":\"collection\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Collection \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"document\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadata\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"n_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadata_filter\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"document_filter\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadatas\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ids\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ClassAttribute\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"default_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"value_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_mermaid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"align\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"ClassInfo\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"attributes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict[str, str] \",\"default_value\":\"\"},{\"name\":\"methods\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict[str, str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"package\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ClassMeta\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"abstraction\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"static\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"visibility\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ClassMethod\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[ClassAttribute] \",\"default_value\":\"\"},{\"name\":\"return_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_mermaid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"align\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"ClassRelationship\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"dest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"label\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"relationship\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"src\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ClassView\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"attributes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[ClassAttribute] \",\"default_value\":\"\"},{\"name\":\"methods\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[ClassMethod] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_mermaid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"align\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"Claude2\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"aask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"ask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"CodeBlockInfo\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"end_lineno\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"lineno\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"properties\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict \",\"default_value\":\"\"},{\"name\":\"tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"},{\"name\":\"type_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeParser\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"parse_block\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"block\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"parse_blocks\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"parse_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"block\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"parse_file_list\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"block\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[str]\"},{\"name\":\"parse_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"block\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"CodeSummarizeContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"codes_filenames\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[str] \",\"default_value\":\"\"},{\"name\":\"design_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"reason\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"task_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"loads\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filenames\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List\",\"default_value\":\"\"}],\"return_type\":\"CodeSummarizeContext\"},{\"name\":\"__hash__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"CodingContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"code_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Document] \",\"default_value\":\"\"},{\"name\":\"design_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Document] \",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"task_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Document] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CollectLinks\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rank_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[list[str]], None]] \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"decomposition_nums\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"url_per_query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| None\",\"default_value\":\"\"}],\"return_type\":\"dict[str, list[str]]\"},{\"name\":\"_search_and_rank_urls\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Components\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ConductResearch\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Config\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"anthropic_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"calc_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"claude_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_review_k_times\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"default_yaml_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"deployment_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"domain\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"fireworks_api_base\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"fireworks_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"fireworks_api_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"gemini_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_reinit\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"global_proxy\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"google_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"google_cse_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"home_yaml_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"inc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"key_yaml_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"long_term_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"max_tokens_rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mmdc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_for_researcher_report\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_for_researcher_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ollama_api_base\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ollama_api_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"open_llm_api_base\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"open_llm_api_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_rpm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_version\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_base_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_proxy\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"playwright_browser_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"project_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pyppeteer_executable_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repair_llm_output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"selenium_browser_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"serpapi_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"serper_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workspace_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"},{\"name\":\"zhipuai_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"options\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_default_llm_provider_enum\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"LLMProviderEnum\"},{\"name\":\"get_model_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"provider\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"new_environ\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"set_context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"options\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_via_cli\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"project_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"inc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_is_valid_llm_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_ensure_workspace_exists\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_with_config_files_and_env\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__setattr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__getattr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"CostManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"max_budget\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_budget\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"total_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Costs\"},{\"name\":\"get_total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get_total_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get_total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"total_budget\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"total_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CustomDecoder\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"parse_object\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parse_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"scan_once\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"decode\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"s\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"_w\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"CustomerService\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DDGAPIWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"ddgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"DDGS \",\"default_value\":\"\"},{\"name\":\"executor\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[True]\",\"default_value\":\"\"},{\"name\":\"focus\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str] \\\\| None\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_search_from_ddgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"DFSSolver\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"thought_tree\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_dfs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"DataSource\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"DebugError\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"DependencyFile\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"exists\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Set[Path \\\\| str]\",\"default_value\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"DesignReview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prd\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_design\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"DiGraphRepository\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"pathname\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"root\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"insert\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"json\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"pathname\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"load_from\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"pathname\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"}],\"return_type\":\"GraphRepository\"},{\"name\":\"save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"select\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"List[SPO]\"},{\"name\":\"update\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"upsert\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"upsert\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"DocstringCollector\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"docstrings\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[tuple[str, ...], cst.SimpleStatementLine] \",\"default_value\":\"\"},{\"name\":\"stack\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"leave_ClassDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"leave_FunctionDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"leave_Module\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.Module\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"visit_ClassDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"visit_FunctionDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"visit_Module\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.Module\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_leave\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"DocstringTransformer\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"docstrings\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[tuple[str, ...], cst.SimpleStatementLine] \",\"default_value\":\"\"},{\"name\":\"stack\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"leave_ClassDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"original_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"},{\"name\":\"updated_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"}],\"return_type\":\"cst.CSTNode\"},{\"name\":\"leave_FunctionDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"original_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"},{\"name\":\"updated_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"}],\"return_type\":\"cst.CSTNode\"},{\"name\":\"leave_Module\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"original_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Module\",\"default_value\":\"\"},{\"name\":\"updated_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Module\",\"default_value\":\"\"}],\"return_type\":\"Module\"},{\"name\":\"visit_ClassDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"visit_FunctionDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"visit_Module\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.Module\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_leave\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Document\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"author\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"},{\"name\":\"reviews\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"},{\"name\":\"status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"from_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"from_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"to_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Document\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"root_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"full_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"root_relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get_meta\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Document\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"DocumentStatus\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"docs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict[str, Document] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[float] \",\"default_value\":\"\"},{\"name\":\"index\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"object\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Engineer\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"code_todos\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"},{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"n_borg\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"next_todo_action\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"summarize_todos\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"},{\"name\":\"use_code_review\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"todo\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_tasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_sp_with_cr\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_write_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_is_pass\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_new_coding_context\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_new_coding_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_new_code_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_new_summarize_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"EnronTemplate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"gen\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subj\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Entity\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"skills\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Skill] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Environment\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"history\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"members\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Role, Set] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[str, SerializeAsAny[Role]] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"is_idle\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add_role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Role\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Iterable[Role]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"archive\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"auto_archive\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"deserialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"Environment\"},{\"name\":\"get_role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Role\"},{\"name\":\"get_roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict[str, Role]\"},{\"name\":\"get_subscription\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"obj\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"init_roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"publish_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"},{\"name\":\"peekable\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"role_names\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"list[str]\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"serialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_subscription\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"obj\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tags\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"answer\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"ask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ExecuteTask\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[Message] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"FaissStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings \",\"default_value\":\"\"},{\"name\":\"meta_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"texts\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"return_type\":\"list[str]\"},{\"name\":\"asearch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expand_cols\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sep\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_load\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_write\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"File\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"CHUNK_SIZE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"read\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"file_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"chunk_size\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"bytes\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"root_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bytes\",\"default_value\":\"\"}],\"return_type\":\"Path\"}]}"}, {"id": "{\"name\":\"FileRepository\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"all_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"changed_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"root_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"workdir\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"Document \\\\| None\"},{\"name\":\"get_all\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"List[Document]\"},{\"name\":\"get_all_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"List[Document]\"},{\"name\":\"get_change_dir_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"dir\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"List\"},{\"name\":\"get_changed_dependency\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"Set[str]\"},{\"name\":\"get_dependency\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"Set[str]\"},{\"name\":\"get_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"Document \\\\| None\"},{\"name\":\"new_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"save_as\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Document\",\"default_value\":\"\"},{\"name\":\"with_suffix\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"save_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Document\",\"default_value\":\"\"},{\"name\":\"with_suffix\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"save_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"FireworksCostManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"total_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"model_grade_token_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict[str, float]\"},{\"name\":\"update_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"FireworksLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_azure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rpm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Costs\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_fireworks\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_make_client_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"FixBug\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GPTPromptGenerator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"gen\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Union[list[str], str]\"},{\"name\":\"gen_chatbot_style\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"gen_instruction_style\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"gen_query_style\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"GeminiGenerativeModel\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"count_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"contents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"content_types.ContentsType\",\"default_value\":\"\"}],\"return_type\":\"glm.CountTokensResponse\"},{\"name\":\"count_tokens_async\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"contents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"content_types.ContentsType\",\"default_value\":\"\"}],\"return_type\":\"glm.CountTokensResponse\"}]}"}, {"id": "{\"name\":\"GeminiLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"aget_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"resp_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"return_type\":\"GenerateContentResponse\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"resp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"GenerateContentResponse\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"resp_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_gemini\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_user_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_assistant_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_const_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"GeneralAPIRequestor\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"_interpret_response_line\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_async_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"GenerateQuestions\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"GenerateTable\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ocr_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict[str, str]\"}]}"}, {"id": "{\"name\":\"GetMessageFromWeb\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"domain\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ret\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"gen_params\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"on_close\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"one\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"two\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"on_error\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"error\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"on_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"on_open\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"send\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"on_close\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"GitRepository\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"changed_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_valid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"workdir\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add_change\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"files\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"archive\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"comments\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"commit\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"comments\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete_repository\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"filter_gitignore\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filenames\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"List[str]\"},{\"name\":\"get_dependency\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"DependencyFile\"},{\"name\":\"get_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"filter_ignored\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"List\"},{\"name\":\"is_git_dir\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"local_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"new_file_repository\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"FileRepository\"},{\"name\":\"open\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"local_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"auto_init\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"rename_root\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"new_dir_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"GoogleAPIWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"executor\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor] \",\"default_value\":\"\"},{\"name\":\"google_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"google_cse_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"loop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"google_api_client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"check_google_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"check_google_cse_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"focus\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str] \\\\| None\",\"default_value\":\"\"}],\"return_type\":\"str \\\\| list[dict]\"}]}"}, {"id": "{\"name\":\"GraphKeyword\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"CLASS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"CLASS_FUNCTION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"CLASS_PROPERTY\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"FUNCTION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"GLOBAL_VARIABLE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_ARGS_DESC\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_CLASS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_FUNCTION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_PROPERTY\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_VIEW\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_FUNCTION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_PAGE_INFO\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_TYPE_DESC\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"IS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"NULL\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"OF\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"ON\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"SOURCE_CODE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GraphRepository\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"insert\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"select\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"List[SPO]\"},{\"name\":\"update\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_graph_db_with_class_relationship_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"graph_db\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"GraphRepository\",\"default_value\":\"\"},{\"name\":\"relationship_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ClassRelationship]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_graph_db_with_class_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"graph_db\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"GraphRepository\",\"default_value\":\"\"},{\"name\":\"class_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ClassInfo]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_graph_db_with_file_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"graph_db\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"GraphRepository\",\"default_value\":\"\"},{\"name\":\"file_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"RepoFileInfo\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"upsert\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"insert\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"upsert\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"select\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"HumanProvider\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"aask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"system_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[list[str]]\",\"default_value\":\"\"},{\"name\":\"format_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[list[dict[str, str]]]\",\"default_value\":\"\"},{\"name\":\"generator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"ask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"IFlyTekTTS\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"app_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"synthesize_speech\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"output_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"voice\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_create_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"IFlyTekTTSResponse\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[AudioData] \",\"default_value\":\"\"},{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"sid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTSStatus\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IndexableDocument\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Union[pd.DataFrame, list] \",\"default_value\":\"\"},{\"name\":\"meta_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"from_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"content_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_docs_and_metadatas\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Tuple[list, list]\"},{\"name\":\"_get_docs_and_metadatas_by_df\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_docs_and_metadatas_by_langchain\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"InvoiceData\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"invoice_data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[dict] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceOCR\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"file_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"list\"},{\"name\":\"_check_file_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_unzip\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_ocr\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"InvoiceOCRAssistant\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"orc_data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[list] \",\"default_value\":\"\"},{\"name\":\"origin_query\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"InvoicePath\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"file_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMProviderEnum\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__missing__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"LLMProviderRegistry\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"providers\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_provider\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"enum\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"LLMProviderEnum\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"register\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"provider_cls\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"LanceStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"db\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"LanceDBConnection, RemoteDBConnection \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"table\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"LanceTable, NoneType, RemoteTable \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadata\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"drop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"n_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metric\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"nprobes\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadatas\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ids\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"LocalStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"cache_dir\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Path] \",\"default_value\":\"\"},{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"fname\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"raw_data_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_index_and_store_fname\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_load\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_write\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"LongTermMemory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"memory_storage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_from_recover\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"rc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[RoleContext] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"clear\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"find_news\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"observed\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"recover_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"RoleContext\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"MCTSSolver\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"solve\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"MeilisearchEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Client \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add_documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data_source\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"DataSource\",\"default_value\":\"\"},{\"name\":\"documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[dict]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_index\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"index\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"ignore_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"index\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"DefaultDict[str, list[SerializeAsAny[Message]]] \",\"default_value\":\"\"},{\"name\":\"storage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Message]] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_batch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Iterable[Message]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"clear\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"count\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"int\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete_newest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"deserialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"Memory\"},{\"name\":\"find_news\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"observed\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get_by_action\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"action\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get_by_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Set\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get_by_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get_by_role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"serialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"try_remember\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"keyword\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"}]}"}, {"id": "{\"name\":\"MemoryStorage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings \",\"default_value\":\"\"},{\"name\":\"mem_ttl\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"role_mem_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str], Path \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"NoneType, Optional[FAISS] \",\"default_value\":\"\"},{\"name\":\"threshold\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"is_initialized\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"clean\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"recover_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"search_dissimilar\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"},{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_load\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_index_and_store_fname\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"cause_by\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[BaseModel] \",\"default_value\":\"\"},{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"set[str] \",\"default_value\":\"\"},{\"name\":\"sent_from\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"check_cause_by\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"cause_by\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Any\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"check_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"check_instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Any\",\"default_value\":\"\"}],\"return_type\":\"BaseModel\"},{\"name\":\"check_send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Any\",\"default_value\":\"\"}],\"return_type\":\"set\"},{\"name\":\"check_sent_from\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"sent_from\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Any\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"dump\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"ser_instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"BaseModel\",\"default_value\":\"\"}],\"return_type\":\"Union[str, None]\"},{\"name\":\"to_dict\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__setattr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"MessageQueue\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"dump\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"empty\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"MessageQueue\"},{\"name\":\"pop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message \\\\| None\"},{\"name\":\"pop_all\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"List[Message]\"},{\"name\":\"push\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"MessageType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MetaGPTLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"MetaGPTText2Image\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"model_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"text_2_image\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"size_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"MethodSelect\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Moderation\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"amoderation\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[str, list[str]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"amoderation_with_categories\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[str, list[str]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"handle_moderation_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"NoMoneyException\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"amount\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"NotConfiguredException\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OCRResults\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"ocr_result\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OllamaCostManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"update_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OllamaLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"http_method\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"suffix_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"resp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"resp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_ollama\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_const_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_decode_and_load\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OpenAILLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"aclient\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"AsyncOpenAI \",\"default_value\":\"\"},{\"name\":\"auto_max_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"aask_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[str, Message, list[dict]]\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"ChatCompletion\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"amoderation\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[str, list[str]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_choice_function_arguments\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"ChatCompletion\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"ChatCompletion\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Costs\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_openai\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_client\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_make_client_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_proxy_params\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_cons_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_func_configs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_function\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_process_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_calc_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_max_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OpenAIResponse\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"operation_location\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"organization\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"request_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"response_ms\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"retry_after\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OpenAIText2Embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"openai_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"text_2_embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OpenAIText2Image\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"get_image_data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"text_2_image\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"size_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OpenLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_azure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rpm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Costs\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_openllm\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_make_client_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_calc_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OpenLLMCostManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"update_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"OutputParser\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"extract_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"extract_struct\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"data_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[type(list), type(dict)]\",\"default_value\":\"\"}],\"return_type\":\"Union[list, dict]\"},{\"name\":\"parse_blocks\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"parse_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"parse_data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"parse_data_with_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"parse_file_list\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[str]\"},{\"name\":\"parse_python_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"parse_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Parameter\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"description\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PlaywrightWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"browser_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Literal[chromium, firefox, webkit] \\\\| None \",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \\\\| None \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"WebPage \\\\| list[WebPage]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_scrape\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_precheck\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"PrepareDocuments\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_init_repo\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"PrepareInterview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ProductManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"todo_action\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"todo\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_observe\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ProjectManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"PromptString\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QaEngineer\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"test_round\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"test_round_allowed\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_write_test\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_debug_error\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_observe\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"QdrantConnection\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"host\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"port\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[int] \",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QdrantStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"QdrantClient \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"points\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[PointStruct]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"create_collection\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"vectors_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"VectorParams\",\"default_value\":\"\"},{\"name\":\"force_recreate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete_collection\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"has_collection\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[float]\",\"default_value\":\"\"},{\"name\":\"query_filter\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Filter\",\"default_value\":\"\"},{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"return_vector\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"RebuildClassView\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"format\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_create_mermaid_class_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_create_mermaid_class\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_create_mermaid_relationship\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_variable_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_function_args\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_diff_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_align_root\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"RebuildSequenceView\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"format\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_search_main_entry\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_rebuild_sequence_view\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Redis\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"is_configured\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_valid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"close\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"bytes \\\\| None\"},{\"name\":\"set\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"timeout_sec\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_connect\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"RepairType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReplyData\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReplyQuestion\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ocr_result\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"Repo\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"assets\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Path, Document] \",\"default_value\":\"\"},{\"name\":\"codes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Path, Document] \",\"default_value\":\"\"},{\"name\":\"docs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Path, Document] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"eda\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"RepoMetadata\"},{\"name\":\"from_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Optional[Document]\"},{\"name\":\"get_text_documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"list[Document]\"},{\"name\":\"set\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"to_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_set\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"RepoFileInfo\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"classes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"},{\"name\":\"file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"functions\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"},{\"name\":\"globals\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"},{\"name\":\"page_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoMetadata\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"n_chars\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"n_docs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"symbols\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoParser\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"base_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"extract_class_and_function_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"tree\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"file_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"RepoFileInfo\"},{\"name\":\"generate_dataframe_structure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"generate_json_structure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"generate_structure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Path\"},{\"name\":\"generate_symbols\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"List[RepoFileInfo]\"},{\"name\":\"node_to_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"CodeBlockInfo \\\\| None\"},{\"name\":\"rebuild_class_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_parse_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_expr\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_if\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_if_compare\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_variable\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_assign\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_classes\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_class_relationships\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_split_class_line\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_split_relationship_line\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_label\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_create_path_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_repair_namespaces\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_repair_ns\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_find_root\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Report\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"links\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[dict[str, list[str]]] \",\"default_value\":\"\"},{\"name\":\"summaries\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[list[tuple[str, str]]] \",\"default_value\":\"\"},{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Researcher\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"react\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"research_system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_task\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Action\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"write_report\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ResultEmbedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Embedding] \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Returns\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"format\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Action]] \",\"default_value\":\"\"},{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"is_human\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"latest_observed_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Message] \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"recovered\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"states\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[str] \",\"default_value\":\"\"},{\"name\":\"subscription\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"set[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"action_count\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_idle\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"todo\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"act\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"ActionOutput\"},{\"name\":\"check_subscription\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"deserialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"Role\"},{\"name\":\"get_memories\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"init_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"is_watch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"caused_by\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"publish_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"put_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"react\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"refresh_system_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Message \\\\| None\"},{\"name\":\"serialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_env\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"env\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Environment\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Memory\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_recovered\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"recovered\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"subscribe\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"tags\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Set[str]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"think\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Action\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_reset\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_setting\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_action_system_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_set_react_mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_watch\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_set_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_observe\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_react\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_by_order\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_plan_and_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"RoleContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"env\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"max_react_loop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_buffer\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"news\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[Type[Message]] \",\"default_value\":\"\"},{\"name\":\"react_mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"state\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"todo\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"watch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"set[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"history\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"important_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"check\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"check\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"RoleReactMode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"values\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"RunCode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"RunCodeResult\"},{\"name\":\"run_script\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"working_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"additional_python_paths\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"command\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Tuple[str, str]\"},{\"name\":\"run_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"code\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Tuple[str, str]\"},{\"name\":\"_install_via_subprocess\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_install_dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"RunCodeContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"additional_python_paths\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[str] \",\"default_value\":\"\"},{\"name\":\"code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"code_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"command\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[str] \",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"output_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"test_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"test_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"working_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCodeResult\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"stderr\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"stdout\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"S3\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"auth_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"session\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Session \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"is_configured\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_valid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"cache\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"file_ext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"format\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"download_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"bucket\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"local_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"chunk_size\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_object\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"bucket\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"bytes\"},{\"name\":\"get_object_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"bucket\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"upload_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"bucket\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"local_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SDEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"payload\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"sd_t2i_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"construct_payload\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"negtive_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"width\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"height\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run_i2i\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run_sam\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run_t2i\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompts\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run_i2i\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run_sam\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SPO\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Sales\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_set_store\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SearchAndSummarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"result\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine] \",\"default_value\":\"\"},{\"name\":\"search_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Any] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"validate_engine_and_run_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"values\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SearchEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType] \",\"default_value\":\"\"},{\"name\":\"run_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[True]\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SearchEngineType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Searcher\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"set_search_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"search_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_sp\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SeleniumWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"browser_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Literal[chrome, firefox, edge, ie] \\\\| None \",\"default_value\":\"\"},{\"name\":\"executable_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"launch_args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"WebPage \\\\| list[WebPage]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_precheck\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_scrape_website\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SerializationMixin\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__get_pydantic_core_schema__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__serialize_add_class_type__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__deserialize_with_real_type__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_subclass__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SerpAPIWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"aiosession\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Any] \",\"default_value\":\"\"},{\"name\":\"serpapi_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"check_serpapi_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_params\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, str]\"},{\"name\":\"results\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"_process_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SerperWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"aiosession\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Any] \",\"default_value\":\"\"},{\"name\":\"serper_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"check_serper_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Dict[str, str]\"},{\"name\":\"get_payloads\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"queries\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, str]\"},{\"name\":\"results\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"queries\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"_process_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SimpleMessage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Singleton\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__call__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SkAgent\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"import_semantic_skill_from_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Callable \",\"default_value\":\"\"},{\"name\":\"import_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Callable \",\"default_value\":\"\"},{\"name\":\"kernel\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Kernel \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"plan\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Plan \",\"default_value\":\"\"},{\"name\":\"planner\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]] \",\"default_value\":\"\"},{\"name\":\"planner_cls\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Any] \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SkSearchEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"description\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"examples\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Example] \",\"default_value\":\"\"},{\"name\":\"id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"parameters\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str, Parameter]] \",\"default_value\":\"\"},{\"name\":\"returns\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"x_prerequisite\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"arguments\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SkillAction\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict \",\"default_value\":\"\"},{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Message] \",\"default_value\":\"\"},{\"name\":\"skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"find_and_call_function\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"function_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"args\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Message\"}]}"}, {"id": "{\"name\":\"SkillManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"add_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Skill\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"del_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"generate_skill_desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Skill\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Skill\"},{\"name\":\"retrieve_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"list[Skill]\"},{\"name\":\"retrieve_skill_scored\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SkillsDeclaration\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"components\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Components] \",\"default_value\":\"\"},{\"name\":\"entities\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict[str, Entity] \",\"default_value\":\"\"},{\"name\":\"skillapi\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"entity_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Skill\"},{\"name\":\"get_skill_list\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"entity_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Dict\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"SkillsDeclaration\"}]}"}, {"id": "{\"name\":\"SparkLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Strategy\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SubscriptionRunner\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Role, asyncio.Task] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"raise_exception\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"subscribe\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Role\",\"default_value\":\"\"},{\"name\":\"trigger\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"AsyncGenerator[Message, None]\",\"default_value\":\"\"},{\"name\":\"callback\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Callable[[Message], Awaitable[None]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"unsubscribe\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Role\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SummarizeCode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"summarize_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SystemMessage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"TalkAction\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"history_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"knowledge\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Message] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"aask_args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"prompt_gpt4\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Message\"}]}"}, {"id": "{\"name\":\"TalkActionPrompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"FORMATION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"FORMATION_LOOSE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Teacher\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"course_title\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"new_file_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"lesson_title\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_react\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"TeachingPlanBlock\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"COURSE_TITLE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"DATA_BEGIN_TAG\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"DATA_END_TAG\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"FORMATION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"PROMPT_TEMPLATE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"TOPICS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"},{\"name\":\"TOPIC_STATEMENTS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Team\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"env\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"idea\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"investment\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"deserialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"Team\"},{\"name\":\"hire\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[Role]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"invest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"investment\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"float\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"n_round\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"idea\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"auto_archive\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run_project\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"idea\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"serialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"start_project\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"idea\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_check_balance\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"TestingContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"code_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"test_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Document] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtNode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"valid_status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"update_valid_status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"status\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ThoughtSolverBase\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"thought_tree\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[ThoughtTree] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"evaluate_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parent_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"generate_thoughts\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"current_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"List[ThoughtNode]\"},{\"name\":\"select_nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"thought_nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ThoughtNode]\",\"default_value\":\"\"}],\"return_type\":\"List[ThoughtNode]\"},{\"name\":\"solve\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_solution\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ThoughtSolverConfig\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"evaluator\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_steps\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"method_select\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"n_generate_sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"n_select_sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"n_solution_sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"parser\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtTree\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"all_nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"parse_node_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"List[str]\"},{\"name\":\"show\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"thought\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[dict]\",\"default_value\":\"\"},{\"name\":\"current_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"ThoughtNode\",\"default_value\":\"\"}],\"return_type\":\"List[ThoughtNode]\"}]}"}, {"id": "{\"name\":\"Translator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"translate_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"original\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"TreeofThought\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"solver\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strategy\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_initialize_solver\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"TutorialAssistant\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"main_title\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"total_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"react\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_handle_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"UTGenerator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"chatgpt_method\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"icl_sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"questions_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"swagger_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"template_prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"ut_py_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"ask_gpt_and_save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"question\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"fname\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"build_api_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"build_object_properties\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prop_object_required\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"level\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"generate_ut\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"include_tags\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"get_swagger_json\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"get_tags_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"gpt_msgs_to_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"para_to_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prop\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prop_object_required\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__para_to_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_para_to_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_generate_ut\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"Usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"total_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UserMessage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"UserRequirement\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WDMHttpProxyClient\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WebBrowseAndSummarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"browse_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Union[Callable[[list[str]], None], None]] \",\"default_value\":\"\"},{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[WebBrowserEngine] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict[str, str]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WebBrowserEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"WebBrowserEngineType \\\\| None \",\"default_value\":\"\"},{\"name\":\"run_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"WebPage\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WebBrowserEngineType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebPage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"html\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"inner_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"soup\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"title\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get_links\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Generator[str, None, None]\"}]}"}, {"id": "{\"name\":\"WikiHowTemplate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"gen\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"question\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"step\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[str]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WriteCode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_codes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"task_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"CodingContext\"},{\"name\":\"write_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"WriteCodeAN\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WriteCodeReview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"CodingContext\"},{\"name\":\"write_code_review_and_rewrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cr_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WriteContent\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"WriteDesign\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_new_system_design\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_merge\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_system_design\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_data_api_design\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_seq_flow\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_pdf\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_mermaid_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WriteDirectory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Dict\"}]}"}, {"id": "{\"name\":\"WriteDocstring\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"code\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[google, numpy, sphinx]\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"write_docstring\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"},{\"name\":\"overwrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[google, numpy, sphinx]\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"id": "{\"name\":\"WritePRD\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"ActionOutput \\\\| Message\"},{\"name\":\"_run_new_requirement\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_is_relative\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_merge\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_prd\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_competitive_analysis\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_pdf\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_rename_workspace\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_is_bugfix\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WritePRDReview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"prd\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"prd_review_prompt_template\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prd\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WriteReview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WriteTasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_update_tasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_new_tasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_merge\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_requirements\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_pdf\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WriteTeachingPlanPart\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"format_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_set_result\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"WriteTest\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[TestingContext] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"TestingContext\"},{\"name\":\"write_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ZhiPuAILLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"resp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_zhipuai\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_const_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ZhiPuEvent\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuModelAPI\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"ainvoke\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"arequest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"invoke_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"InvokeType\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"asse_invoke\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"AsyncSSEClient\"},{\"name\":\"get_header\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"get_sse_header\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"split_zhipu_api_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"invoke_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"InvokeType\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"SearchEngineType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowserEngineType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__missing__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"id": "{\"name\":\"ActionType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[]}"}], "links": [{"predicate": "is", "source": "metagpt/schema.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/schema.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:AIMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:BugFixContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:ClassAttribute"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:ClassMeta"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:ClassMethod"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:ClassView"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Document"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Documents"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:MessageQueue"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:RunCodeResult"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SimpleMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SystemMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UserMessage"}, {"predicate": "is", "source": "metagpt/schema.py:AIMessage", "target": "class"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:AIMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:AIMessage", "target": "metagpt/schema.py:AIMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:AIMessage", "target": "{\"lineno\":305,\"end_lineno\":311,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AIMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:AIMessage", "target": "{\"name\":\"AIMessage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:APIRequestor"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:ApiType"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:OpenAIResponse"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_console_log_level"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_debug"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_info"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_warn"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:logfmt"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_build_api_url"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_requests_proxies_arg"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_make_session"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream_helper"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream_async"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:aiohttp_session"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_type"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_version"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:base_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:organization"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest "}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request "}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request_headers"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request_raw"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:__init__"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"lineno\":227,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"APIRequestor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"name\":\"APIRequestor\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"AZURE_AD, OPEN_AI \",\"default_value\":\"\"},{\"name\":\"api_version\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"base_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"arequest\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"files\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[True]\",\"default_value\":\"\"},{\"name\":\"request_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"request_timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[Union[float, Tuple[float, float]]]\",\"default_value\":\"\"}],\"return_type\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\"},{\"name\":\"arequest_raw\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"aiohttp.ClientResponse\"},{\"name\":\"request\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"files\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[True]\",\"default_value\":\"\"},{\"name\":\"request_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"request_timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[Union[float, Tuple[float, float]]]\",\"default_value\":\"\"}],\"return_type\":\"Tuple[Iterator[OpenAIResponse], bool, str]\"},{\"name\":\"request_headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"extra\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, str]\"},{\"name\":\"request_raw\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"requests.Response\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"request\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"arequest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_validate_headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_prepare_request_raw\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_async_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_response_line\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_key", "target": "api_key : NoneType"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_type", "target": "api_type : AZURE_AD, OPEN_AI"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_version", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_version", "target": "api_version"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:base_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:base_url", "target": "base_url : NoneType"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:organization", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:organization", "target": "organization : NoneType"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest ", "target": "arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw", "target": "arequest_raw(method, url, session): aiohttp.ClientResponse"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:request ", "target": "request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_headers", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_headers", "target": "request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_raw", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_raw", "target": "request_raw(method, url): requests.Response"}, {"predicate": "is", "source": "metagpt/actions/action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action.py", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:model_config"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:node"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:prefix"}, {"predicate": "has_class_function", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:run"}, {"predicate": "has_class_function", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:set_name_if_empty"}, {"predicate": "has_class_function", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:set_prefix"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action.py:Action", "target": "metagpt/roles/role.py:RoleContext:todo"}, {"predicate": "has_class_function", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_init_with_instruction"}, {"predicate": "has_class_function", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:__str__"}, {"predicate": "has_class_function", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:__repr__"}, {"predicate": "has_class_function", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_aask"}, {"predicate": "has_class_function", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_run_action_node"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:Action", "target": "{\"lineno\":27,\"end_lineno\":80,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Action\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action.py:Action", "target": "{\"name\":\"Action\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, str, None] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"set_name_if_empty\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"values\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_init_with_instruction\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_aask\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_action_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action.py:Action:context", "target": "context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, str, None]"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action.py:Action:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action.py:Action:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action.py:Action:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action.py:Action:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:node", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action.py:Action:node", "target": "node"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prefix", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action.py:Action:prefix", "target": "prefix : str"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action.py:Action:run", "target": "run()"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:set_name_if_empty", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action.py:Action:set_name_if_empty", "target": "set_name_if_empty(values)"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:set_prefix", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action.py:Action:set_prefix", "target": "set_prefix(prefix)"}, {"predicate": "is", "source": "metagpt/actions/action_node.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_node.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "has_function", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:dict_to_markdown"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:children"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:example"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:expected_type"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:instruct_content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:instruction"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:key"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:schema"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_child"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_children"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_example"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_instruction"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_to"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_children_class"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_model_class"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:fill"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:from_children"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_children_mapping"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_mapping"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_self_mapping"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_context"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_llm"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_recursive"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_fill"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:tagging"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:to_dict"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action.py:Action:node"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__init__"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__str__"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__repr__"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_compile_f"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_aask_v1"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"lineno\":56,\"end_lineno\":349,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionNode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"name\":\"ActionNode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"children\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[str, ActionNode] \",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expected_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Type \",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"BaseModel \",\"default_value\":\"\"},{\"name\":\"instruction\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add_child\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"ActionNode\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_children\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ActionNode]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"compile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"template\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"compile_example\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"compile_instruction\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"compile_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"i\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"kv_sep\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"create_children_class\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"create_model_class\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"class_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Dict[str, Tuple[Type, Any]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"fill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strgy\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"from_children\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ActionNode]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_children_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, Tuple[Type, Any]]\"},{\"name\":\"get_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, Tuple[Type, Any]]\"},{\"name\":\"get_self_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Dict[str, Tuple[Type, Any]]\"},{\"name\":\"set_context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_recursive\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"simple_fill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"tagging\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"to_dict\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"format_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_compile_f\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_aask_v1\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:children", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:children", "target": "children : dict[str, 'ActionNode']"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:content", "target": "content : str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:context", "target": "context : str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:example", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:example", "target": "example"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:expected_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:expected_type", "target": "expected_type : Type"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:instruct_content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:instruct_content", "target": "instruct_content : BaseModel"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:instruction", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:instruction", "target": "instruction : str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:key", "target": "key : str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:schema", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_node.py:ActionNode:schema", "target": "schema : str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_child", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:add_child", "target": "add_child(node: 'ActionNode')"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_children", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:add_children", "target": "add_children(nodes: List['ActionNode'])"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:compile", "target": "compile(context, schema, mode, template, exclude): str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_example", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:compile_example", "target": "compile_example(schema, mode, tag, exclude): str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_instruction", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:compile_instruction", "target": "compile_instruction(schema, mode, tag, exclude): str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_to", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:compile_to", "target": "compile_to(i: Dict, schema, kv_sep): str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_children_class", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:create_children_class", "target": "create_children_class(exclude)"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_model_class", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:create_model_class", "target": "create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:fill", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:fill", "target": "fill(context, llm, schema, mode, strgy, timeout, exclude)"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:from_children", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:from_children", "target": "from_children(key, nodes: List['ActionNode'])"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:get", "target": "get(key)"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping", "target": "get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_mapping", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:get_mapping", "target": "get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_self_mapping", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:get_self_mapping", "target": "get_self_mapping(): Dict[str, Tuple[Type, Any]]"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_context", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:set_context", "target": "set_context(context)"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_llm", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:set_llm", "target": "set_llm(llm)"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_recursive", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:set_recursive", "target": "set_recursive(name, value)"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_fill", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:simple_fill", "target": "simple_fill(schema, mode, timeout, exclude)"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:tagging", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:tagging", "target": "tagging(text, schema, tag): str"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:to_dict", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/action_node.py:ActionNode:to_dict", "target": "to_dict(format_func, mode, exclude): Dict"}, {"predicate": "is", "source": "metagpt/actions/action_output.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_output.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_output.py", "target": "metagpt/actions/action_output.py:ActionOutput"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:instruct_content"}, {"predicate": "has_class_function", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"lineno\":12,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionOutput\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"name\":\"ActionOutput\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"BaseModel \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_output.py:ActionOutput:content", "target": "content : str"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:instruct_content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/action_output.py:ActionOutput:instruct_content", "target": "instruct_content : BaseModel"}, {"predicate": "is", "source": "metagpt/actions", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions", "target": ""}, {"predicate": "has_class", "source": "metagpt/actions", "target": "metagpt/actions:ActionType"}, {"predicate": "is", "source": "metagpt/actions:ActionType", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions:ActionType", "target": "metagpt/actions:ActionType:name"}, {"predicate": "has_class_view", "source": "metagpt/actions:ActionType", "target": "{\"name\":\"ActionType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions:ActionType:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions:ActionType:name", "target": "name"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "metagpt/provider/general_api_base.py:ApiType:name"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "metagpt/provider/general_api_base.py:ApiType:from_str"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"lineno\":52,\"end_lineno\":68,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ApiType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"name\":\"ApiType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"from_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"label\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:ApiType:name", "target": "name"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType:from_str", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/general_api_base.py:ApiType:from_str", "target": "from_str(label)"}, {"predicate": "is", "source": "metagpt/roles/architect.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/architect.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/architect.py", "target": "metagpt/roles/architect.py:Architect"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:__init__"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:Architect", "target": "{\"lineno\":14,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Architect\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/architect.py:Architect", "target": "{\"name\":\"Architect\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/architect.py:Architect:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/architect.py:Architect:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/architect.py:Architect:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/architect.py:Architect:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/skill_action.py", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "has_class", "source": "metagpt/actions/skill_action.py", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:args"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask"}, {"predicate": "has_class_function", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"predicate": "has_class_function", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments"}, {"predicate": "has_class_function", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"lineno\":24,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ArgumentsParingAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"name\":\"ArgumentsParingAction\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Dict] \",\"default_value\":\"\"},{\"name\":\"ask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Message] \",\"default_value\":\"\"},{\"name\":\"skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"parse_arguments\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"txt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Message\"}]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:args", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:args", "target": "args : Optional[Dict]"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask", "target": "ask : str"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "prompt"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp", "target": "rsp : Optional[Message]"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill", "target": "skill"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments", "target": "parse_arguments(skill_name, txt): dict"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:run", "target": "run(with_message): Message"}, {"predicate": "is", "source": "metagpt/roles/assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/assistant.py", "target": "metagpt/roles/assistant.py:Assistant"}, {"predicate": "has_class", "source": "metagpt/roles/assistant.py", "target": "metagpt/roles/assistant.py:MessageType"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:skills"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:act"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:get_memory"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:load_memory"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:refine_memory"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:skill_handler"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:talk"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:talk_handler"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:think"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:_plan"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"lineno\":38,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Assistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"name\":\"Assistant\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"skills\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[SkillsDeclaration] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"act\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"get_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"load_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"m\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"refine_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"skill_handler\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"talk\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"talk_handler\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"think\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"bool\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_plan\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/assistant.py:Assistant:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/assistant.py:Assistant:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/assistant.py:Assistant:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:memory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/assistant.py:Assistant:memory", "target": "memory"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/assistant.py:Assistant:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/assistant.py:Assistant:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:skills", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/assistant.py:Assistant:skills", "target": "skills : Optional[SkillsDeclaration]"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:act", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/assistant.py:Assistant:act", "target": "act(): Message"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:get_memory", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/assistant.py:Assistant:get_memory", "target": "get_memory(): str"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:load_memory", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/assistant.py:Assistant:load_memory", "target": "load_memory(m)"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:refine_memory", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/assistant.py:Assistant:refine_memory", "target": "refine_memory(): str"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:skill_handler", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/assistant.py:Assistant:skill_handler", "target": "skill_handler(text): bool"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:talk", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/assistant.py:Assistant:talk", "target": "talk(text)"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:talk_handler", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/assistant.py:Assistant:talk_handler", "target": "talk_handler(text): bool"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:think", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/assistant.py:Assistant:think", "target": "think(): bool"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:async_events"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:_aread"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"lineno\":9,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AsyncSSEClient\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"name\":\"AsyncSSEClient\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"async_events\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_aread\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:async_events", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:async_events", "target": "async_events()"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:AudioData"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus"}, {"predicate": "has_function", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:audio"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:ced"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:status"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"lineno\":36,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AudioData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"name\":\"AudioData\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"audio\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"ced\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:audio", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:AudioData:audio", "target": "audio : str"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:ced", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:AudioData:ced", "target": "ced : str"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:status", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:AudioData:status", "target": "status : int"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/azure_openai_api.py", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client"}, {"predicate": "has_class_function", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"lineno\":22,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureOpenAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"name\":\"AzureOpenAILLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"aclient\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"AsyncAzureOpenAI \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"_init_client\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_make_client_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient", "target": "aclient : AsyncAzureOpenAI"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model", "target": "model"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/azure_tts.py", "target": "metagpt/tools/azure_tts.py:AzureTTS"}, {"predicate": "has_function", "source": "metagpt/tools/azure_tts.py", "target": "metagpt/tools/azure_tts.py:oas3_azsure_tts"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:region"}, {"predicate": "has_class_property", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key"}, {"predicate": "has_class_function", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text"}, {"predicate": "has_class_function", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:role_text"}, {"predicate": "has_class_function", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:style_text"}, {"predicate": "has_class_function", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech"}, {"predicate": "has_class_function", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"lineno\":20,\"end_lineno\":57,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureTTS\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"name\":\"AzureTTS\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"region\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"subscription_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"role_style_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"role_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"style_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"synthesize_speech\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"voice\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"output_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:region", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/azure_tts.py:AzureTTS:region", "target": "region"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key", "target": "subscription_key"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text", "target": "role_style_text(role, style, text)"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_text", "target": "role_text(role, text)"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:style_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/azure_tts.py:AzureTTS:style_text", "target": "style_text(style, text)"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech", "target": "synthesize_speech(lang, voice, text, output_file)"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:EnronTemplate"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"lineno\":95,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BEAGECTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"name\":\"BEAGECTemplate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"gen\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen", "target": "gen()"}, {"predicate": "is", "source": "metagpt/strategy/tot.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/tot.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:BFSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:TreeofThought:Config"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:DFSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:MCTSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:_bfs_build"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"lineno\":126,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BFSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"name\":\"BFSSolver\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"thought_tree\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"generate_and_evaluate_nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"current_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_bfs_build\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:thought_tree", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:BFSSolver:thought_tree", "target": "thought_tree"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes", "target": "generate_and_evaluate_nodes(current_state, current_value, node)"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:solve", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:BFSSolver:solve", "target": "solve(init_prompt)"}, {"predicate": "is", "source": "metagpt/schema.py:BaseContext", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:BaseContext", "target": "metagpt/schema.py:BaseContext:loads"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:BaseContext", "target": "{\"lineno\":390,\"end_lineno\":395,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:BaseContext", "target": "{\"name\":\"BaseContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"loads\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Optional[T]\"}]}"}, {"predicate": "is", "source": "metagpt/schema.py:BaseContext:loads", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:BaseContext:loads", "target": "loads(val: str): Optional[T]"}, {"predicate": "is", "source": "metagpt/strategy/base.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/base.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:BaseEvaluator"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:BaseParser"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:ThoughtNode"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:ThoughtTree"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:status_verify "}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:__call__"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:status_verify"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseEvaluator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"name\":\"BaseEvaluator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"status_verify\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__call__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"status_verify\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify ", "target": "status_verify ()"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/base_llm.py", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:system_prompt"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask_batch"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask_code"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion "}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text "}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action.py:Action:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action_node.py:ActionNode:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/research.py:ConductResearch"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/research.py:ConductResearch:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/roles/role.py:Role:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/roles/sk_agent.py:SkAgent"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/roles/sk_agent.py:SkAgent:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_user_msg"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_system_msg"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion"}, {"predicate": "has_class_function", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"lineno\":14,\"end_lineno\":128,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"name\":\"BaseLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"aask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"system_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[list[str]]\",\"default_value\":\"\"},{\"name\":\"format_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[list[dict[str, str]]]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"aask_batch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"aask_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"acompletion\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"acompletion_text\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_choice_function\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"get_choice_function_arguments\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"_user_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_assistant_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_system_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_system_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_default_system_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_extract_assistant_rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:system_prompt", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:system_prompt", "target": "system_prompt : str"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt", "target": "use_system_prompt : bool"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:aask", "target": "aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_batch", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_batch", "target": "aask_batch(msgs: list, timeout): str"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_code", "target": "aask_code(msgs: list[str], timeout): str"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion ", "target": "acompletion (messages: list[dict], timeout)"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text ", "target": "acompletion_text (messages: list[dict], stream, timeout): str"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function", "target": "get_choice_function(rsp: dict): dict"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments", "target": "get_choice_function_arguments(rsp: dict): dict"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text", "target": "get_choice_text(rsp: dict): str"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:propose "}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:sample "}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:value "}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:__call__"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:propose"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:sample"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:value"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"name\":\"BaseParser\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"propose\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"current_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"sample\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"current_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"value\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"input\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__call__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"propose\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:propose ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:BaseParser:propose ", "target": "propose (current_state: str): str"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:sample ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:BaseParser:sample ", "target": "sample (current_state: str): str"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:value ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:BaseParser:value ", "target": "value (input: str): str"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model"}, {"predicate": "has_class_function", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run"}, {"predicate": "has_class_function", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output"}, {"predicate": "has_class_function", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output"}, {"predicate": "has_class_function", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output"}, {"predicate": "has_class_function", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"lineno\":15,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BasePostProcessPlugin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"name\":\"BasePostProcessPlugin\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"req_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Union[dict, list]\"},{\"name\":\"run_extract_content_from_output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"right_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"run_repair_llm_output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"req_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Union[dict, list]\"},{\"name\":\"run_repair_llm_raw_output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"req_keys\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"repair_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"run_retry_parse_json_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Union[dict, list]\"}]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model", "target": "model : NoneType"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run", "target": "run(output: str, schema: dict, req_key: str): Union[dict, list]"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output", "target": "run_extract_content_from_output(content: str, right_key: str): str"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output", "target": "run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output", "target": "run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text", "target": "run_retry_parse_json_text(content: str): Union[dict, list]"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/base_store.py", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class", "source": "metagpt/document_store/base_store.py", "target": "metagpt/document_store/base_store.py:LocalStore"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:add "}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:search "}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:write "}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:search"}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:write"}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:add"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"lineno\":14,\"end_lineno\":27,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"name\":\"BaseStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"add\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:add ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/base_store.py:BaseStore:add ", "target": "add ()"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:search ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/base_store.py:BaseStore:search ", "target": "search ()"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:write ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/base_store.py:BaseStore:write ", "target": "write ()"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/brain_memory.py", "target": "metagpt/memory/brain_memory.py:BrainMemory"}, {"predicate": "has_class", "source": "metagpt/memory/brain_memory.py", "target": "metagpt/memory/brain_memory.py:BrainMemory:Config"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:cacheable"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:history"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:history_text"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:knowledge"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:last_talk"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:llm"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_answer"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_history"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_talk"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:dumps"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:exists"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:extract_info"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:get_title"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_related"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:loads"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:rewrite"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:split_texts"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:summarize"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_int"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/roles/assistant.py:Assistant"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/roles/assistant.py:Assistant:memory"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_summarize"}, {"predicate": "has_class_function", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"lineno\":26,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrainMemory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"name\":\"BrainMemory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"cacheable\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"historical_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"history\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Message] \",\"default_value\":\"\"},{\"name\":\"is_dirty\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"knowledge\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Message] \",\"default_value\":\"\"},{\"name\":\"last_history_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"last_talk\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"history_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_history_available\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add_answer\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_history\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_talk\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"dumps\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"redis_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"timeout_sec\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"exists\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"extract_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"input_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pattern\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_knowledge\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"get_title\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_words\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"is_related\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text1\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text2\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"loads\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"redis_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"BrainMemory\"},{\"name\":\"pop_last_talk\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"rewrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"sentence\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_history_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"history_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"redis_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"redis_conf\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"split_texts\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"window_size\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"List[str]\"},{\"name\":\"summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_words\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"keep_language\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"limit\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"to_int\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"v\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"default_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"to_metagpt_history_format\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"history\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"to_redis_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"user_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"chat_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_openai_summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_metagpt_summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_metagpt_is_related\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_openai_is_related\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_metagpt_rewrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_openai_rewrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:cacheable", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:cacheable", "target": "cacheable : bool"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary", "target": "historical_summary : str"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:history", "target": "history : List[Message]"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "history_text"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty", "target": "is_dirty : bool"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "is_history_available"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:knowledge", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:knowledge", "target": "knowledge : List[Message]"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id", "target": "last_history_id : str"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_talk", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_talk", "target": "last_talk : Optional[str]"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:llm", "target": "llm : Optional[BaseLLM]"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_answer", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_answer", "target": "add_answer(msg: Message)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_history", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_history", "target": "add_history(msg: Message)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_talk", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_talk", "target": "add_talk(msg: Message)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:dumps", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:dumps", "target": "dumps(redis_key: str, timeout_sec: int)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:exists", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:exists", "target": "exists(text): bool"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:extract_info", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:extract_info", "target": "extract_info(input_string, pattern)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge", "target": "get_knowledge(): str"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_title", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_title", "target": "get_title(llm, max_words): str"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_related", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_related", "target": "is_related(text1, text2, llm)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:loads", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:loads", "target": "loads(redis_key: str): 'BrainMemory'"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk", "target": "pop_last_talk()"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:rewrite", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:rewrite", "target": "rewrite(sentence: str, context: str, llm)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary", "target": "set_history_summary(history_summary, redis_key, redis_conf)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:split_texts", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:split_texts", "target": "split_texts(text: str, window_size): List[str]"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:summarize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:summarize", "target": "summarize(llm, max_words, keep_language: bool, limit: int)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_int", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_int", "target": "to_int(v, default_value)"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format", "target": "to_metagpt_history_format(history): str"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key", "target": "to_redis_key(prefix: str, user_id: str, chat_id: str)"}, {"predicate": "is", "source": "metagpt/schema.py:BugFixContext", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:BugFixContext", "target": "metagpt/schema.py:BugFixContext:filename"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:BugFixContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:BugFixContext", "target": "{\"lineno\":452,\"end_lineno\":453,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BugFixContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:BugFixContext", "target": "{\"name\":\"BugFixContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BugFixContext:filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:BugFixContext:filename", "target": "filename : str"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/git_repository.py", "target": "metagpt/utils/git_repository.py:ChangeType"}, {"predicate": "has_class", "source": "metagpt/utils/git_repository.py", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "metagpt/utils/git_repository.py:ChangeType:name"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"lineno\":25,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChangeType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"name\":\"ChangeType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:ChangeType:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/git_repository.py:ChangeType:name", "target": "name"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/chromadb_store.py", "target": "metagpt/document_store/chromadb_store.py:ChromaStore"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:client"}, {"predicate": "has_class_property", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:collection"}, {"predicate": "has_class_function", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:add"}, {"predicate": "has_class_function", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:delete"}, {"predicate": "has_class_function", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:persist "}, {"predicate": "has_class_function", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:search"}, {"predicate": "has_class_function", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/management/skill_manager.py:SkillManager"}, {"predicate": "isCompositeOn", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/management/skill_manager.py:SkillManager:_store"}, {"predicate": "has_class_function", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__"}, {"predicate": "has_class_function", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:persist"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"lineno\":11,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChromaStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"name\":\"ChromaStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"FastAPI, LocalAPI \",\"default_value\":\"\"},{\"name\":\"collection\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Collection \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"document\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadata\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"n_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadata_filter\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"document_filter\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadatas\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ids\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:client", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:client", "target": "client : FastAPI, LocalAPI"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:collection", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:collection", "target": "collection : Collection"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:add", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:add", "target": "add(document, metadata, _id)"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:delete", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:delete", "target": "delete(_id)"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist ", "target": "persist ()"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:search", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:search", "target": "search(query, n_results, metadata_filter, document_filter)"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:write", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:write", "target": "write(documents, metadatas, ids)"}, {"predicate": "is", "source": "metagpt/schema.py:ClassAttribute", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassAttribute", "target": "metagpt/schema.py:ClassAttribute:default_value"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassAttribute", "target": "metagpt/schema.py:ClassAttribute:value_type"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:ClassAttribute", "target": "metagpt/schema.py:ClassAttribute:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:ClassAttribute", "target": "metagpt/schema.py:ClassMeta"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:ClassAttribute", "target": "{\"lineno\":464,\"end_lineno\":483,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassAttribute\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:ClassAttribute", "target": "{\"name\":\"ClassAttribute\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"default_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"value_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_mermaid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"align\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/schema.py:ClassAttribute:default_value", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassAttribute:default_value", "target": "default_value : str"}, {"predicate": "is", "source": "metagpt/schema.py:ClassAttribute:value_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassAttribute:value_type", "target": "value_type : str"}, {"predicate": "is", "source": "metagpt/schema.py:ClassAttribute:get_mermaid", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:ClassAttribute:get_mermaid", "target": "get_mermaid(align): str"}, {"predicate": "is", "source": "metagpt/repo_parser.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/repo_parser.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:ClassInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:ClassRelationship"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:CodeBlockInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:RepoFileInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:RepoParser"}, {"predicate": "has_function", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:is_func"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassInfo", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:ClassInfo", "target": "metagpt/repo_parser.py:ClassInfo:attributes"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:ClassInfo", "target": "metagpt/repo_parser.py:ClassInfo:methods"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:ClassInfo", "target": "metagpt/repo_parser.py:ClassInfo:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:ClassInfo", "target": "metagpt/repo_parser.py:ClassInfo:package"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ClassInfo", "target": "{\"lineno\":42,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:ClassInfo", "target": "{\"name\":\"ClassInfo\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"attributes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict[str, str] \",\"default_value\":\"\"},{\"name\":\"methods\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict[str, str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"package\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassInfo:attributes", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:ClassInfo:attributes", "target": "attributes : Dict[str, str]"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassInfo:methods", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:ClassInfo:methods", "target": "methods : Dict[str, str]"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassInfo:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:ClassInfo:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassInfo:package", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:ClassInfo:package", "target": "package : Optional[str]"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMeta", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassMeta", "target": "metagpt/schema.py:ClassMeta:abstraction"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassMeta", "target": "metagpt/schema.py:ClassMeta:name"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassMeta", "target": "metagpt/schema.py:ClassMeta:static"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassMeta", "target": "metagpt/schema.py:ClassMeta:visibility"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:ClassMeta", "target": "{\"lineno\":457,\"end_lineno\":461,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassMeta\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:ClassMeta", "target": "{\"name\":\"ClassMeta\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"abstraction\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"static\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"visibility\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMeta:abstraction", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassMeta:abstraction", "target": "abstraction : bool"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMeta:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassMeta:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMeta:static", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassMeta:static", "target": "static : bool"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMeta:visibility", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassMeta:visibility", "target": "visibility : str"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMethod", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassMethod", "target": "metagpt/schema.py:ClassMethod:args"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassMethod", "target": "metagpt/schema.py:ClassMethod:return_type"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:ClassMethod", "target": "metagpt/schema.py:ClassMethod:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:ClassMethod", "target": "metagpt/schema.py:ClassMeta"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:ClassMethod", "target": "{\"lineno\":486,\"end_lineno\":499,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassMethod\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:ClassMethod", "target": "{\"name\":\"ClassMethod\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[ClassAttribute] \",\"default_value\":\"\"},{\"name\":\"return_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_mermaid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"align\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMethod:args", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassMethod:args", "target": "args : List[ClassAttribute]"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMethod:return_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassMethod:return_type", "target": "return_type : str"}, {"predicate": "is", "source": "metagpt/schema.py:ClassMethod:get_mermaid", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:ClassMethod:get_mermaid", "target": "get_mermaid(align): str"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassRelationship", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:ClassRelationship", "target": "metagpt/repo_parser.py:ClassRelationship:dest"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:ClassRelationship", "target": "metagpt/repo_parser.py:ClassRelationship:label"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:ClassRelationship", "target": "metagpt/repo_parser.py:ClassRelationship:relationship"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:ClassRelationship", "target": "metagpt/repo_parser.py:ClassRelationship:src"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ClassRelationship", "target": "{\"lineno\":49,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassRelationship\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:ClassRelationship", "target": "{\"name\":\"ClassRelationship\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"dest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"label\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"relationship\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"src\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassRelationship:dest", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:ClassRelationship:dest", "target": "dest : str"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassRelationship:label", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:ClassRelationship:label", "target": "label : Optional[str]"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassRelationship:relationship", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:ClassRelationship:relationship", "target": "relationship : str"}, {"predicate": "is", "source": "metagpt/repo_parser.py:ClassRelationship:src", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:ClassRelationship:src", "target": "src : str"}, {"predicate": "is", "source": "metagpt/schema.py:ClassView", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassView", "target": "metagpt/schema.py:ClassView:attributes"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:ClassView", "target": "metagpt/schema.py:ClassView:methods"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:ClassView", "target": "metagpt/schema.py:ClassView:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:ClassView", "target": "metagpt/schema.py:ClassMeta"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:ClassView", "target": "{\"lineno\":502,\"end_lineno\":513,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:ClassView", "target": "{\"name\":\"ClassView\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"attributes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[ClassAttribute] \",\"default_value\":\"\"},{\"name\":\"methods\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[ClassMethod] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_mermaid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"align\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/schema.py:ClassView:attributes", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassView:attributes", "target": "attributes : List[ClassAttribute]"}, {"predicate": "is", "source": "metagpt/schema.py:ClassView:methods", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:ClassView:methods", "target": "methods : List[ClassMethod]"}, {"predicate": "is", "source": "metagpt/schema.py:ClassView:get_mermaid", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:ClassView:get_mermaid", "target": "get_mermaid(align): str"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/anthropic_api.py", "target": "metagpt/provider/anthropic_api.py:Claude2"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:aask"}, {"predicate": "has_class_function", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:ask"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"lineno\":15,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Claude2\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"name\":\"Claude2\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"aask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"ask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:aask", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/anthropic_api.py:Claude2:aask", "target": "aask(prompt: str): str"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:ask", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/anthropic_api.py:Claude2:ask", "target": "ask(prompt: str): str"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:lineno"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:properties"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:tokens"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:type_name"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeBlockInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"name\":\"CodeBlockInfo\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"end_lineno\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"lineno\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"properties\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict \",\"default_value\":\"\"},{\"name\":\"tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"},{\"name\":\"type_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno", "target": "end_lineno : int"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:lineno", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:CodeBlockInfo:lineno", "target": "lineno : int"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:properties", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:CodeBlockInfo:properties", "target": "properties : Dict"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:CodeBlockInfo:tokens", "target": "tokens : List"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:type_name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:CodeBlockInfo:type_name", "target": "type_name : str"}, {"predicate": "is", "source": "metagpt/utils/common.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/common.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:CodeParser"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:NoMoneyException"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:OutputParser"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:check_cmd_exists"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:require_python_version"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:print_members"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:parse_recipient"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:get_class_name"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_str"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_str_set"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:is_subscribed"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_name"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:concat_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:split_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:general_after_log"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_json_file"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:write_json_file"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:import_class"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:import_class_inst"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:format_trackback_info"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:serialize_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:role_raise_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:aread"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:awrite"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_file_block"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_block"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_blocks"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_code"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_file_list"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_str"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"lineno\":234,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"name\":\"CodeParser\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"parse_block\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"block\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"parse_blocks\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"parse_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"block\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"parse_file_list\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"block\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[str]\"},{\"name\":\"parse_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"block\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_block", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:CodeParser:parse_block", "target": "parse_block(block: str, text: str): str"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_blocks", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:CodeParser:parse_blocks", "target": "parse_blocks(text: str)"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:CodeParser:parse_code", "target": "parse_code(block: str, text: str, lang: str): str"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_file_list", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:CodeParser:parse_file_list", "target": "parse_file_list(block: str, text: str, lang: str): list[str]"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_str", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:CodeParser:parse_str", "target": "parse_str(block: str, text: str, lang: str)"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:codes_filenames"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:design_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:reason"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:task_filename"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:loads"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/actions/summarize_code.py:SummarizeCode:context"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:__hash__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"lineno\":430,\"end_lineno\":449,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeSummarizeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"name\":\"CodeSummarizeContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"codes_filenames\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[str] \",\"default_value\":\"\"},{\"name\":\"design_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"reason\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"task_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"loads\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filenames\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List\",\"default_value\":\"\"}],\"return_type\":\"CodeSummarizeContext\"},{\"name\":\"__hash__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:codes_filenames", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:CodeSummarizeContext:codes_filenames", "target": "codes_filenames : List[str]"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:design_filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:CodeSummarizeContext:design_filename", "target": "design_filename : str"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:reason", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:CodeSummarizeContext:reason", "target": "reason : str"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:task_filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:CodeSummarizeContext:task_filename", "target": "task_filename : str"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:loads", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:CodeSummarizeContext:loads", "target": "loads(filenames: List): CodeSummarizeContext"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:code_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:design_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:task_doc"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodingContext", "target": "{\"lineno\":398,\"end_lineno\":402,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodingContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodingContext", "target": "{\"name\":\"CodingContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"code_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Document] \",\"default_value\":\"\"},{\"name\":\"design_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Document] \",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"task_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Document] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:code_doc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:CodingContext:code_doc", "target": "code_doc : Optional[Document]"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:design_doc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:CodingContext:design_doc", "target": "design_doc : Optional[Document]"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:CodingContext:filename", "target": "filename : str"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:task_doc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:CodingContext:task_doc", "target": "task_doc : Optional[Document]"}, {"predicate": "is", "source": "metagpt/actions/research.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/research.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:CollectLinks"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:ConductResearch"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "has_function", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:get_research_system_text"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:rank_func"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"predicate": "has_class_function", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"lineno\":80,\"end_lineno\":173,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CollectLinks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"name\":\"CollectLinks\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rank_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[list[str]], None]] \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"decomposition_nums\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"url_per_query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| None\",\"default_value\":\"\"}],\"return_type\":\"dict[str, list[str]]\"},{\"name\":\"_search_and_rank_urls\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:CollectLinks:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:CollectLinks:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:CollectLinks:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:rank_func", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:CollectLinks:rank_func", "target": "rank_func : Optional[Callable[[list[str]], None]]"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:search_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:CollectLinks:search_engine", "target": "search_engine"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/research.py:CollectLinks:run", "target": "run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\| None): dict[str, list[str]]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Components"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Entity"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Example"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Parameter"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Returns"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Components", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"lineno\":58,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Components\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"name\":\"Components\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"lineno\":247,\"end_lineno\":278,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ConductResearch\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"name\":\"ConductResearch\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:ConductResearch:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:ConductResearch:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:ConductResearch:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/research.py:ConductResearch:run", "target": "run(topic: str, content: str, system_text: str): str"}, {"predicate": "is", "source": "metagpt/config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/config.py", "target": "metagpt/config.py:Config"}, {"predicate": "has_class", "source": "metagpt/config.py", "target": "metagpt/config.py:LLMProviderEnum"}, {"predicate": "has_class", "source": "metagpt/config.py", "target": "metagpt/config.py:NotConfiguredException"}, {"predicate": "is", "source": "metagpt/config.py:Config", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:anthropic_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:calc_usage"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:claude_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:code_review_k_times"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:default_yaml_file"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:deployment_name"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:domain"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:fireworks_api_base"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:fireworks_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:fireworks_api_model"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:gemini_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:git_reinit"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:global_proxy"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:google_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:google_cse_id"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:home_yaml_file"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:inc"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:key_yaml_file"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:long_term_memory"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:max_auto_summarize_code"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:max_tokens_rsp"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:mermaid_engine"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:mmdc"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:model_for_researcher_report"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:model_for_researcher_summary"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:ollama_api_base"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:ollama_api_model"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:open_llm_api_base"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:open_llm_api_model"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:openai_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:openai_api_model"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:openai_api_rpm"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:openai_api_type"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:openai_api_version"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:openai_base_url"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:openai_proxy"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:options"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:playwright_browser_type"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:project_name"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:project_path"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:prompt_schema"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:puppeteer_config"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:pyppeteer_executable_path"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:repair_llm_output"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:reqa_file"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:selenium_browser_type"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:serpapi_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:serper_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:spark_api_key"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:spark_api_secret"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:spark_appid"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:spark_url"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:timeout"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:web_browser_engine"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:workspace_path"}, {"predicate": "has_class_property", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:zhipuai_api_key"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:get"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:get_default_llm_provider_enum"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:get_model_name"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:new_environ"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:set_context"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:update_via_cli"}, {"predicate": "isAggregateOf", "source": "metagpt/config.py:Config", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/config.py:Config", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/config.py:Config", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/config.py:Config", "target": "metagpt/provider/open_llm_api.py:OpenLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/config.py:Config", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/config.py:Config", "target": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:__init__"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:_is_valid_llm_key"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:_update"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:_ensure_workspace_exists"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:_init_with_config_files_and_env"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:_get"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:__setattr__"}, {"predicate": "has_class_function", "source": "metagpt/config.py:Config", "target": "metagpt/config.py:Config:__getattr__"}, {"predicate": "has_page_info", "source": "metagpt/config.py:Config", "target": "{\"lineno\":57,\"end_lineno\":284,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Config\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config.py:Config", "target": "{\"name\":\"Config\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"anthropic_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"calc_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"claude_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_review_k_times\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"default_yaml_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"deployment_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"domain\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"fireworks_api_base\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"fireworks_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"fireworks_api_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"gemini_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_reinit\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"global_proxy\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"google_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"google_cse_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"home_yaml_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"inc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"key_yaml_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"long_term_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"max_tokens_rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mmdc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_for_researcher_report\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_for_researcher_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ollama_api_base\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ollama_api_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"open_llm_api_base\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"open_llm_api_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_rpm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_api_version\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_base_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"openai_proxy\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"playwright_browser_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"project_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"pyppeteer_executable_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repair_llm_output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"selenium_browser_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"serpapi_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"serper_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workspace_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"},{\"name\":\"zhipuai_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"options\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_default_llm_provider_enum\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"LLMProviderEnum\"},{\"name\":\"get_model_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"provider\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"new_environ\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"set_context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"options\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_via_cli\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"project_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"inc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_is_valid_llm_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_ensure_workspace_exists\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_with_config_files_and_env\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__setattr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__getattr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/config.py:Config:anthropic_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:anthropic_api_key", "target": "anthropic_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:calc_usage", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:calc_usage", "target": "calc_usage"}, {"predicate": "is", "source": "metagpt/config.py:Config:claude_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:claude_api_key", "target": "claude_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:code_review_k_times", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:code_review_k_times", "target": "code_review_k_times : int"}, {"predicate": "is", "source": "metagpt/config.py:Config:cost_manager", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:cost_manager", "target": "cost_manager"}, {"predicate": "is", "source": "metagpt/config.py:Config:default_yaml_file", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:default_yaml_file", "target": "default_yaml_file"}, {"predicate": "is", "source": "metagpt/config.py:Config:deployment_name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:deployment_name", "target": "deployment_name"}, {"predicate": "is", "source": "metagpt/config.py:Config:domain", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:domain", "target": "domain"}, {"predicate": "is", "source": "metagpt/config.py:Config:fireworks_api_base", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:fireworks_api_base", "target": "fireworks_api_base"}, {"predicate": "is", "source": "metagpt/config.py:Config:fireworks_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:fireworks_api_key", "target": "fireworks_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:fireworks_api_model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:fireworks_api_model", "target": "fireworks_api_model"}, {"predicate": "is", "source": "metagpt/config.py:Config:gemini_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:gemini_api_key", "target": "gemini_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:git_reinit", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:git_reinit", "target": "git_reinit : bool"}, {"predicate": "is", "source": "metagpt/config.py:Config:global_proxy", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:global_proxy", "target": "global_proxy"}, {"predicate": "is", "source": "metagpt/config.py:Config:google_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:google_api_key", "target": "google_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:google_cse_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:google_cse_id", "target": "google_cse_id"}, {"predicate": "is", "source": "metagpt/config.py:Config:home_yaml_file", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:home_yaml_file", "target": "home_yaml_file"}, {"predicate": "is", "source": "metagpt/config.py:Config:inc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:inc", "target": "inc : bool"}, {"predicate": "is", "source": "metagpt/config.py:Config:key_yaml_file", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:key_yaml_file", "target": "key_yaml_file"}, {"predicate": "is", "source": "metagpt/config.py:Config:long_term_memory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:long_term_memory", "target": "long_term_memory"}, {"predicate": "is", "source": "metagpt/config.py:Config:max_auto_summarize_code", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:max_auto_summarize_code", "target": "max_auto_summarize_code : int"}, {"predicate": "is", "source": "metagpt/config.py:Config:max_tokens_rsp", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:max_tokens_rsp", "target": "max_tokens_rsp"}, {"predicate": "is", "source": "metagpt/config.py:Config:mermaid_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:mermaid_engine", "target": "mermaid_engine"}, {"predicate": "is", "source": "metagpt/config.py:Config:mmdc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:mmdc", "target": "mmdc"}, {"predicate": "is", "source": "metagpt/config.py:Config:model_for_researcher_report", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:model_for_researcher_report", "target": "model_for_researcher_report"}, {"predicate": "is", "source": "metagpt/config.py:Config:model_for_researcher_summary", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:model_for_researcher_summary", "target": "model_for_researcher_summary"}, {"predicate": "is", "source": "metagpt/config.py:Config:ollama_api_base", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:ollama_api_base", "target": "ollama_api_base"}, {"predicate": "is", "source": "metagpt/config.py:Config:ollama_api_model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:ollama_api_model", "target": "ollama_api_model"}, {"predicate": "is", "source": "metagpt/config.py:Config:open_llm_api_base", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:open_llm_api_base", "target": "open_llm_api_base"}, {"predicate": "is", "source": "metagpt/config.py:Config:open_llm_api_model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:open_llm_api_model", "target": "open_llm_api_model"}, {"predicate": "is", "source": "metagpt/config.py:Config:openai_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:openai_api_key", "target": "openai_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:openai_api_model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:openai_api_model", "target": "openai_api_model"}, {"predicate": "is", "source": "metagpt/config.py:Config:openai_api_rpm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:openai_api_rpm", "target": "openai_api_rpm"}, {"predicate": "is", "source": "metagpt/config.py:Config:openai_api_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:openai_api_type", "target": "openai_api_type"}, {"predicate": "is", "source": "metagpt/config.py:Config:openai_api_version", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:openai_api_version", "target": "openai_api_version"}, {"predicate": "is", "source": "metagpt/config.py:Config:openai_base_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:openai_base_url", "target": "openai_base_url"}, {"predicate": "is", "source": "metagpt/config.py:Config:openai_proxy", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:openai_proxy", "target": "openai_proxy"}, {"predicate": "is", "source": "metagpt/config.py:Config:options", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:options", "target": "options"}, {"predicate": "is", "source": "metagpt/config.py:Config:options", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:playwright_browser_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:playwright_browser_type", "target": "playwright_browser_type"}, {"predicate": "is", "source": "metagpt/config.py:Config:project_name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:project_name", "target": "project_name : str"}, {"predicate": "is", "source": "metagpt/config.py:Config:project_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:project_path", "target": "project_path : str"}, {"predicate": "is", "source": "metagpt/config.py:Config:prompt_schema", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:prompt_schema", "target": "prompt_schema"}, {"predicate": "is", "source": "metagpt/config.py:Config:puppeteer_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:puppeteer_config", "target": "puppeteer_config"}, {"predicate": "is", "source": "metagpt/config.py:Config:pyppeteer_executable_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:pyppeteer_executable_path", "target": "pyppeteer_executable_path"}, {"predicate": "is", "source": "metagpt/config.py:Config:repair_llm_output", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:repair_llm_output", "target": "repair_llm_output"}, {"predicate": "is", "source": "metagpt/config.py:Config:reqa_file", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:reqa_file", "target": "reqa_file : str"}, {"predicate": "is", "source": "metagpt/config.py:Config:search_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:search_engine", "target": "search_engine"}, {"predicate": "is", "source": "metagpt/config.py:Config:selenium_browser_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:selenium_browser_type", "target": "selenium_browser_type"}, {"predicate": "is", "source": "metagpt/config.py:Config:serpapi_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:serpapi_api_key", "target": "serpapi_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:serper_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:serper_api_key", "target": "serper_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:spark_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:spark_api_key", "target": "spark_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:spark_api_secret", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:spark_api_secret", "target": "spark_api_secret"}, {"predicate": "is", "source": "metagpt/config.py:Config:spark_appid", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:spark_appid", "target": "spark_appid"}, {"predicate": "is", "source": "metagpt/config.py:Config:spark_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:spark_url", "target": "spark_url"}, {"predicate": "is", "source": "metagpt/config.py:Config:timeout", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:timeout", "target": "timeout : int"}, {"predicate": "is", "source": "metagpt/config.py:Config:web_browser_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:web_browser_engine", "target": "web_browser_engine"}, {"predicate": "is", "source": "metagpt/config.py:Config:workspace_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:workspace_path", "target": "workspace_path : Path"}, {"predicate": "is", "source": "metagpt/config.py:Config:zhipuai_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:Config:zhipuai_api_key", "target": "zhipuai_api_key"}, {"predicate": "is", "source": "metagpt/config.py:Config:get", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/config.py:Config:get", "target": "get(key)"}, {"predicate": "is", "source": "metagpt/config.py:Config:get_default_llm_provider_enum", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/config.py:Config:get_default_llm_provider_enum", "target": "get_default_llm_provider_enum(): LLMProviderEnum"}, {"predicate": "is", "source": "metagpt/config.py:Config:get_model_name", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/config.py:Config:get_model_name", "target": "get_model_name(provider): str"}, {"predicate": "is", "source": "metagpt/config.py:Config:new_environ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/config.py:Config:new_environ", "target": "new_environ()"}, {"predicate": "is", "source": "metagpt/config.py:Config:set_context", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/config.py:Config:set_context", "target": "set_context(options: dict)"}, {"predicate": "is", "source": "metagpt/config.py:Config:update_via_cli", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/config.py:Config:update_via_cli", "target": "update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:Usage"}, {"predicate": "has_function", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias", "target": "alias : dict"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed", "target": "arbitrary_types_allowed : bool"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed", "target": "arbitrary_types_allowed : bool"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:Costs"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:max_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens"}, {"predicate": "has_class_function", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_costs"}, {"predicate": "has_class_function", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens"}, {"predicate": "has_class_function", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_cost"}, {"predicate": "has_class_function", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens"}, {"predicate": "has_class_function", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:update_cost"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/config.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/config.py:Config:cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"lineno\":24,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"name\":\"CostManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"max_budget\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_budget\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"total_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Costs\"},{\"name\":\"get_total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get_total_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get_total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:max_budget", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:CostManager:max_budget", "target": "max_budget : float"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_budget", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:CostManager:total_budget", "target": "total_budget : float"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens", "target": "total_completion_tokens : int"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_cost", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:CostManager:total_cost", "target": "total_cost : float"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens", "target": "total_prompt_tokens : int"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_costs", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/cost_manager.py:CostManager:get_costs", "target": "get_costs(): Costs"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens", "target": "get_total_completion_tokens()"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_cost", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_cost", "target": "get_total_cost()"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens", "target": "get_total_prompt_tokens()"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:update_cost", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/cost_manager.py:CostManager:update_cost", "target": "update_cost(prompt_tokens, completion_tokens, model)"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Costs\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"name\":\"Costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"total_budget\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"total_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_budget", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:Costs:total_budget", "target": "total_budget : float"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens", "target": "total_completion_tokens : int"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_cost", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:Costs:total_cost", "target": "total_cost : float"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens", "target": "total_prompt_tokens : int"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:CustomDecoder"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:py_make_scanner"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:JSONObject"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:py_scanstring"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once"}, {"predicate": "has_class_function", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:decode"}, {"predicate": "has_class_function", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"lineno\":273,\"end_lineno\":297,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomDecoder\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"name\":\"CustomDecoder\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"parse_object\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parse_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"scan_once\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"decode\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"s\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"_w\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object", "target": "parse_object"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string", "target": "parse_string"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once", "target": "scan_once"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:decode", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:decode", "target": "decode(s, _w)"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/customer_service.py", "target": "metagpt/roles/customer_service.py:CustomerService"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:store"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/sales.py:Sales"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomerService\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"name\":\"CustomerService\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/customer_service.py:CustomerService:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/customer_service.py:CustomerService:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/customer_service.py:CustomerService:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:store", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/customer_service.py:CustomerService:store", "target": "store : Optional[BaseStore]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_ddg.py", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"lineno\":21,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DDGAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"name\":\"DDGAPIWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"ddgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"DDGS \",\"default_value\":\"\"},{\"name\":\"executor\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[True]\",\"default_value\":\"\"},{\"name\":\"focus\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str] \\\\| None\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_search_from_ddgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "ddgs : DDGS"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor", "target": "executor : NoneType"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop", "target": "loop : NoneType"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run", "target": "run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\| None): str"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:_dfs"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DFSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"name\":\"DFSSolver\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"thought_tree\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_dfs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:thought_tree", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:DFSSolver:thought_tree", "target": "thought_tree"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:solve", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:DFSSolver:solve", "target": "solve(init_prompt, root)"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:name"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:url"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataSource\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"name\":\"DataSource\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:url", "target": "url : str"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/debug_error.py", "target": "metagpt/actions/debug_error.py:DebugError"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"lineno\":51,\"end_lineno\":83,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugError\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"name\":\"DebugError\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/debug_error.py:DebugError:context", "target": "context"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/debug_error.py:DebugError:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/debug_error.py:DebugError:run", "target": "run(): str"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/dependency_file.py", "target": "metagpt/utils/dependency_file.py:DependencyFile"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:exists"}, {"predicate": "has_class_function", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:delete_file"}, {"predicate": "has_class_function", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:get"}, {"predicate": "has_class_function", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:load"}, {"predicate": "has_class_function", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:save"}, {"predicate": "has_class_function", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:update"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/git_repository.py:GitRepository:_dependency"}, {"predicate": "has_class_function", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"lineno\":21,\"end_lineno\":102,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DependencyFile\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"name\":\"DependencyFile\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"exists\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Set[Path \\\\| str]\",\"default_value\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "exists"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:delete_file", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/dependency_file.py:DependencyFile:delete_file", "target": "delete_file()"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:get", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/dependency_file.py:DependencyFile:get", "target": "get(filename: Path \\| str, persist)"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:load", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/dependency_file.py:DependencyFile:load", "target": "load()"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:save", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/dependency_file.py:DependencyFile:save", "target": "save()"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:update", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/dependency_file.py:DependencyFile:update", "target": "update(filename: Path \\| str, dependencies: Set[Path \\| str], persist)"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/design_api_review.py", "target": "metagpt/actions/design_api_review.py:DesignReview"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"lineno\":14,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DesignReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"name\":\"DesignReview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prd\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_design\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/design_api_review.py:DesignReview:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/design_api_review.py:DesignReview:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/design_api_review.py:DesignReview:run", "target": "run(prd, api_design)"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/di_graph_repository.py", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:update "}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:upsert "}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:upsert"}, {"predicate": "has_class_function", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:update"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"lineno\":21,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DiGraphRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"name\":\"DiGraphRepository\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"pathname\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"root\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"insert\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"json\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"pathname\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"load_from\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"pathname\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"}],\"return_type\":\"GraphRepository\"},{\"name\":\"save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"select\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"List[SPO]\"},{\"name\":\"update\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"upsert\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"upsert\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "pathname"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "root"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert", "target": "insert(subject: str, predicate: str, object_: str)"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json", "target": "json(): str"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load", "target": "load(pathname: str \\| Path)"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from", "target": "load_from(pathname: str \\| Path): GraphRepository"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save", "target": "save(path: str \\| Path)"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select", "target": "select(subject: str, predicate: str, object_: str): List[SPO]"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:update ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:update ", "target": "update (subject: str, predicate: str, object_: str)"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:upsert ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:upsert ", "target": "upsert (subject: str, predicate: str, object_: str)"}, {"predicate": "is", "source": "metagpt/utils/pycst.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/pycst.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:DocstringCollector"}, {"predicate": "has_class", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:DocstringTransformer"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:get_docstring_statement"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:has_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:merge_docstring"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:docstrings"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:stack"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_Module"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_Module"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:__init__"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:_leave"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"lineno\":60,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringCollector\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"name\":\"DocstringCollector\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"docstrings\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[tuple[str, ...], cst.SimpleStatementLine] \",\"default_value\":\"\"},{\"name\":\"stack\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"leave_ClassDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"leave_FunctionDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"leave_Module\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.Module\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"visit_ClassDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"visit_FunctionDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"visit_Module\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.Module\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_leave\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:docstrings", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/pycst.py:DocstringCollector:docstrings", "target": "docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:stack", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/pycst.py:DocstringCollector:stack", "target": "stack : list[str]"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef", "target": "leave_ClassDef(node: cst.ClassDef): None"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef", "target": "leave_FunctionDef(node: cst.FunctionDef): None"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_Module", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_Module", "target": "leave_Module(node: cst.Module): None"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef", "target": "visit_ClassDef(node: cst.ClassDef): bool \\| None"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef", "target": "visit_FunctionDef(node: cst.FunctionDef): bool \\| None"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_Module", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_Module", "target": "visit_Module(node: cst.Module): bool \\| None"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:docstrings"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:stack"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:__init__"}, {"predicate": "has_class_function", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:_leave"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"lineno\":101,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringTransformer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"name\":\"DocstringTransformer\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"docstrings\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[tuple[str, ...], cst.SimpleStatementLine] \",\"default_value\":\"\"},{\"name\":\"stack\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"leave_ClassDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"original_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"},{\"name\":\"updated_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"}],\"return_type\":\"cst.CSTNode\"},{\"name\":\"leave_FunctionDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"original_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"},{\"name\":\"updated_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"}],\"return_type\":\"cst.CSTNode\"},{\"name\":\"leave_Module\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"original_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Module\",\"default_value\":\"\"},{\"name\":\"updated_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Module\",\"default_value\":\"\"}],\"return_type\":\"Module\"},{\"name\":\"visit_ClassDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.ClassDef\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"visit_FunctionDef\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.FunctionDef\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"visit_Module\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"cst.Module\",\"default_value\":\"\"}],\"return_type\":\"bool \\\\| None\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_leave\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:docstrings", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/pycst.py:DocstringTransformer:docstrings", "target": "docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:stack", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/pycst.py:DocstringTransformer:stack", "target": "stack : list[str]"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef", "target": "leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef", "target": "leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module", "target": "leave_Module(original_node: Module, updated_node: Module): Module"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef", "target": "visit_ClassDef(node: cst.ClassDef): bool \\| None"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef", "target": "visit_FunctionDef(node: cst.FunctionDef): bool \\| None"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module", "target": "visit_Module(node: cst.Module): bool \\| None"}, {"predicate": "is", "source": "metagpt/document.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:Document"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:DocumentStatus"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:IndexableDocument"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:Repo"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:RepoMetadata"}, {"predicate": "has_function", "source": "metagpt/document.py", "target": "metagpt/document.py:validate_cols"}, {"predicate": "has_function", "source": "metagpt/document.py", "target": "metagpt/document.py:read_data"}, {"predicate": "is", "source": "metagpt/document.py:Document", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:author"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:content"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:path"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:reviews"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:status"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:from_path"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:from_text"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:persist"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:to_path"}, {"predicate": "has_page_info", "source": "metagpt/document.py:Document", "target": "{\"lineno\":62,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:Document", "target": "{\"name\":\"Document\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"author\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"},{\"name\":\"reviews\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"},{\"name\":\"status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"from_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"from_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"to_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:author", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Document:author", "target": "author : str"}, {"predicate": "is", "source": "metagpt/document.py:Document:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Document:content", "target": "content : str"}, {"predicate": "is", "source": "metagpt/document.py:Document:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Document:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/document.py:Document:path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Document:path", "target": "path : Path"}, {"predicate": "is", "source": "metagpt/document.py:Document:reviews", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Document:reviews", "target": "reviews : list"}, {"predicate": "is", "source": "metagpt/document.py:Document:status", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Document:status", "target": "status"}, {"predicate": "is", "source": "metagpt/document.py:Document:from_path", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Document:from_path", "target": "from_path(path: Path)"}, {"predicate": "is", "source": "metagpt/document.py:Document:from_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Document:from_text", "target": "from_text(text: str, path: Optional[Path])"}, {"predicate": "is", "source": "metagpt/document.py:Document:persist", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Document:persist", "target": "persist()"}, {"predicate": "is", "source": "metagpt/document.py:Document:to_path", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Document:to_path", "target": "to_path(path: Optional[Path])"}, {"predicate": "is", "source": "metagpt/schema.py:Document", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:filename"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:full_path"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:root_path"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:root_relative_path"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:get_meta"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/actions/write_code.py:WriteCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/actions/write_code.py:WriteCode:context"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:CodingContext:code_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:TestingContext:code_doc"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:__str__"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Document", "target": "{\"lineno\":129,\"end_lineno\":164,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Document", "target": "{\"name\":\"Document\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"root_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"full_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"root_relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get_meta\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Document\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Document:content", "target": "content : str"}, {"predicate": "is", "source": "metagpt/schema.py:Document:filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Document:filename", "target": "filename : str"}, {"predicate": "is", "source": "metagpt/schema.py:Document:full_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Document:full_path", "target": "full_path"}, {"predicate": "is", "source": "metagpt/schema.py:Document:full_path", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Document:root_path", "target": "root_path : str"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_relative_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Document:root_relative_path", "target": "root_relative_path"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_relative_path", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:Document:get_meta", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Document:get_meta", "target": "get_meta(): Document"}, {"predicate": "is", "source": "metagpt/document.py:DocumentStatus", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:DocumentStatus:name"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:Document"}, {"predicate": "isCompositeOn", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:Document:status"}, {"predicate": "has_page_info", "source": "metagpt/document.py:DocumentStatus", "target": "{\"lineno\":53,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocumentStatus\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:DocumentStatus", "target": "{\"name\":\"DocumentStatus\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:DocumentStatus:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:DocumentStatus:name", "target": "name"}, {"predicate": "is", "source": "metagpt/schema.py:Documents", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:docs"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Documents", "target": "{\"lineno\":167,\"end_lineno\":174,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Documents\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Documents", "target": "{\"name\":\"Documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"docs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict[str, Document] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:docs", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Documents:docs", "target": "docs : Dict[str, Document]"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:index"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:object"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"lineno\":20,\"end_lineno\":27,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Embedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"name\":\"Embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[float] \",\"default_value\":\"\"},{\"name\":\"index\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"object\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding", "target": "embedding : List[float]"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:index", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:index", "target": "index : int"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:object", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:object", "target": "object : str"}, {"predicate": "is", "source": "metagpt/roles/engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/engineer.py", "target": "metagpt/roles/engineer.py:Engineer"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:code_todos"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:n_borg"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:next_todo_action"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:summarize_todos"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:todo"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:use_code_review"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_parse_tasks"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_write_code"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_summarize"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_is_pass"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_think"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_coding_context"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_coding_doc"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_code_actions"}, {"predicate": "has_class_function", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"lineno\":58,\"end_lineno\":321,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Engineer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"name\":\"Engineer\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"code_todos\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"},{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"n_borg\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"next_todo_action\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"summarize_todos\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"},{\"name\":\"use_code_review\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"todo\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_tasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_sp_with_cr\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_write_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_summarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_is_pass\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_new_coding_context\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_new_coding_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_new_code_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_new_summarize_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:code_todos", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:code_todos", "target": "code_todos : list"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:n_borg", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:n_borg", "target": "n_borg : int"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:next_todo_action", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:next_todo_action", "target": "next_todo_action : str"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:summarize_todos", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:summarize_todos", "target": "summarize_todos : list"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:todo", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:todo", "target": "todo"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:todo", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:use_code_review", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/engineer.py:Engineer:use_code_review", "target": "use_code_review : bool"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "metagpt/tools/prompt_writer.py:EnronTemplate:gen"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"lineno\":77,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnronTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"name\":\"EnronTemplate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"gen\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subj\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:gen", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:gen", "target": "gen(subj)"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Entity:name"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Entity:skills"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"lineno\":53,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Entity\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"name\":\"Entity\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"skills\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Skill] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Entity:name", "target": "name : Optional[str]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity:skills", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Entity:skills", "target": "skills : List[Skill]"}, {"predicate": "is", "source": "metagpt/environment.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment.py", "target": "metagpt/environment.py:Environment"}, {"predicate": "is", "source": "metagpt/environment.py:Environment", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:desc"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:history"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:is_idle"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:members"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:model_config"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:roles"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:add_role"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:add_roles"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:archive"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:deserialize"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_role"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_roles"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_subscription"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:init_roles"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:publish_message"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:role_names"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:run"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:serialize"}, {"predicate": "has_class_function", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:set_subscription"}, {"predicate": "isCompositeOf", "source": "metagpt/environment.py:Environment", "target": "metagpt/team.py:Team"}, {"predicate": "isCompositeOn", "source": "metagpt/environment.py:Environment", "target": "metagpt/team.py:Team:env"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:Environment", "target": "{\"lineno\":27,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Environment\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment.py:Environment", "target": "{\"name\":\"Environment\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"history\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"members\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Role, Set] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[str, SerializeAsAny[Role]] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"is_idle\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add_role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Role\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Iterable[Role]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"archive\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"auto_archive\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"deserialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"Environment\"},{\"name\":\"get_role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Role\"},{\"name\":\"get_roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict[str, Role]\"},{\"name\":\"get_subscription\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"obj\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"init_roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"publish_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"},{\"name\":\"peekable\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"role_names\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"list[str]\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"serialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_subscription\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"obj\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tags\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/environment.py:Environment:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:history", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/environment.py:Environment:history", "target": "history : str"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:is_idle", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/environment.py:Environment:is_idle", "target": "is_idle"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:is_idle", "target": "class_function"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:members", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/environment.py:Environment:members", "target": "members : dict[Role, Set]"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/environment.py:Environment:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:roles", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/environment.py:Environment:roles", "target": "roles : dict[str, SerializeAsAny[Role]]"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:add_role", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:add_role", "target": "add_role(role: Role)"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:add_roles", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:add_roles", "target": "add_roles(roles: Iterable[Role])"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:archive", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:archive", "target": "archive(auto_archive)"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:deserialize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:deserialize", "target": "deserialize(stg_path: Path): 'Environment'"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_role", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:get_role", "target": "get_role(name: str): Role"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_roles", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:get_roles", "target": "get_roles(): dict[str, Role]"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_subscription", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:get_subscription", "target": "get_subscription(obj)"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:init_roles", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:init_roles", "target": "init_roles()"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:publish_message", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:publish_message", "target": "publish_message(message: Message, peekable: bool): bool"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:role_names", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:role_names", "target": "role_names(): list[str]"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:run", "target": "run(k)"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:serialize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:serialize", "target": "serialize(stg_path: Path)"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:set_subscription", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/environment.py:Environment:set_subscription", "target": "set_subscription(obj, tags)"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Example", "target": "metagpt/learn/skill_loader.py:Example:answer"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Example", "target": "metagpt/learn/skill_loader.py:Example:ask"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"lineno\":19,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Example\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"name\":\"Example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"answer\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"ask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example:answer", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Example:answer", "target": "answer : str"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example:ask", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Example:ask", "target": "ask : str"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/execute_task.py", "target": "metagpt/actions/execute_task.py:ExecuteTask"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:run "}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:run"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteTask\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"name\":\"ExecuteTask\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[Message] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/execute_task.py:ExecuteTask:context", "target": "context : list[Message]"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/execute_task.py:ExecuteTask:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:run ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/execute_task.py:ExecuteTask:run ", "target": "run ()"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/faiss_store.py", "target": "metagpt/document_store/faiss_store.py:FaissStore"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:content_col"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:embedding"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:meta_col"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:store"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:add"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:asearch"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:delete "}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:persist"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:search"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:write"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/base_store.py:LocalStore"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:__init__"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:_load"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:_write"}, {"predicate": "has_class_function", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:delete"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"lineno\":22,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FaissStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"name\":\"FaissStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings \",\"default_value\":\"\"},{\"name\":\"meta_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"texts\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"return_type\":\"list[str]\"},{\"name\":\"asearch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expand_cols\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sep\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_load\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_write\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:content_col", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:content_col", "target": "content_col : str"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:embedding", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:embedding", "target": "embedding : OpenAIEmbeddings"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:meta_col", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:meta_col", "target": "meta_col : str"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:store", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:store", "target": "store"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:add", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:add", "target": "add(texts: list[str]): list[str]"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:asearch", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:asearch", "target": "asearch()"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete ", "target": "delete ()"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:persist", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:persist", "target": "persist()"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:search", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:search", "target": "search(query, expand_cols, sep)"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:write", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/faiss_store.py:FaissStore:write", "target": "write()"}, {"predicate": "is", "source": "metagpt/utils/file.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/file.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/file.py", "target": "metagpt/utils/file.py:File"}, {"predicate": "is", "source": "metagpt/utils/file.py:File", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:CHUNK_SIZE"}, {"predicate": "has_class_function", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:read"}, {"predicate": "has_class_function", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:write"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:File", "target": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"File\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/file.py:File", "target": "{\"name\":\"File\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"CHUNK_SIZE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"read\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"file_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"chunk_size\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"bytes\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"root_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bytes\",\"default_value\":\"\"}],\"return_type\":\"Path\"}]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:CHUNK_SIZE", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/file.py:File:CHUNK_SIZE", "target": "CHUNK_SIZE : int"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:read", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file.py:File:read", "target": "read(file_path: Path, chunk_size: int): bytes"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:write", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file.py:File:write", "target": "write(root_path: Path, filename: str, content: bytes): Path"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/file_repository.py", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:all_files"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:changed_files"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:root_path"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:workdir"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:delete"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:delete_file"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_all"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_all_files"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_dependency"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_file"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:new_filename"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_as"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_doc"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_file"}, {"predicate": "has_class_function", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"lineno\":26,\"end_lineno\":290,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FileRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"name\":\"FileRepository\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"all_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"changed_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"root_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"workdir\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"Document \\\\| None\"},{\"name\":\"get_all\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"List[Document]\"},{\"name\":\"get_all_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"List[Document]\"},{\"name\":\"get_change_dir_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"dir\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"List\"},{\"name\":\"get_changed_dependency\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"Set[str]\"},{\"name\":\"get_dependency\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"Set[str]\"},{\"name\":\"get_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"Document \\\\| None\"},{\"name\":\"new_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"save_as\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Document\",\"default_value\":\"\"},{\"name\":\"with_suffix\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"save_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Document\",\"default_value\":\"\"},{\"name\":\"with_suffix\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"save_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "all_files"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "changed_files"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "root_path"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "workdir"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:delete", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:delete", "target": "delete(filename: Path \\| str)"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:delete_file", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:delete_file", "target": "delete_file(filename: Path \\| str, relative_path: Path \\| str)"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:get", "target": "get(filename: Path \\| str): Document \\| None"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_all", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:get_all", "target": "get_all(): List[Document]"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_all_files", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:get_all_files", "target": "get_all_files(relative_path: Path \\| str): List[Document]"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files", "target": "get_change_dir_files(dir: Path \\| str): List"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency", "target": "get_changed_dependency(filename: Path \\| str): Set[str]"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_dependency", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:get_dependency", "target": "get_dependency(filename: Path \\| str): Set[str]"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_file", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:get_file", "target": "get_file(filename: Path \\| str, relative_path: Path \\| str): Document \\| None"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:new_filename", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:new_filename", "target": "new_filename()"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:save", "target": "save(filename: Path \\| str, content, dependencies: List[str])"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_as", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:save_as", "target": "save_as(doc: Document, with_suffix: str, dependencies: List[str], relative_path: Path \\| str)"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_doc", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:save_doc", "target": "save_doc(doc: Document, with_suffix: str, dependencies: List[str])"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_file", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/file_repository.py:FileRepository:save_file", "target": "save_file(filename: Path \\| str, content, dependencies: List[str], relative_path: Path \\| str)"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/fireworks_api.py", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager"}, {"predicate": "has_class", "source": "metagpt/provider/fireworks_api.py", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"lineno\":32,\"end_lineno\":72,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"name\":\"FireworksCostManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"total_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"model_grade_token_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict[str, float]\"},{\"name\":\"update_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens", "target": "total_completion_tokens : int"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost", "target": "total_cost"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens", "target": "total_prompt_tokens : int"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs", "target": "model_grade_token_costs(model: str): dict[str, float]"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost", "target": "update_cost(prompt_tokens: int, completion_tokens: int, model: str)"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:is_azure"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:rpm"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:__init_fireworks"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs"}, {"predicate": "has_class_function", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"lineno\":76,\"end_lineno\":140,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"name\":\"FireworksLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_azure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rpm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Costs\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_fireworks\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_make_client_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens", "target": "auto_max_tokens : bool"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:config", "target": "config"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:is_azure", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:is_azure", "target": "is_azure : bool"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:model", "target": "model"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:rpm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:rpm", "target": "rpm : int"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text", "target": "acompletion_text(messages: list[dict], stream, timeout: int): str"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs", "target": "get_costs(): Costs"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/fix_bug.py", "target": "metagpt/actions/fix_bug.py:FixBug"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "metagpt/actions/fix_bug.py:FixBug:name"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FixBug\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"name\":\"FixBug\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py:FixBug:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/fix_bug.py:FixBug:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTPromptGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"name\":\"GPTPromptGenerator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"gen\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Union[list[str], str]\"},{\"name\":\"gen_chatbot_style\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"gen_instruction_style\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"gen_query_style\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"example\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen", "target": "gen(example: str, style: str): Union[list[str], str]"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style", "target": "gen_chatbot_style(example)"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style", "target": "gen_instruction_style(example)"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style", "target": "gen_query_style(example)"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/google_gemini_api.py", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel"}, {"predicate": "has_class", "source": "metagpt/provider/google_gemini_api.py", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"lineno\":29,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiGenerativeModel\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"name\":\"GeminiGenerativeModel\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"count_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"contents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"content_types.ContentsType\",\"default_value\":\"\"}],\"return_type\":\"glm.CountTokensResponse\"},{\"name\":\"count_tokens_async\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"contents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"content_types.ContentsType\",\"default_value\":\"\"}],\"return_type\":\"glm.CountTokensResponse\"}]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens", "target": "count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async", "target": "count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion"}, {"predicate": "has_class_function", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"lineno\":45,\"end_lineno\":141,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"name\":\"GeminiLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"aget_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"resp_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"return_type\":\"GenerateContentResponse\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"resp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"GenerateContentResponse\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"resp_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_gemini\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_user_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_assistant_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_const_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:model", "target": "model : str"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt", "target": "use_system_prompt : bool"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion", "target": "acompletion(messages: list[dict]): dict"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text", "target": "acompletion_text(messages: list[dict], stream, timeout: int): str"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage", "target": "aget_usage(messages: list[dict], resp_text: str): dict"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion", "target": "completion(messages: list[dict]): 'GenerateContentResponse'"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text", "target": "get_choice_text(resp: GenerateContentResponse): str"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage", "target": "get_usage(messages: list[dict], resp_text: str): dict"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:parse_stream_helper"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:parse_stream"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "class"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"lineno\":38,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralAPIRequestor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"name\":\"GeneralAPIRequestor\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"_interpret_response_line\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_interpret_async_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/generate_questions.py", "target": "metagpt/actions/generate_questions.py:GenerateQuestions"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/generate_questions.py:GenerateQuestions:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/generate_questions.py:GenerateQuestions:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"lineno\":20,\"end_lineno\":27,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateQuestions\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"name\":\"GenerateQuestions\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:run", "target": "run(context)"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"lineno\":123,\"end_lineno\":165,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateTable\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"name\":\"GenerateTable\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ocr_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict[str, str]\"}]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:language", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:language", "target": "language : str"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:run", "target": "run(ocr_results: list, filename: str): dict[str, str]"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:SparkLLM"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:text"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close "}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:run"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:send"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"lineno\":45,\"end_lineno\":167,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GetMessageFromWeb\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"name\":\"GetMessageFromWeb\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"domain\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ret\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"gen_params\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"on_close\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"one\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"two\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"on_error\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"error\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"on_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"on_open\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"send\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ws\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"on_close\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain", "target": "domain"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret", "target": "ret : str"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key", "target": "spark_api_key"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret", "target": "spark_api_secret"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid", "target": "spark_appid"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url", "target": "spark_url"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:text", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:text", "target": "text"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params", "target": "gen_params()"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close ", "target": "on_close (ws, one, two)"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error", "target": "on_error(ws, error)"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message", "target": "on_message(ws, message)"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open", "target": "on_open(ws)"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:run", "target": "run()"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:send", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:send", "target": "send(ws)"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:changed_files"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:is_valid"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:status"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:workdir"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:add_change"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:archive"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:commit"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:delete_repository"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:get_dependency"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:get_files"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:is_git_dir"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:new_file_repository"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:open"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:rename_root"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:__init__"}, {"predicate": "has_class_function", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:_init"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"lineno\":35,\"end_lineno\":272,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GitRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"name\":\"GitRepository\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"changed_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_valid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"workdir\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add_change\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"files\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"archive\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"comments\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"commit\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"comments\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete_repository\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"filter_gitignore\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filenames\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"List[str]\"},{\"name\":\"get_dependency\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"DependencyFile\"},{\"name\":\"get_files\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"},{\"name\":\"filter_ignored\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"List\"},{\"name\":\"is_git_dir\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"local_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"new_file_repository\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"relative_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path \\\\| str\",\"default_value\":\"\"}],\"return_type\":\"FileRepository\"},{\"name\":\"open\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"local_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"auto_init\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"rename_root\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"new_dir_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "changed_files"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "is_valid"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "status"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "workdir"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:add_change", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:add_change", "target": "add_change(files: Dict)"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:archive", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:archive", "target": "archive(comments)"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:commit", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:commit", "target": "commit(comments)"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:delete_repository", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:delete_repository", "target": "delete_repository()"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore", "target": "filter_gitignore(filenames: List[str], root_relative_path: Path \\| str): List[str]"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:get_dependency", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:get_dependency", "target": "get_dependency(): DependencyFile"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:get_files", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:get_files", "target": "get_files(relative_path: Path \\| str, root_relative_path: Path \\| str, filter_ignored): List"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_git_dir", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:is_git_dir", "target": "is_git_dir(local_path)"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:new_file_repository", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:new_file_repository", "target": "new_file_repository(relative_path: Path \\| str): FileRepository"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:open", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:open", "target": "open(local_path: Path, auto_init)"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:rename_root", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/git_repository.py:GitRepository:rename_root", "target": "rename_root(new_dir_name)"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_googleapi.py", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper"}, {"predicate": "has_function", "source": "metagpt/tools/search_engine_googleapi.py", "target": "metagpt/tools/search_engine_googleapi.py:safe_google_results"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"lineno\":27,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"name\":\"GoogleAPIWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"executor\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor] \",\"default_value\":\"\"},{\"name\":\"google_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"google_cse_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"loop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"google_api_client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"check_google_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"check_google_cse_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"focus\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str] \\\\| None\",\"default_value\":\"\"}],\"return_type\":\"str \\\\| list[dict]\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor", "target": "executor : Optional[futures.Executor]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "google_api_client"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key", "target": "google_api_key : Optional[str]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id", "target": "google_cse_id : Optional[str]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop", "target": "loop : Optional[asyncio.AbstractEventLoop]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key", "target": "check_google_api_key(val: str)"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id", "target": "check_google_cse_id(val: str)"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run", "target": "run(query: str, max_results: int, as_string: bool, focus: list[str] \\| None): str \\| list[dict]"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:GraphKeyword"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:SPO"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_ARGS_DESC"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_TYPE_DESC"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:NULL"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:ON"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"lineno\":21,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphKeyword\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"name\":\"GraphKeyword\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"CLASS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"CLASS_FUNCTION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"CLASS_PROPERTY\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"FUNCTION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"GLOBAL_VARIABLE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_ARGS_DESC\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_CLASS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_FUNCTION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_PROPERTY\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_VIEW\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_FUNCTION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_PAGE_INFO\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"HAS_TYPE_DESC\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"IS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"NULL\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"OF\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"ON\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"SOURCE_CODE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS", "target": "CLASS : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_FUNCTION", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_FUNCTION", "target": "CLASS_FUNCTION : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY", "target": "CLASS_PROPERTY : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION", "target": "FUNCTION : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE", "target": "GLOBAL_VARIABLE : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_ARGS_DESC", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_ARGS_DESC", "target": "HAS_ARGS_DESC : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS", "target": "HAS_CLASS : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_FUNCTION", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_FUNCTION", "target": "HAS_CLASS_FUNCTION : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY", "target": "HAS_CLASS_PROPERTY : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW", "target": "HAS_CLASS_VIEW : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION", "target": "HAS_FUNCTION : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO", "target": "HAS_PAGE_INFO : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW", "target": "HAS_SEQUENCE_VIEW : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_TYPE_DESC", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_TYPE_DESC", "target": "HAS_TYPE_DESC : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS", "target": "IS : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:NULL", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:NULL", "target": "NULL : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:OF", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:OF", "target": "OF : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:ON", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:ON", "target": "ON : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE", "target": "SOURCE_CODE : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:name"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:insert "}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:select "}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update "}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:upsert "}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:__init__"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:insert"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:upsert"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update"}, {"predicate": "has_class_function", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:select"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"lineno\":49,\"end_lineno\":200,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"name\":\"GraphRepository\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"insert\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"select\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"List[SPO]\"},{\"name\":\"update\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_graph_db_with_class_relationship_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"graph_db\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"GraphRepository\",\"default_value\":\"\"},{\"name\":\"relationship_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ClassRelationship]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_graph_db_with_class_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"graph_db\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"GraphRepository\",\"default_value\":\"\"},{\"name\":\"class_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ClassInfo]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_graph_db_with_file_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"graph_db\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"GraphRepository\",\"default_value\":\"\"},{\"name\":\"file_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"RepoFileInfo\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"upsert\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"insert\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"upsert\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"select\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "name"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert ", "target": "insert (subject: str, predicate: str, object_: str)"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:select ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/graph_repository.py:GraphRepository:select ", "target": "select (subject: str, predicate: str, object_: str): List[SPO]"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/graph_repository.py:GraphRepository:update ", "target": "update (subject: str, predicate: str, object_: str)"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views", "target": "update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[ClassRelationship])"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views", "target": "update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[ClassInfo])"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info", "target": "update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:upsert ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/graph_repository.py:GraphRepository:upsert ", "target": "upsert (subject: str, predicate: str, object_: str)"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/human_provider.py", "target": "metagpt/provider/human_provider.py:HumanProvider"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:aask"}, {"predicate": "has_class_function", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:acompletion"}, {"predicate": "has_class_function", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:ask"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"lineno\":12,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanProvider\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"name\":\"HumanProvider\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"aask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"system_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[list[str]]\",\"default_value\":\"\"},{\"name\":\"format_msgs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[list[dict[str, str]]]\",\"default_value\":\"\"},{\"name\":\"generator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"ask\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:aask", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/human_provider.py:HumanProvider:aask", "target": "aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion", "target": "acompletion(messages: list[dict], timeout)"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text", "target": "acompletion_text(messages: list[dict], stream, timeout): str"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:ask", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/human_provider.py:HumanProvider:ask", "target": "ask(msg: str, timeout): str"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id"}, {"predicate": "has_class_function", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech"}, {"predicate": "has_class_function", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__"}, {"predicate": "has_class_function", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"lineno\":52,\"end_lineno\":114,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTS\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"name\":\"IFlyTekTTS\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"app_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"synthesize_speech\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"output_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"voice\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_create_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key", "target": "api_key"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret", "target": "api_secret"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id", "target": "app_id"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech", "target": "synthesize_speech(text, output_file: str, voice)"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"lineno\":42,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSResponse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"name\":\"IFlyTekTTSResponse\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[AudioData] \",\"default_value\":\"\"},{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"sid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code", "target": "code : int"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data", "target": "data : Optional[AudioData]"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message", "target": "message : str"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid", "target": "sid : str"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSStatus\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"name\":\"IFlyTekTTSStatus\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name", "target": "name"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult"}, {"predicate": "has_class", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image"}, {"predicate": "has_function", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images", "target": "images : List"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters", "target": "parameters : Dict"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:content_col"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:data"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:meta_col"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:model_config"}, {"predicate": "has_class_function", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:from_path"}, {"predicate": "has_class_function", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:Document"}, {"predicate": "has_class_function", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df"}, {"predicate": "has_class_function", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain"}, {"predicate": "has_page_info", "source": "metagpt/document.py:IndexableDocument", "target": "{\"lineno\":114,\"end_lineno\":161,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IndexableDocument\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:IndexableDocument", "target": "{\"name\":\"IndexableDocument\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Union[pd.DataFrame, list] \",\"default_value\":\"\"},{\"name\":\"meta_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"from_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"content_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_docs_and_metadatas\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Tuple[list, list]\"},{\"name\":\"_get_docs_and_metadatas_by_df\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_docs_and_metadatas_by_langchain\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:content_col", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:IndexableDocument:content_col", "target": "content_col : Optional[str]"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:data", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:IndexableDocument:data", "target": "data : Union[pd.DataFrame, list]"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:meta_col", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:IndexableDocument:meta_col", "target": "meta_col : Optional[str]"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:IndexableDocument:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:from_path", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:IndexableDocument:from_path", "target": "from_path(data_path: Path, content_col, meta_col)"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas", "target": "get_docs_and_metadatas(): (list, list)"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:OCRResults"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:ReplyData"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"name\":\"InvoiceData\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"invoice_data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[dict] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data", "target": "invoice_data : list[dict]"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type"}, {"predicate": "has_class_function", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip"}, {"predicate": "has_class_function", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"lineno\":34,\"end_lineno\":120,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCR\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"name\":\"InvoiceOCR\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"file_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"list\"},{\"name\":\"_check_file_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_unzip\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_ocr\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run", "target": "run(file_path: Path): list"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"lineno\":39,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCRAssistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"name\":\"InvoiceOCRAssistant\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"orc_data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[list] \",\"default_value\":\"\"},{\"name\":\"origin_query\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename", "target": "filename : str"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language", "target": "language : str"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data", "target": "orc_data : Optional[list]"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query", "target": "origin_query : str"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"lineno\":23,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoicePath\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"name\":\"InvoicePath\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"file_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path", "target": "file_path : Path"}, {"predicate": "is", "source": "metagpt/config.py:LLMProviderEnum", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/config.py:LLMProviderEnum", "target": "metagpt/config.py:LLMProviderEnum:name"}, {"predicate": "has_class_function", "source": "metagpt/config.py:LLMProviderEnum", "target": "metagpt/config.py:LLMProviderEnum:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/config.py:LLMProviderEnum", "target": "{\"lineno\":41,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderEnum\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config.py:LLMProviderEnum", "target": "{\"name\":\"LLMProviderEnum\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__missing__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/config.py:LLMProviderEnum:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:LLMProviderEnum:name", "target": "name"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry"}, {"predicate": "has_function", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:register_provider"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers"}, {"predicate": "has_class_function", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider"}, {"predicate": "has_class_function", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register"}, {"predicate": "has_class_function", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderRegistry\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"name\":\"LLMProviderRegistry\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"providers\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_provider\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"enum\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"LLMProviderEnum\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"register\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"provider_cls\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers", "target": "providers : dict"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider", "target": "get_provider(enum: LLMProviderEnum)"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register", "target": "register(key, provider_cls)"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/lancedb_store.py", "target": "metagpt/document_store/lancedb_store.py:LanceStore"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:db"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:name"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:table"}, {"predicate": "has_class_function", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:add"}, {"predicate": "has_class_function", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:delete"}, {"predicate": "has_class_function", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:drop"}, {"predicate": "has_class_function", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:persist "}, {"predicate": "has_class_function", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:search"}, {"predicate": "has_class_function", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:write"}, {"predicate": "has_class_function", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:__init__"}, {"predicate": "has_class_function", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:persist"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"lineno\":14,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LanceStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"name\":\"LanceStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"db\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"LanceDBConnection, RemoteDBConnection \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"table\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"LanceTable, NoneType, RemoteTable \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadata\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"drop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"n_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metric\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"nprobes\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"metadatas\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ids\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:db", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:db", "target": "db : LanceDBConnection, RemoteDBConnection"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:name", "target": "name"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:table", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:table", "target": "table : LanceTable, NoneType, RemoteTable"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:add", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:add", "target": "add(data, metadata, _id)"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:delete", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:delete", "target": "delete(_id)"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:drop", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:drop", "target": "drop(name)"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist ", "target": "persist ()"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:search", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:search", "target": "search(query, n_results, metric, nprobes)"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:write", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/lancedb_store.py:LanceStore:write", "target": "write(data, metadatas, ids)"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:cache_dir"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:config"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:fname"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:raw_data_path"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:store"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:__init__"}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname"}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_load"}, {"predicate": "has_class_function", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"lineno\":30,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LocalStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"name\":\"LocalStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"cache_dir\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Path] \",\"default_value\":\"\"},{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"fname\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"raw_data_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_index_and_store_fname\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_load\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_write\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:cache_dir", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/base_store.py:LocalStore:cache_dir", "target": "cache_dir : Optional[Path]"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/base_store.py:LocalStore:config", "target": "config"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:fname", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/base_store.py:LocalStore:fname", "target": "fname"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:raw_data_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/base_store.py:LocalStore:raw_data_path", "target": "raw_data_path : Path"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:store", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/base_store.py:LocalStore:store", "target": "store"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/longterm_memory.py", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"predicate": "has_class_function", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:add"}, {"predicate": "has_class_function", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:clear"}, {"predicate": "has_class_function", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:delete"}, {"predicate": "has_class_function", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news"}, {"predicate": "has_class_function", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory"}, {"predicate": "isGeneralizeOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/memory.py:Memory"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"lineno\":19,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LongTermMemory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"name\":\"LongTermMemory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"memory_storage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_from_recover\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"rc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[RoleContext] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"clear\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"find_news\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"observed\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"recover_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"RoleContext\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage", "target": "memory_storage"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover", "target": "msg_from_recover : bool"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:rc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:rc", "target": "rc : Optional[RoleContext]"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:add", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:add", "target": "add(message: Message)"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:clear", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:clear", "target": "clear()"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:delete", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:delete", "target": "delete(message: Message)"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news", "target": "find_news(observed: list[Message], k): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory", "target": "recover_memory(role_id: str, rc: RoleContext)"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:MCTSSolver:solve "}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:MCTSSolver:solve"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"lineno\":230,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MCTSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"name\":\"MCTSSolver\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"solve\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver:solve ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:MCTSSolver:solve ", "target": "solve (init_prompt)"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"lineno\":23,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MeilisearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"name\":\"MeilisearchEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Client \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add_documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data_source\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"DataSource\",\"default_value\":\"\"},{\"name\":\"documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[dict]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_index\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"index\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client", "target": "client : Client"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents", "target": "add_documents(data_source: DataSource, documents: List[dict])"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search", "target": "search(query)"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index", "target": "set_index(index)"}, {"predicate": "is", "source": "metagpt/memory/memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/memory.py", "target": "metagpt/memory/memory.py:Memory"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:ignore_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:index"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:storage"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:add"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:add_batch"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:clear"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:count"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:delete"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:delete_newest"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:deserialize"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:find_news"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_action"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_actions"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_content"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_role"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:serialize"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:try_remember"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext:memory"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:Memory", "target": "{\"lineno\":25,\"end_lineno\":128,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Memory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/memory.py:Memory", "target": "{\"name\":\"Memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"ignore_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"index\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"DefaultDict[str, list[SerializeAsAny[Message]]] \",\"default_value\":\"\"},{\"name\":\"storage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Message]] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"add_batch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Iterable[Message]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"clear\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"count\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"int\"},{\"name\":\"delete\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete_newest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"deserialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"Memory\"},{\"name\":\"find_news\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"observed\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get_by_action\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"action\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get_by_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Set\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get_by_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"get_by_role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"serialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"try_remember\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"keyword\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"}]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:ignore_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory.py:Memory:ignore_id", "target": "ignore_id : bool"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:index", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory.py:Memory:index", "target": "index : DefaultDict[str, list[SerializeAsAny[Message]]]"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:storage", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory.py:Memory:storage", "target": "storage : list[SerializeAsAny[Message]]"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:add", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:add", "target": "add(message: Message)"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:add_batch", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:add_batch", "target": "add_batch(messages: Iterable[Message])"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:clear", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:clear", "target": "clear()"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:count", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:count", "target": "count(): int"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:delete", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:delete", "target": "delete(message: Message)"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:delete_newest", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:delete_newest", "target": "delete_newest(): 'Message'"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:deserialize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:deserialize", "target": "deserialize(stg_path: Path): 'Memory'"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:find_news", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:find_news", "target": "find_news(observed: list[Message], k): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:get", "target": "get(k): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_action", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:get_by_action", "target": "get_by_action(action): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_actions", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:get_by_actions", "target": "get_by_actions(actions: Set): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_content", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:get_by_content", "target": "get_by_content(content: str): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_role", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:get_by_role", "target": "get_by_role(role: str): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:serialize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:serialize", "target": "serialize(stg_path: Path)"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:try_remember", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory.py:Memory:try_remember", "target": "try_remember(keyword: str): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/memory_storage.py", "target": "metagpt/memory/memory_storage.py:MemoryStorage"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:embedding"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:role_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:store"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:threshold"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:add"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:clean"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:persist"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar"}, {"predicate": "isGeneralizeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/document_store/faiss_store.py:FaissStore"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:__init__"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:_load"}, {"predicate": "has_class_function", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"lineno\":22,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MemoryStorage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"name\":\"MemoryStorage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings \",\"default_value\":\"\"},{\"name\":\"mem_ttl\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"role_mem_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str], Path \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"NoneType, Optional[FAISS] \",\"default_value\":\"\"},{\"name\":\"threshold\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"is_initialized\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"clean\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"persist\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"recover_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"search_dissimilar\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"},{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_load\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_index_and_store_fname\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:embedding", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:embedding", "target": "embedding : OpenAIEmbeddings"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "is_initialized"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl", "target": "mem_ttl : int"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_id", "target": "role_id : Optional[str]"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path", "target": "role_mem_path : Optional[str], Path"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:store", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:store", "target": "store : NoneType, Optional[FAISS]"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:threshold", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:threshold", "target": "threshold : float"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:add", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:add", "target": "add(message: Message): bool"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:clean", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:clean", "target": "clean()"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:persist", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:persist", "target": "persist()"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory", "target": "recover_memory(role_id: str): list[Message]"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar", "target": "search_dissimilar(message: Message, k): list[Message]"}, {"predicate": "is", "source": "metagpt/schema.py:Message", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:cause_by"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:id"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:instruct_content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:role"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:send_to"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:sent_from"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_cause_by"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_id"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_instruct_content"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_send_to"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_sent_from"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:dump"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:load"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:ser_instruct_content"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:to_dict"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/talk_action.py:TalkAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__init__"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__setattr__"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__str__"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Message", "target": "{\"lineno\":177,\"end_lineno\":284,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Message\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Message", "target": "{\"name\":\"Message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"cause_by\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[BaseModel] \",\"default_value\":\"\"},{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"set[str] \",\"default_value\":\"\"},{\"name\":\"sent_from\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"check_cause_by\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"cause_by\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Any\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"check_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"check_instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Any\",\"default_value\":\"\"}],\"return_type\":\"BaseModel\"},{\"name\":\"check_send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Any\",\"default_value\":\"\"}],\"return_type\":\"set\"},{\"name\":\"check_sent_from\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"sent_from\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Any\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"dump\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"ser_instruct_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"ic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"BaseModel\",\"default_value\":\"\"}],\"return_type\":\"Union[str, None]\"},{\"name\":\"to_dict\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__setattr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:cause_by", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Message:cause_by", "target": "cause_by : str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Message:content", "target": "content : str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Message:id", "target": "id : str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:instruct_content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Message:instruct_content", "target": "instruct_content : Optional[BaseModel]"}, {"predicate": "is", "source": "metagpt/schema.py:Message:role", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Message:role", "target": "role : str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:send_to", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Message:send_to", "target": "send_to : set[str]"}, {"predicate": "is", "source": "metagpt/schema.py:Message:sent_from", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:Message:sent_from", "target": "sent_from : str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_cause_by", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:check_cause_by", "target": "check_cause_by(cause_by: Any): str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_id", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:check_id", "target": "check_id(id: str): str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_instruct_content", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:check_instruct_content", "target": "check_instruct_content(ic: Any): BaseModel"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_send_to", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:check_send_to", "target": "check_send_to(send_to: Any): set"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_sent_from", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:check_sent_from", "target": "check_sent_from(sent_from: Any): str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:dump", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:dump", "target": "dump(): str"}, {"predicate": "is", "source": "metagpt/schema.py:Message:load", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:load", "target": "load(val)"}, {"predicate": "is", "source": "metagpt/schema.py:Message:ser_instruct_content", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:ser_instruct_content", "target": "ser_instruct_content(ic: BaseModel): Union[str, None]"}, {"predicate": "is", "source": "metagpt/schema.py:Message:to_dict", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:Message:to_dict", "target": "to_dict(): dict"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:model_config"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:dump"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:empty"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:load"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:pop"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:pop_all"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:push"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:MessageQueue", "target": "{\"lineno\":314,\"end_lineno\":383,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageQueue\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:MessageQueue", "target": "{\"name\":\"MessageQueue\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"dump\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"str\"},{\"name\":\"empty\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"MessageQueue\"},{\"name\":\"pop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message \\\\| None\"},{\"name\":\"pop_all\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"List[Message]\"},{\"name\":\"push\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:MessageQueue:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:dump", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:MessageQueue:dump", "target": "dump(): str"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:empty", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:MessageQueue:empty", "target": "empty()"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:load", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:MessageQueue:load", "target": "load(data): 'MessageQueue'"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:pop", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:MessageQueue:pop", "target": "pop(): Message \\| None"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:pop_all", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:MessageQueue:pop_all", "target": "pop_all(): List[Message]"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:push", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/schema.py:MessageQueue:push", "target": "push(msg: Message)"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:MessageType", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:MessageType", "target": "metagpt/roles/assistant.py:MessageType:name"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"lineno\":33,\"end_lineno\":35,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"name\":\"MessageType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:MessageType:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/assistant.py:MessageType:name", "target": "name"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/metagpt_api.py", "target": "metagpt/provider/metagpt_api.py:MetaGPTLLM"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "class"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "metagpt/provider/metagpt_api.py:MetaGPTLLM:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"lineno\":14,\"end_lineno\":16,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"name\":\"MetaGPTLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url"}, {"predicate": "has_class_function", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image"}, {"predicate": "has_class_function", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"lineno\":20,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTText2Image\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"name\":\"MetaGPTText2Image\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"model_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"text_2_image\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"size_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url", "target": "model_url"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image", "target": "text_2_image(text, size_type)"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:MethodSelect"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:Strategy"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "metagpt/strategy/tot_schema.py:MethodSelect:name"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MethodSelect\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"name\":\"MethodSelect\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:MethodSelect:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:MethodSelect:name", "target": "name"}, {"predicate": "is", "source": "metagpt/tools/moderation.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/moderation.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/moderation.py", "target": "metagpt/tools/moderation.py:Moderation"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:llm"}, {"predicate": "has_class_function", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:amoderation"}, {"predicate": "has_class_function", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories"}, {"predicate": "has_class_function", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:handle_moderation_results"}, {"predicate": "has_class_function", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Moderation\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"name\":\"Moderation\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"amoderation\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[str, list[str]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"amoderation_with_categories\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[str, list[str]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"handle_moderation_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/moderation.py:Moderation:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:amoderation", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/moderation.py:Moderation:amoderation", "target": "amoderation(content: Union[str, list[str]])"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories", "target": "amoderation_with_categories(content: Union[str, list[str]])"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:handle_moderation_results", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/moderation.py:Moderation:handle_moderation_results", "target": "handle_moderation_results(results)"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:amount"}, {"predicate": "has_class_property", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:message"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:__init__"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:__str__"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"lineno\":307,\"end_lineno\":316,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NoMoneyException\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"name\":\"NoMoneyException\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"amount\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:amount", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/common.py:NoMoneyException:amount", "target": "amount"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:message", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/common.py:NoMoneyException:message", "target": "message : str"}, {"predicate": "is", "source": "metagpt/config.py:NotConfiguredException", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/config.py:NotConfiguredException", "target": "metagpt/config.py:NotConfiguredException:message"}, {"predicate": "has_class_function", "source": "metagpt/config.py:NotConfiguredException", "target": "metagpt/config.py:NotConfiguredException:__init__"}, {"predicate": "has_page_info", "source": "metagpt/config.py:NotConfiguredException", "target": "{\"lineno\":29,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NotConfiguredException\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config.py:NotConfiguredException", "target": "{\"name\":\"NotConfiguredException\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/config.py:NotConfiguredException:message", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/config.py:NotConfiguredException:message", "target": "message : str"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OCRResults\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"name\":\"OCRResults\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"ocr_result\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result", "target": "ocr_result : str"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/ollama_api.py", "target": "metagpt/provider/ollama_api.py:OllamaCostManager"}, {"predicate": "has_class", "source": "metagpt/provider/ollama_api.py", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "metagpt/provider/ollama_api.py:OllamaCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "metagpt/provider/ollama_api.py:OllamaCostManager:total_prompt_tokens"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "metagpt/provider/ollama_api.py:OllamaCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "{\"lineno\":26,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/ollama_api.py:OllamaCostManager", "target": "{\"name\":\"OllamaCostManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"update_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/ollama_api.py:OllamaCostManager:total_completion_tokens", "target": "total_completion_tokens"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/ollama_api.py:OllamaCostManager:total_prompt_tokens", "target": "total_prompt_tokens"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaCostManager:update_cost", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/ollama_api.py:OllamaCostManager:update_cost", "target": "update_cost(prompt_tokens, completion_tokens, model)"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:http_method"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:__init__"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion"}, {"predicate": "has_class_function", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"lineno\":42,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"name\":\"OllamaLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"http_method\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"suffix_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"resp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"resp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_ollama\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_const_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_decode_and_load\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:client", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:client", "target": "client"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:http_method", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:http_method", "target": "http_method : str"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:model", "target": "model"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url", "target": "suffix_url : str"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt", "target": "use_system_prompt : bool"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion", "target": "acompletion(messages: list[dict], timeout): dict"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text", "target": "acompletion_text(messages: list[dict], stream, timeout: int): str"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text", "target": "get_choice_text(resp: dict): str"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage", "target": "get_usage(resp: dict): dict"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/openai_api.py", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_function", "source": "metagpt/provider/openai_api.py", "target": "metagpt/provider/openai_api.py:log_and_reraise"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:model"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aask_code"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:acompletion"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:amoderation"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:__init__"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_init_openai"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_init_client"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_process_message"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs"}, {"predicate": "has_class_function", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"lineno\":54,\"end_lineno\":235,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"name\":\"OpenAILLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"aclient\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"AsyncOpenAI \",\"default_value\":\"\"},{\"name\":\"auto_max_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"aask_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[str, Message, list[dict]]\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"ChatCompletion\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"amoderation\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[str, list[str]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_choice_function_arguments\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"ChatCompletion\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"ChatCompletion\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Costs\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_openai\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_client\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_make_client_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_proxy_params\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_cons_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_func_configs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_function\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_process_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_calc_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_max_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aclient", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:aclient", "target": "aclient : AsyncOpenAI"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens", "target": "auto_max_tokens : bool"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:config", "target": "config"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:model", "target": "model"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aask_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:aask_code", "target": "aask_code(messages: Union[str, Message, list[dict]]): dict"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion", "target": "acompletion(messages: list[dict], timeout): ChatCompletion"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text", "target": "acompletion_text(messages: list[dict], stream, timeout): str"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:amoderation", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:amoderation", "target": "amoderation(content: Union[str, list[str]])"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments", "target": "get_choice_function_arguments(rsp: ChatCompletion): dict"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text", "target": "get_choice_text(rsp: ChatCompletion): str"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_costs", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_costs", "target": "get_costs(): Costs"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:data"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:organization"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after"}, {"predicate": "has_class_function", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"lineno\":123,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIResponse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"name\":\"OpenAIResponse\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"operation_location\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"organization\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"request_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"response_ms\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"retry_after\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:data", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:data", "target": "data"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "operation_location"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "organization"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "request_id"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "response_ms"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "retry_after"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:openai_api_key"}, {"predicate": "has_class_function", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding"}, {"predicate": "has_class_function", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"lineno\":45,\"end_lineno\":71,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Embedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"name\":\"OpenAIText2Embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"openai_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"text_2_embedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:openai_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:openai_api_key", "target": "openai_api_key"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding", "target": "text_2_embedding(text, model)"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_image.py", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"predicate": "has_function", "source": "metagpt/tools/openai_text_to_image.py", "target": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data"}, {"predicate": "has_class_function", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image"}, {"predicate": "has_class_function", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"lineno\":17,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Image\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"name\":\"OpenAIText2Image\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"get_image_data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"text_2_image\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"size_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data", "target": "get_image_data(url)"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image", "target": "text_2_image(text, size_type)"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/open_llm_api.py", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "has_class", "source": "metagpt/provider/open_llm_api.py", "target": "metagpt/provider/open_llm_api.py:OpenLLMCostManager"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:is_azure"}, {"predicate": "has_class_property", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:rpm"}, {"predicate": "has_class_function", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:__init__"}, {"predicate": "has_class_function", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:__init_openllm"}, {"predicate": "has_class_function", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs"}, {"predicate": "has_class_function", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage"}, {"predicate": "has_class_function", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"lineno\":37,\"end_lineno\":76,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"name\":\"OpenLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_azure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rpm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Costs\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_openllm\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_make_client_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_calc_usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLM:auto_max_tokens", "target": "auto_max_tokens : bool"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLM:config", "target": "config"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:is_azure", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLM:is_azure", "target": "is_azure : bool"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLM:model", "target": "model"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:rpm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLM:rpm", "target": "rpm : int"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs", "target": "get_costs(): Costs"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:total_prompt_tokens"}, {"predicate": "has_class_function", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "{\"lineno\":15,\"end_lineno\":33,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLMCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager", "target": "{\"name\":\"OpenLLMCostManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"update_cost\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"completion_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:total_completion_tokens", "target": "total_completion_tokens"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:total_prompt_tokens", "target": "total_prompt_tokens"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:update_cost", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/open_llm_api.py:OpenLLMCostManager:update_cost", "target": "update_cost(prompt_tokens, completion_tokens, model)"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:extract_content"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:extract_struct"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_blocks"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_code"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_data"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_file_list"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_python_code"}, {"predicate": "has_class_function", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_str"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"lineno\":57,\"end_lineno\":231,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OutputParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"name\":\"OutputParser\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"extract_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"extract_struct\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"data_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Union[type(list), type(dict)]\",\"default_value\":\"\"}],\"return_type\":\"Union[list, dict]\"},{\"name\":\"parse_blocks\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"parse_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"parse_data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"parse_data_with_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"parse_file_list\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[str]\"},{\"name\":\"parse_python_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"parse_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:extract_content", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:extract_content", "target": "extract_content(text, tag)"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:extract_struct", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:extract_struct", "target": "extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_blocks", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:parse_blocks", "target": "parse_blocks(text: str)"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:parse_code", "target": "parse_code(text: str, lang: str): str"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_data", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:parse_data", "target": "parse_data(data)"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping", "target": "parse_data_with_mapping(data, mapping)"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_file_list", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:parse_file_list", "target": "parse_file_list(text: str): list[str]"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_python_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:parse_python_code", "target": "parse_python_code(text: str): str"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_str", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/common.py:OutputParser:parse_str", "target": "parse_str(text: str)"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "metagpt/learn/skill_loader.py:Parameter:description"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "metagpt/learn/skill_loader.py:Parameter:type"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Parameter\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"name\":\"Parameter\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"description\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter:description", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Parameter:description", "target": "description : Optional[str]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter:type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Parameter:type", "target": "type : str"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_log_stream"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"lineno\":20,\"end_lineno\":99,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PlaywrightWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"name\":\"PlaywrightWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"browser_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Literal[chromium, firefox, webkit] \\\\| None \",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \\\\| None \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"WebPage \\\\| list[WebPage]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_scrape\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_precheck\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type", "target": "browser_type : Literal['chromium', 'firefox', 'webkit'] \\| None"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs", "target": "launch_kwargs : dict \\| None"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run", "target": "run(url: str): WebPage \\| list[WebPage]"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/prepare_documents.py", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"lineno\":22,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareDocuments\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"name\":\"PrepareDocuments\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_init_repo\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:run", "target": "run(with_messages)"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/prepare_interview.py", "target": "metagpt/actions/prepare_interview.py:PrepareInterview"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/prepare_interview.py:PrepareInterview:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/prepare_interview.py:PrepareInterview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareInterview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"name\":\"PrepareInterview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:run", "target": "run(context)"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/product_manager.py", "target": "metagpt/roles/product_manager.py:ProductManager"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:profile"}, {"predicate": "has_class_function", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:todo"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:todo_action"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:_think"}, {"predicate": "has_class_function", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:_observe"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"lineno\":17,\"end_lineno\":57,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProductManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"name\":\"ProductManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"todo_action\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"todo\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_observe\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/product_manager.py:ProductManager:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/product_manager.py:ProductManager:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/product_manager.py:ProductManager:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/product_manager.py:ProductManager:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:todo", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/product_manager.py:ProductManager:todo", "target": "todo"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:todo", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:todo_action", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/product_manager.py:ProductManager:todo_action", "target": "todo_action : str"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/project_manager.py", "target": "metagpt/roles/project_manager.py:ProjectManager"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:__init__"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"name\":\"ProjectManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/project_manager.py:ProjectManager:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/project_manager.py:ProjectManager:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/project_manager.py:ProjectManager:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/project_manager.py:ProjectManager:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/prompt.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/prompt.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/prompt.py", "target": "metagpt/roles/prompt.py:PromptString"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PromptString", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/prompt.py:PromptString", "target": "metagpt/roles/prompt.py:PromptString:name"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"lineno\":27,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PromptString\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"name\":\"PromptString\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PromptString:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/prompt.py:PromptString:name", "target": "name"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/qa_engineer.py", "target": "metagpt/roles/qa_engineer.py:QaEngineer"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:test_round"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test"}, {"predicate": "has_class_function", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code"}, {"predicate": "has_class_function", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error"}, {"predicate": "has_class_function", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_act"}, {"predicate": "has_class_function", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_observe"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"lineno\":34,\"end_lineno\":186,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QaEngineer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"name\":\"QaEngineer\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"test_round\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"test_round_allowed\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_write_test\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_debug_error\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_observe\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/qa_engineer.py:QaEngineer:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/qa_engineer.py:QaEngineer:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/qa_engineer.py:QaEngineer:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/qa_engineer.py:QaEngineer:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round", "target": "test_round : int"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed", "target": "test_round_allowed : int"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/qdrant_store.py", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection"}, {"predicate": "has_class", "source": "metagpt/document_store/qdrant_store.py", "target": "metagpt/document_store/qdrant_store.py:QdrantStore"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:host"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:port"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:url"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"lineno\":11,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantConnection\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"name\":\"QdrantConnection\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"host\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"port\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[int] \",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key", "target": "api_key : Optional[str]"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:host", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:host", "target": "host : Optional[str]"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory", "target": "memory : bool"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:port", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:port", "target": "port : Optional[int]"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:url", "target": "url : Optional[str]"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:client"}, {"predicate": "has_class_function", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:add"}, {"predicate": "has_class_function", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection"}, {"predicate": "has_class_function", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection"}, {"predicate": "has_class_function", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection"}, {"predicate": "has_class_function", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:search"}, {"predicate": "has_class_function", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:write "}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_function", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__"}, {"predicate": "has_class_function", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"lineno\":28,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"name\":\"QdrantStore\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"client\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"QdrantClient \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"add\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"points\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[PointStruct]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"create_collection\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"vectors_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"VectorParams\",\"default_value\":\"\"},{\"name\":\"force_recreate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"delete_collection\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"has_collection\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"search\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"collection_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[float]\",\"default_value\":\"\"},{\"name\":\"query_filter\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Filter\",\"default_value\":\"\"},{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"return_vector\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"write\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:client", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:client", "target": "client : QdrantClient"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:add", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:add", "target": "add(collection_name: str, points: List[PointStruct])"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection", "target": "create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection", "target": "delete_collection(collection_name: str, timeout)"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection", "target": "has_collection(collection_name: str)"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:search", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:search", "target": "search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write ", "target": "write ()"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_class_view.py", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_name"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_variable_type"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_function_args"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"lineno\":31,\"end_lineno\":217,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"name\":\"RebuildClassView\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"format\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_create_mermaid_class_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_create_mermaid_class\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_create_mermaid_relationship\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_variable_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_function_args\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_diff_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_align_root\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run", "target": "run(with_messages, format)"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry"}, {"predicate": "has_class_function", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"lineno\":18,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildSequenceView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"name\":\"RebuildSequenceView\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"format\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_search_main_entry\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_rebuild_sequence_view\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run", "target": "run(with_messages, format)"}, {"predicate": "is", "source": "metagpt/utils/redis.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/redis.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/redis.py", "target": "metagpt/utils/redis.py:Redis"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:is_configured"}, {"predicate": "has_class_function", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:is_valid"}, {"predicate": "has_class_function", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:close"}, {"predicate": "has_class_function", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:get"}, {"predicate": "has_class_function", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:set"}, {"predicate": "has_class_function", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:__init__"}, {"predicate": "has_class_function", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:_connect"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:Redis", "target": "{\"lineno\":19,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Redis\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/redis.py:Redis", "target": "{\"name\":\"Redis\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"is_configured\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_valid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"close\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"bytes \\\\| None\"},{\"name\":\"set\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"key\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"timeout_sec\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_connect\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:is_configured", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/redis.py:Redis:is_configured", "target": "is_configured"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:is_configured", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:is_valid", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/redis.py:Redis:is_valid", "target": "is_valid"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:is_valid", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:close", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/redis.py:Redis:close", "target": "close()"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:get", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/redis.py:Redis:get", "target": "get(key: str): bytes \\| None"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:set", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/redis.py:Redis:set", "target": "set(key: str, data: str, timeout_sec: int)"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:RepairType"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_json_format"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "metagpt/utils/repair_llm_raw_output.py:RepairType:name"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepairType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"name\":\"RepairType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType:name", "target": "name"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"lineno\":35,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"name\":\"ReplyData\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content", "target": "content : str"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"lineno\":168,\"end_lineno\":194,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyQuestion\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"name\":\"ReplyQuestion\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ocr_result\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language", "target": "language : str"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run", "target": "run(query: str, ocr_result: list): str"}, {"predicate": "is", "source": "metagpt/document.py:Repo", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:assets"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:codes"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:docs"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:path"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:eda"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:from_path"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:get"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:get_text_documents"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:set"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:to_path"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:_path"}, {"predicate": "has_class_function", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:_set"}, {"predicate": "has_page_info", "source": "metagpt/document.py:Repo", "target": "{\"lineno\":171,\"end_lineno\":235,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Repo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:Repo", "target": "{\"name\":\"Repo\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"assets\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Path, Document] \",\"default_value\":\"\"},{\"name\":\"codes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Path, Document] \",\"default_value\":\"\"},{\"name\":\"docs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Path, Document] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"eda\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"RepoMetadata\"},{\"name\":\"from_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Optional[Document]\"},{\"name\":\"get_text_documents\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"list[Document]\"},{\"name\":\"set\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"to_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_set\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:assets", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Repo:assets", "target": "assets : dict[Path, Document]"}, {"predicate": "is", "source": "metagpt/document.py:Repo:codes", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Repo:codes", "target": "codes : dict[Path, Document]"}, {"predicate": "is", "source": "metagpt/document.py:Repo:docs", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Repo:docs", "target": "docs : dict[Path, Document]"}, {"predicate": "is", "source": "metagpt/document.py:Repo:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Repo:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/document.py:Repo:path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:Repo:path", "target": "path : Path"}, {"predicate": "is", "source": "metagpt/document.py:Repo:eda", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Repo:eda", "target": "eda(): RepoMetadata"}, {"predicate": "is", "source": "metagpt/document.py:Repo:from_path", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Repo:from_path", "target": "from_path(path: Path)"}, {"predicate": "is", "source": "metagpt/document.py:Repo:get", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Repo:get", "target": "get(filename: str): Optional[Document]"}, {"predicate": "is", "source": "metagpt/document.py:Repo:get_text_documents", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Repo:get_text_documents", "target": "get_text_documents(): list[Document]"}, {"predicate": "is", "source": "metagpt/document.py:Repo:set", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Repo:set", "target": "set(filename: str, content: str)"}, {"predicate": "is", "source": "metagpt/document.py:Repo:to_path", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/document.py:Repo:to_path", "target": "to_path()"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:classes"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:file"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:functions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:globals"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:page_info"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoFileInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"name\":\"RepoFileInfo\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"classes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"},{\"name\":\"file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"functions\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"},{\"name\":\"globals\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"},{\"name\":\"page_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:classes", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:RepoFileInfo:classes", "target": "classes : List"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:file", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:RepoFileInfo:file", "target": "file : str"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:functions", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:RepoFileInfo:functions", "target": "functions : List"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:globals", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:RepoFileInfo:globals", "target": "globals : List"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:page_info", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:RepoFileInfo:page_info", "target": "page_info : List"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:n_chars"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:n_docs"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:symbols"}, {"predicate": "has_page_info", "source": "metagpt/document.py:RepoMetadata", "target": "{\"lineno\":164,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoMetadata\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:RepoMetadata", "target": "{\"name\":\"RepoMetadata\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"n_chars\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"n_docs\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"symbols\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:n_chars", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:RepoMetadata:n_chars", "target": "n_chars : int"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:n_docs", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:RepoMetadata:n_docs", "target": "n_docs : int"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:RepoMetadata:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:symbols", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/document.py:RepoMetadata:symbols", "target": "symbols : list"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:base_directory"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_json_structure"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_structure"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_symbols"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:node_to_str"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:rebuild_class_views"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_file"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_expr"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_name"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_if"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_if_compare"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_variable"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_assign"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_classes"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_split_class_line"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_split_relationship_line"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_get_label"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_create_path_mapping"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_repair_namespaces"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_repair_ns"}, {"predicate": "has_class_function", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_find_root"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"lineno\":56,\"end_lineno\":417,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"name\":\"RepoParser\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"base_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Path \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"extract_class_and_function_info\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"tree\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"file_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"RepoFileInfo\"},{\"name\":\"generate_dataframe_structure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"generate_json_structure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"generate_structure\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"output_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Path\"},{\"name\":\"generate_symbols\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"List[RepoFileInfo]\"},{\"name\":\"node_to_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"CodeBlockInfo \\\\| None\"},{\"name\":\"rebuild_class_views\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_parse_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_expr\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_if\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_if_compare\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_variable\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_assign\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_classes\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_parse_class_relationships\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_split_class_line\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_split_relationship_line\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_label\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_create_path_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_repair_namespaces\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_repair_ns\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_find_root\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:base_directory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/repo_parser.py:RepoParser:base_directory", "target": "base_directory : Path"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info", "target": "extract_class_and_function_info(tree, file_path): RepoFileInfo"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure", "target": "generate_dataframe_structure(output_path)"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_json_structure", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/repo_parser.py:RepoParser:generate_json_structure", "target": "generate_json_structure(output_path)"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_structure", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/repo_parser.py:RepoParser:generate_structure", "target": "generate_structure(output_path, mode): Path"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_symbols", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/repo_parser.py:RepoParser:generate_symbols", "target": "generate_symbols(): List[RepoFileInfo]"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:node_to_str", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/repo_parser.py:RepoParser:node_to_str", "target": "node_to_str(node): CodeBlockInfo \\| None"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:rebuild_class_views", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/repo_parser.py:RepoParser:rebuild_class_views", "target": "rebuild_class_views(path: str \\| Path)"}, {"predicate": "is", "source": "metagpt/roles/researcher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/researcher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/researcher.py", "target": "metagpt/roles/researcher.py:Report"}, {"predicate": "has_class", "source": "metagpt/roles/researcher.py", "target": "metagpt/roles/researcher.py:Researcher"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:content"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:links"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:summaries"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:topic"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:Report", "target": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Report\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/researcher.py:Report", "target": "{\"name\":\"Report\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"links\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[dict[str, list[str]]] \",\"default_value\":\"\"},{\"name\":\"summaries\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[list[tuple[str, str]]] \",\"default_value\":\"\"},{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Report:content", "target": "content : str"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:links", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Report:links", "target": "links : Optional[dict[str, list[str]]]"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:summaries", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Report:summaries", "target": "summaries : Optional[list[tuple[str, str]]]"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:topic", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Report:topic", "target": "topic : str"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:profile"}, {"predicate": "has_class_function", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:react"}, {"predicate": "has_class_function", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:research_system_text"}, {"predicate": "has_class_function", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:write_report"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:_think"}, {"predicate": "has_class_function", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"lineno\":28,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Researcher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"name\":\"Researcher\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"react\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"research_system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_task\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Action\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"write_report\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Researcher:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Researcher:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:language", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Researcher:language", "target": "language : str"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Researcher:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/researcher.py:Researcher:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:react", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/researcher.py:Researcher:react", "target": "react(): Message"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:research_system_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/researcher.py:Researcher:research_system_text", "target": "research_system_text(topic, current_task: Action): str"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:write_report", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/researcher.py:Researcher:write_report", "target": "write_report(topic: str, content: str)"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"lineno\":35,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResultEmbedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"name\":\"ResultEmbedding\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Embedding] \",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data", "target": "data : List[Embedding]"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model", "target": "model : str"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_", "target": "object_ : str"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage", "target": "usage"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Returns:format"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Returns:type"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Skill:returns"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"lineno\":24,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Returns\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"name\":\"Returns\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"format\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns:format", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Returns:format", "target": "format : Optional[str]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns:type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Returns:type", "target": "type : str"}, {"predicate": "is", "source": "metagpt/roles/role.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/role.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:RoleReactMode"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:action_count"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:actions"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_human"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_idle"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:latest_observed_msg"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:llm"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:model_config"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:rc"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:recovered"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:role_id"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:states"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:subscription"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:todo"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:act"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:check_subscription"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:deserialize"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:get_memories"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:init_actions"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_watch"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:publish_message"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:put_message"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:react"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:refresh_system_message"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:run"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:serialize"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_env"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_memory"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_recovered"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:subscribe"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:think"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/role.py:Role", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_reset"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_setting"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_init_action_system_message"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_init_actions"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_set_react_mode"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_watch"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_set_state"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_get_prefix"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_think"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_observe"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_react"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act_by_order"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_plan_and_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:Role", "target": "{\"lineno\":129,\"end_lineno\":510,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Role\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:Role", "target": "{\"name\":\"Role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Action]] \",\"default_value\":\"\"},{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"is_human\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"latest_observed_msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Message] \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"recovered\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"states\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[str] \",\"default_value\":\"\"},{\"name\":\"subscription\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"set[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"action_count\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_idle\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"todo\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"act\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"ActionOutput\"},{\"name\":\"check_subscription\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"deserialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"Role\"},{\"name\":\"get_memories\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"k\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"list[Message]\"},{\"name\":\"init_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"is_watch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"caused_by\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"publish_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"msg\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"put_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"react\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"refresh_system_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Message \\\\| None\"},{\"name\":\"serialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_env\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"env\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Environment\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Memory\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"set_recovered\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"recovered\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"subscribe\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"tags\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Set[str]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"think\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Action\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_reset\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_setting\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_action_system_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_init_actions\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_set_react_mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_watch\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_set_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_get_prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_observe\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_react\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_by_order\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_plan_and_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:action_count", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:action_count", "target": "action_count"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:action_count", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:actions", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:actions", "target": "actions : list[SerializeAsAny[Action]]"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_human", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:is_human", "target": "is_human : bool"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_idle", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:is_idle", "target": "is_idle"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_idle", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:latest_observed_msg", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:latest_observed_msg", "target": "latest_observed_msg : Optional[Message]"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:rc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:rc", "target": "rc"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:recovered", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:recovered", "target": "recovered : bool"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:role_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:role_id", "target": "role_id : str"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:states", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:states", "target": "states : list[str]"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:subscription", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:subscription", "target": "subscription : set[str]"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:todo", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:Role:todo", "target": "todo"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:todo", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:act", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:act", "target": "act(): ActionOutput"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:check_subscription", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:check_subscription", "target": "check_subscription()"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:deserialize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:deserialize", "target": "deserialize(stg_path: Path): 'Role'"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:get_memories", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:get_memories", "target": "get_memories(k): list[Message]"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:init_actions", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:init_actions", "target": "init_actions(actions)"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_watch", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:is_watch", "target": "is_watch(caused_by: str)"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:publish_message", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:publish_message", "target": "publish_message(msg)"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:put_message", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:put_message", "target": "put_message(message)"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:react", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:react", "target": "react(): Message"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:refresh_system_message", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:refresh_system_message", "target": "refresh_system_message()"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:run", "target": "run(with_message): Message \\| None"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:serialize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:serialize", "target": "serialize(stg_path: Path)"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_env", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:set_env", "target": "set_env(env: 'Environment')"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_memory", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:set_memory", "target": "set_memory(memory: Memory)"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_recovered", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:set_recovered", "target": "set_recovered(recovered: bool)"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:subscribe", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:subscribe", "target": "subscribe(tags: Set[str])"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:think", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:Role:think", "target": "think(): Action"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:env"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:history"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:important_memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:max_react_loop"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:model_config"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:news"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:react_mode"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:state"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:todo"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:watch"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:check "}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:Role:rc"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "isAggregateOn", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:check"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"lineno\":91,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"name\":\"RoleContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"env\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"max_react_loop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_buffer\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"news\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list[Type[Message]] \",\"default_value\":\"\"},{\"name\":\"react_mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"state\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"todo\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"watch\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"set[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"history\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"important_memory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"check\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role_id\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"check\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:env", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:env", "target": "env : str"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:history", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:history", "target": "history"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:history", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "important_memory"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:max_react_loop", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:max_react_loop", "target": "max_react_loop : int"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:memory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:memory", "target": "memory"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:msg_buffer", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:msg_buffer", "target": "msg_buffer"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:news", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:news", "target": "news : list[Type[Message]]"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:react_mode", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:react_mode", "target": "react_mode"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:state", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:state", "target": "state : int"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:todo", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:todo", "target": "todo"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:watch", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleContext:watch", "target": "watch : set[str]"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:check ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:RoleContext:check ", "target": "check (role_id: str)"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleReactMode:name"}, {"predicate": "has_class_function", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleReactMode:values"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleContext:react_mode"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"lineno\":81,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleReactMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"name\":\"RoleReactMode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"values\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/role.py:RoleReactMode:name", "target": "name"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode:values", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/role.py:RoleReactMode:values", "target": "values()"}, {"predicate": "is", "source": "metagpt/actions/run_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/run_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/run_code.py", "target": "metagpt/actions/run_code.py:RunCode"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run"}, {"predicate": "has_class_function", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run_script"}, {"predicate": "has_class_function", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run_text"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess"}, {"predicate": "has_class_function", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_dependencies"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"lineno\":78,\"end_lineno\":162,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"name\":\"RunCode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"RunCodeResult\"},{\"name\":\"run_script\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"working_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"additional_python_paths\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"command\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Tuple[str, str]\"},{\"name\":\"run_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"code\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Tuple[str, str]\"},{\"name\":\"_install_via_subprocess\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_install_dependencies\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/run_code.py:RunCode:context", "target": "context"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/run_code.py:RunCode:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/run_code.py:RunCode:run", "target": "run(): RunCodeResult"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run_script", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/run_code.py:RunCode:run_script", "target": "run_script(working_directory, additional_python_paths, command): Tuple[str, str]"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/run_code.py:RunCode:run_text", "target": "run_text(code): Tuple[str, str]"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:additional_python_paths"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:code_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:command"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:mode"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:output"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:output_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:test_code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:test_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:working_directory"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/debug_error.py:DebugError"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/debug_error.py:DebugError:context"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/run_code.py:RunCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/run_code.py:RunCode:context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"lineno\":411,\"end_lineno\":421,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"name\":\"RunCodeContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"additional_python_paths\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[str] \",\"default_value\":\"\"},{\"name\":\"code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"code_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"command\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[str] \",\"default_value\":\"\"},{\"name\":\"mode\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"output\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"output_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"test_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"test_filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"working_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:additional_python_paths", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:additional_python_paths", "target": "additional_python_paths : List[str]"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:code", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:code", "target": "code : Optional[str]"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:code_filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:code_filename", "target": "code_filename : str"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:command", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:command", "target": "command : List[str]"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:mode", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:mode", "target": "mode : str"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:output", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:output", "target": "output : Optional[str]"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:output_filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:output_filename", "target": "output_filename : Optional[str]"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:test_code", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:test_code", "target": "test_code : Optional[str]"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:test_filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:test_filename", "target": "test_filename : str"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:working_directory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeContext:working_directory", "target": "working_directory : str"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:stderr"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:stdout"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:summary"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"lineno\":424,\"end_lineno\":427,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeResult\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"name\":\"RunCodeResult\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"stderr\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"stdout\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:stderr", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeResult:stderr", "target": "stderr : str"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:stdout", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeResult:stdout", "target": "stdout : str"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:summary", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:RunCodeResult:summary", "target": "summary : str"}, {"predicate": "is", "source": "metagpt/utils/s3.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/s3.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/s3.py", "target": "metagpt/utils/s3.py:S3"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:auth_config"}, {"predicate": "has_class_function", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:is_configured"}, {"predicate": "has_class_function", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:is_valid"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:session"}, {"predicate": "has_class_function", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:cache"}, {"predicate": "has_class_function", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:download_file"}, {"predicate": "has_class_function", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:get_object"}, {"predicate": "has_class_function", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:get_object_url"}, {"predicate": "has_class_function", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:upload_file"}, {"predicate": "has_class_function", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:S3", "target": "{\"lineno\":16,\"end_lineno\":170,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/s3.py:S3", "target": "{\"name\":\"S3\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"auth_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"session\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Session \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"is_configured\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"is_valid\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"cache\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"data\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"file_ext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"format\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"download_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"bucket\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"local_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"chunk_size\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_object\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"bucket\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"bytes\"},{\"name\":\"get_object_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"bucket\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"upload_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"bucket\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"local_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:auth_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/s3.py:S3:auth_config", "target": "auth_config : dict"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:is_configured", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/s3.py:S3:is_configured", "target": "is_configured"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:is_configured", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:is_valid", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/s3.py:S3:is_valid", "target": "is_valid"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:is_valid", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:session", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/s3.py:S3:session", "target": "session : Session"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:cache", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/s3.py:S3:cache", "target": "cache(data: str, file_ext: str, format: str): str"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:download_file", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/s3.py:S3:download_file", "target": "download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:get_object", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/s3.py:S3:get_object", "target": "get_object(bucket: str, object_name: str): bytes"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:get_object_url", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/s3.py:S3:get_object_url", "target": "get_object_url(bucket: str, object_name: str): str"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:upload_file", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/s3.py:S3:upload_file", "target": "upload_file(bucket: str, local_path: str, object_name: str): None"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/sd_engine.py", "target": "metagpt/tools/sd_engine.py:SDEngine"}, {"predicate": "has_function", "source": "metagpt/tools/sd_engine.py", "target": "metagpt/tools/sd_engine.py:decode_base64_to_image"}, {"predicate": "has_function", "source": "metagpt/tools/sd_engine.py", "target": "metagpt/tools/sd_engine.py:batch_decode_base64_to_image"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:payload"}, {"predicate": "has_class_property", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:sd_t2i_url"}, {"predicate": "has_class_property", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:sd_url"}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:construct_payload"}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:run"}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:run_i2i "}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:run_sam "}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:run_t2i"}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:__init__"}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:_save"}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:run_i2i"}, {"predicate": "has_class_function", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "metagpt/tools/sd_engine.py:SDEngine:run_sam"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "{\"lineno\":53,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SDEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/sd_engine.py:SDEngine", "target": "{\"name\":\"SDEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"payload\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"sd_t2i_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"construct_payload\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"negtive_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"width\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"height\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_model\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run_i2i\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run_sam\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run_t2i\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompts\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run_i2i\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run_sam\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:payload", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/sd_engine.py:SDEngine:payload", "target": "payload : dict"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:sd_t2i_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/sd_engine.py:SDEngine:sd_t2i_url", "target": "sd_t2i_url"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:sd_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/sd_engine.py:SDEngine:sd_url", "target": "sd_url"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:construct_payload", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/sd_engine.py:SDEngine:construct_payload", "target": "construct_payload(prompt, negtive_prompt, width, height, sd_model)"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/sd_engine.py:SDEngine:run", "target": "run(url, payload, session)"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:run_i2i ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/sd_engine.py:SDEngine:run_i2i ", "target": "run_i2i ()"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:run_sam ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/sd_engine.py:SDEngine:run_sam ", "target": "run_sam ()"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:run_t2i", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/sd_engine.py:SDEngine:run_t2i", "target": "run_t2i(prompts: List)"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:object_"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:predicate"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:subject"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"lineno\":43,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SPO\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"name\":\"SPO\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"object_\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"predicate\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"subject\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:object_", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:SPO:object_", "target": "object_ : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:predicate", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:SPO:predicate", "target": "predicate : str"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:subject", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/graph_repository.py:SPO:subject", "target": "subject : str"}, {"predicate": "is", "source": "metagpt/roles/sales.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/sales.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/sales.py", "target": "metagpt/roles/sales.py:Sales"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:store"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:_set_store"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:Sales", "target": "{\"lineno\":19,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Sales\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/sales.py:Sales", "target": "{\"name\":\"Sales\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"store\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_set_store\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sales.py:Sales:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sales.py:Sales:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sales.py:Sales:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:store", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sales.py:Sales:store", "target": "store : Optional[BaseStore]"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/search_and_summarize.py", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:config"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func"}, {"predicate": "has_class_function", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run"}, {"predicate": "has_class_function", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"lineno\":107,\"end_lineno\":158,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchAndSummarize\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"name\":\"SearchAndSummarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"result\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine] \",\"default_value\":\"\"},{\"name\":\"search_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Any] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"validate_engine_and_run_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"values\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:config", "target": "config : NoneType"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content", "target": "content : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine", "target": "engine : Optional[SearchEngineType]"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result", "target": "result : str"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine", "target": "search_engine : Optional[SearchEngine]"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func", "target": "search_func : Optional[Any]"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run", "target": "run(context: list[Message], system_text): str"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func", "target": "validate_engine_and_run_func(values)"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine.py", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine.py", "target": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:run_func"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/research.py:CollectLinks"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"lineno\":32,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"name\":\"SearchEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType] \",\"default_value\":\"\"},{\"name\":\"run_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[True]\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine.py:SearchEngine:engine", "target": "engine : Optional[SearchEngineType]"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:run_func", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine.py:SearchEngine:run_func", "target": "run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine.py:SearchEngine:run", "target": "run(query: str, max_results: int, as_string: Literal[True]): str"}, {"predicate": "is", "source": "metagpt/tools", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools", "target": ""}, {"predicate": "has_class", "source": "metagpt/tools", "target": "metagpt/tools:SearchEngineType"}, {"predicate": "has_class", "source": "metagpt/tools", "target": "metagpt/tools:WebBrowserEngineType"}, {"predicate": "is", "source": "metagpt/tools:SearchEngineType", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/tools:SearchEngineType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/config.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/config.py:Config:search_engine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/roles/searcher.py:Searcher"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/roles/searcher.py:Searcher:engine"}, {"predicate": "has_class_view", "source": "metagpt/tools:SearchEngineType", "target": "{\"name\":\"SearchEngineType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools:SearchEngineType:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools:SearchEngineType:name", "target": "name"}, {"predicate": "is", "source": "metagpt/roles/searcher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/searcher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/searcher.py", "target": "metagpt/roles/searcher.py:Searcher"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:engine"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:profile"}, {"predicate": "has_class_function", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:set_search_func"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:_act_sp"}, {"predicate": "has_class_function", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"lineno\":21,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Searcher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"name\":\"Searcher\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"set_search_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"search_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act_sp\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/searcher.py:Searcher:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/searcher.py:Searcher:engine", "target": "engine"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/searcher.py:Searcher:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/searcher.py:Searcher:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/searcher.py:Searcher:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:set_search_func", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/searcher.py:Searcher:set_search_func", "target": "set_search_func(search_func)"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"lineno\":24,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SeleniumWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"name\":\"SeleniumWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"browser_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Literal[chrome, firefox, edge, ie] \\\\| None \",\"default_value\":\"\"},{\"name\":\"executable_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"launch_args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"WebPage \\\\| list[WebPage]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_precheck\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_scrape_website\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type", "target": "browser_type : Literal['chrome', 'firefox', 'edge', 'ie'] \\| None"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "executable_path"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor", "target": "executor : NoneType"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "launch_args"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop", "target": "loop : NoneType"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run", "target": "run(url: str): WebPage \\| list[WebPage]"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__get_pydantic_core_schema__"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__serialize_add_class_type__"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__deserialize_with_real_type__"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__init_subclass__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"lineno\":57,\"end_lineno\":121,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerializationMixin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"name\":\"SerializationMixin\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__get_pydantic_core_schema__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__serialize_add_class_type__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__deserialize_with_real_type__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_subclass__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_serpapi.py", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"lineno\":16,\"end_lineno\":110,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerpAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"name\":\"SerpAPIWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"aiosession\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Any] \",\"default_value\":\"\"},{\"name\":\"serpapi_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"check_serpapi_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_params\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, str]\"},{\"name\":\"results\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"_process_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession", "target": "aiosession : Optional[aiohttp.ClientSession]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params", "target": "params : dict"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine", "target": "search_engine : Optional[Any]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key", "target": "serpapi_api_key : Optional[str]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key", "target": "check_serpapi_api_key(val: str)"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params", "target": "get_params(query: str): Dict[str, str]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results", "target": "results(query: str, max_results: int): dict"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run", "target": "run(query, max_results: int, as_string: bool): str"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_serper.py", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:results"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:run"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"lineno\":17,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerperWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"name\":\"SerperWrapper\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"aiosession\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession] \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Any] \",\"default_value\":\"\"},{\"name\":\"serper_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"check_serper_api_key\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"val\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"get_headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Dict[str, str]\"},{\"name\":\"get_payloads\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"queries\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"Dict[str, str]\"},{\"name\":\"results\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"queries\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"as_string\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"_process_response\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession", "target": "aiosession : Optional[aiohttp.ClientSession]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload", "target": "payload : dict"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine", "target": "search_engine : Optional[Any]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key", "target": "serper_api_key : Optional[str]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key", "target": "check_serper_api_key(val: str)"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers", "target": "get_headers(): Dict[str, str]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads", "target": "get_payloads(queries: list[str], max_results: int): Dict[str, str]"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:results", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:results", "target": "results(queries: list[str], max_results: int): dict"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:run", "target": "run(query: str, max_results: int, as_string: bool): str"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:SimpleMessage", "target": "metagpt/schema.py:SimpleMessage:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:SimpleMessage", "target": "metagpt/schema.py:SimpleMessage:role"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"lineno\":124,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SimpleMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"name\":\"SimpleMessage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:SimpleMessage:content", "target": "content : str"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage:role", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:SimpleMessage:role", "target": "role : str"}, {"predicate": "is", "source": "metagpt/utils/singleton.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/singleton.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/singleton.py", "target": "metagpt/utils/singleton.py:Singleton"}, {"predicate": "is", "source": "metagpt/utils/singleton.py:Singleton", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/utils/singleton.py:Singleton", "target": "metagpt/utils/singleton.py:Singleton:__call__"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"lineno\":11,\"end_lineno\":22,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Singleton\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"name\":\"Singleton\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__call__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/sk_agent.py", "target": "metagpt/roles/sk_agent.py:SkAgent"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:import_skill"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:kernel"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:llm"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:plan"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:planner"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:planner_cls"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:_think"}, {"predicate": "has_class_function", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"lineno\":28,\"end_lineno\":90,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkAgent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"name\":\"SkAgent\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"import_semantic_skill_from_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Callable \",\"default_value\":\"\"},{\"name\":\"import_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Callable \",\"default_value\":\"\"},{\"name\":\"kernel\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Kernel \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"plan\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Plan \",\"default_value\":\"\"},{\"name\":\"planner\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]] \",\"default_value\":\"\"},{\"name\":\"planner_cls\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Any] \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory", "target": "import_semantic_skill_from_directory : Callable"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:import_skill", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:import_skill", "target": "import_skill : Callable"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:kernel", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:kernel", "target": "kernel : Kernel"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:plan", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:plan", "target": "plan : Plan"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:planner", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:planner", "target": "planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:planner_cls", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:planner_cls", "target": "planner_cls : Optional[Any]"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/sk_agent.py:SkAgent:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:run"}, {"predicate": "has_class_function", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"lineno\":17,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkSearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"name\":\"SkSearchEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"search_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"query\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine", "target": "search_engine"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/search_engine.py:SkSearchEngine:run", "target": "run(query: str): str"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:arguments"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:description"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:examples"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:id"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:name"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:parameters"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:returns"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:x_prerequisite"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"lineno\":34,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"name\":\"Skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"description\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"examples\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"List[Example] \",\"default_value\":\"\"},{\"name\":\"id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"parameters\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str, Parameter]] \",\"default_value\":\"\"},{\"name\":\"returns\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"x_prerequisite\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"arguments\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "arguments"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "class_function"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:description", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Skill:description", "target": "description : Optional[str]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:examples", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Skill:examples", "target": "examples : List[Example]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Skill:id", "target": "id : Optional[str]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Skill:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:parameters", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Skill:parameters", "target": "parameters : Optional[Dict[str, Parameter]]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:returns", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Skill:returns", "target": "returns"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:x_prerequisite", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:Skill:x_prerequisite", "target": "x_prerequisite : Dict"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:args"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"predicate": "has_class_function", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function"}, {"predicate": "has_class_function", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"lineno\":81,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"name\":\"SkillAction\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict \",\"default_value\":\"\"},{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Message] \",\"default_value\":\"\"},{\"name\":\"skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"find_and_call_function\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"function_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"args\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Message\"}]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:args", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/skill_action.py:SkillAction:args", "target": "args : Dict"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:rsp", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/skill_action.py:SkillAction:rsp", "target": "rsp : Optional[Message]"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:skill", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/skill_action.py:SkillAction:skill", "target": "skill"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function", "target": "find_and_call_function(function_name, args): str"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/skill_action.py:SkillAction:run", "target": "run(with_message): Message"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/management/skill_manager.py", "target": "metagpt/management/skill_manager.py:SkillManager"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:add_skill"}, {"predicate": "has_class_function", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:del_skill"}, {"predicate": "has_class_function", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc"}, {"predicate": "has_class_function", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:get_skill"}, {"predicate": "has_class_function", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill"}, {"predicate": "has_class_function", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored"}, {"predicate": "has_class_function", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:__init__"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"lineno\":17,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"name\":\"SkillManager\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"add_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Skill\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"del_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"generate_skill_desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Skill\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Skill\"},{\"name\":\"retrieve_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"list[Skill]\"},{\"name\":\"retrieve_skill_scored\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_results\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:add_skill", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/management/skill_manager.py:SkillManager:add_skill", "target": "add_skill(skill: Skill)"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:del_skill", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/management/skill_manager.py:SkillManager:del_skill", "target": "del_skill(skill_name: str)"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc", "target": "generate_skill_desc(skill: Skill): str"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:get_skill", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/management/skill_manager.py:SkillManager:get_skill", "target": "get_skill(skill_name: str): Skill"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill", "target": "retrieve_skill(desc: str, n_results: int): list[Skill]"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored", "target": "retrieve_skill_scored(desc: str, n_results: int): dict"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:components"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi"}, {"predicate": "has_class_function", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill"}, {"predicate": "has_class_function", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list"}, {"predicate": "has_class_function", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:load"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"lineno\":62,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillsDeclaration\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"name\":\"SkillsDeclaration\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"components\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Components] \",\"default_value\":\"\"},{\"name\":\"entities\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Dict[str, Entity] \",\"default_value\":\"\"},{\"name\":\"skillapi\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_skill\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"entity_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Skill\"},{\"name\":\"get_skill_list\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"entity_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Dict\"},{\"name\":\"load\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"SkillsDeclaration\"}]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:components", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:components", "target": "components : Optional[Components]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities", "target": "entities : Dict[str, Entity]"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi", "target": "skillapi : str"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill", "target": "get_skill(name, entity_name: str): Skill"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list", "target": "get_skill_list(entity_name: str): Dict"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:load", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:load", "target": "load(skill_yaml_file_name: Path): 'SkillsDeclaration'"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:acompletion"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"lineno\":26,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SparkLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"name\":\"SparkLLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion", "target": "acompletion(messages: list[dict], timeout)"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text", "target": "acompletion_text(messages: list[dict], stream, timeout: int): str"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text", "target": "get_choice_text(rsp: dict): str"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot_schema.py:Strategy:name"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Strategy\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"name\":\"Strategy\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:Strategy:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:Strategy:name", "target": "name"}, {"predicate": "is", "source": "metagpt/subscription.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/subscription.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/subscription.py", "target": "metagpt/subscription.py:SubscriptionRunner"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:model_config"}, {"predicate": "has_class_property", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:tasks"}, {"predicate": "has_class_function", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:run"}, {"predicate": "has_class_function", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:subscribe"}, {"predicate": "has_class_function", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:unsubscribe"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"lineno\":11,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubscriptionRunner\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"name\":\"SubscriptionRunner\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict[Role, asyncio.Task] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"raise_exception\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"subscribe\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Role\",\"default_value\":\"\"},{\"name\":\"trigger\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"AsyncGenerator[Message, None]\",\"default_value\":\"\"},{\"name\":\"callback\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Callable[[Message], Awaitable[None]]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"unsubscribe\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"role\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Role\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/subscription.py:SubscriptionRunner:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:tasks", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/subscription.py:SubscriptionRunner:tasks", "target": "tasks : dict[Role, asyncio.Task]"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/subscription.py:SubscriptionRunner:run", "target": "run(raise_exception: bool)"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:subscribe", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/subscription.py:SubscriptionRunner:subscribe", "target": "subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:unsubscribe", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/subscription.py:SubscriptionRunner:unsubscribe", "target": "unsubscribe(role: Role)"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/summarize_code.py", "target": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:run"}, {"predicate": "has_class_function", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"lineno\":94,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SummarizeCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"name\":\"SummarizeCode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"summarize_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/summarize_code.py:SummarizeCode:context", "target": "context"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/summarize_code.py:SummarizeCode:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/summarize_code.py:SummarizeCode:run", "target": "run()"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code", "target": "summarize_code(prompt)"}, {"predicate": "is", "source": "metagpt/schema.py:SystemMessage", "target": "class"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:SystemMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:SystemMessage", "target": "metagpt/schema.py:SystemMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SystemMessage", "target": "{\"lineno\":296,\"end_lineno\":302,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SystemMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SystemMessage", "target": "{\"name\":\"SystemMessage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/talk_action.py", "target": "metagpt/actions/talk_action.py:TalkAction"}, {"predicate": "has_class", "source": "metagpt/actions/talk_action.py", "target": "metagpt/actions/talk_action.py:TalkActionPrompt"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:aask_args"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:history_summary"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:knowledge"}, {"predicate": "has_class_function", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:prompt"}, {"predicate": "has_class_function", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"predicate": "has_class_function", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"lineno\":19,\"end_lineno\":91,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"name\":\"TalkAction\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"history_summary\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"knowledge\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Message] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"aask_args\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"prompt_gpt4\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"Message\"}]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "aask_args"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkAction:context", "target": "context : str"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:history_summary", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkAction:history_summary", "target": "history_summary : str"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:knowledge", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkAction:knowledge", "target": "knowledge : str"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "prompt"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "prompt_gpt4"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:rsp", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkAction:rsp", "target": "rsp : Optional[Message]"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/talk_action.py:TalkAction:run", "target": "run(with_message): Message"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"lineno\":94,\"end_lineno\":163,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkActionPrompt\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"name\":\"TalkActionPrompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"FORMATION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"FORMATION_LOOSE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION", "target": "FORMATION : str"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE", "target": "FORMATION_LOOSE : str"}, {"predicate": "is", "source": "metagpt/roles/teacher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/teacher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/teacher.py", "target": "metagpt/roles/teacher.py:Teacher"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:constraints"}, {"predicate": "has_class_function", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:course_title"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:profile"}, {"predicate": "has_class_function", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:new_file_name"}, {"predicate": "has_class_function", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:save"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:_think"}, {"predicate": "has_class_function", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:_react"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"lineno\":25,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Teacher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"name\":\"Teacher\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"course_title\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"new_file_name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"lesson_title\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_think\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_react\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/teacher.py:Teacher:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "course_title"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/teacher.py:Teacher:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/teacher.py:Teacher:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/teacher.py:Teacher:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/teacher.py:Teacher:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:new_file_name", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/teacher.py:Teacher:new_file_name", "target": "new_file_name(lesson_title, ext)"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:save", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/teacher.py:Teacher:save", "target": "save(content)"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_teaching_plan.py", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock"}, {"predicate": "has_class", "source": "metagpt/actions/write_teaching_plan.py", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"lineno\":89,\"end_lineno\":188,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TeachingPlanBlock\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"name\":\"TeachingPlanBlock\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"COURSE_TITLE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"DATA_BEGIN_TAG\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"DATA_END_TAG\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"FORMATION\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"PROMPT_TEMPLATE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"TOPICS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"list \",\"default_value\":\"\"},{\"name\":\"TOPIC_STATEMENTS\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE", "target": "COURSE_TITLE : str"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG", "target": "DATA_BEGIN_TAG : str"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG", "target": "DATA_END_TAG : str"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION", "target": "FORMATION : str"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE", "target": "PROMPT_TEMPLATE : str"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE", "target": "PROMPT_TITLE_TEMPLATE : str"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS", "target": "TOPICS : list"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS", "target": "TOPIC_STATEMENTS : dict"}, {"predicate": "is", "source": "metagpt/team.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/team.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/team.py", "target": "metagpt/team.py:Team"}, {"predicate": "is", "source": "metagpt/team.py:Team", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:env"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:idea"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:investment"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:model_config"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:deserialize"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:hire"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:invest"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:run"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:run_project"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:serialize"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:start_project"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:__init__"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:_check_balance"}, {"predicate": "has_class_function", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:_save"}, {"predicate": "has_page_info", "source": "metagpt/team.py:Team", "target": "{\"lineno\":32,\"end_lineno\":135,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Team\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/team.py:Team", "target": "{\"name\":\"Team\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"env\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"idea\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"investment\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"float \",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"deserialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"Team\"},{\"name\":\"hire\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"roles\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[Role]\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"invest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"investment\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"float\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"n_round\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"idea\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"auto_archive\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run_project\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"idea\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"serialize\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"stg_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"start_project\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"idea\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"send_to\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_check_balance\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:env", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/team.py:Team:env", "target": "env"}, {"predicate": "is", "source": "metagpt/team.py:Team:idea", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/team.py:Team:idea", "target": "idea : str"}, {"predicate": "is", "source": "metagpt/team.py:Team:investment", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/team.py:Team:investment", "target": "investment : float"}, {"predicate": "is", "source": "metagpt/team.py:Team:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/team.py:Team:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/team.py:Team:deserialize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/team.py:Team:deserialize", "target": "deserialize(stg_path: Path): 'Team'"}, {"predicate": "is", "source": "metagpt/team.py:Team:hire", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/team.py:Team:hire", "target": "hire(roles: list[Role])"}, {"predicate": "is", "source": "metagpt/team.py:Team:invest", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/team.py:Team:invest", "target": "invest(investment: float)"}, {"predicate": "is", "source": "metagpt/team.py:Team:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/team.py:Team:run", "target": "run(n_round, idea, send_to, auto_archive)"}, {"predicate": "is", "source": "metagpt/team.py:Team:run_project", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/team.py:Team:run_project", "target": "run_project(idea, send_to: str)"}, {"predicate": "is", "source": "metagpt/team.py:Team:serialize", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/team.py:Team:serialize", "target": "serialize(stg_path: Path)"}, {"predicate": "is", "source": "metagpt/team.py:Team:start_project", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/team.py:Team:start_project", "target": "start_project(idea, send_to: str)"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:code_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:test_doc"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:TestingContext", "target": "{\"lineno\":405,\"end_lineno\":408,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TestingContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:TestingContext", "target": "{\"name\":\"TestingContext\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"code_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"test_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Document] \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:code_doc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:TestingContext:code_doc", "target": "code_doc"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:filename", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:TestingContext:filename", "target": "filename : str"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:test_doc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/schema.py:TestingContext:test_doc", "target": "test_doc : Optional[Document]"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:id"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:name"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:valid_status"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:value"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:update_valid_status"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:update_value"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"lineno\":34,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtNode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"name\":\"ThoughtNode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"id\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"valid_status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"},{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"update_valid_status\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"status\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/base.py:ThoughtNode:id", "target": "id : int"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/base.py:ThoughtNode:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:valid_status", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/base.py:ThoughtNode:valid_status", "target": "valid_status : bool"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:value", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/base.py:ThoughtNode:value", "target": "value : int"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:update_valid_status", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:ThoughtNode:update_valid_status", "target": "update_valid_status(status): None"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:update_value", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:ThoughtNode:update_value", "target": "update_value(value): None"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:solve "}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:solve"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"lineno\":33,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverBase\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"name\":\"ThoughtSolverBase\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"thought_tree\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[ThoughtTree] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"evaluate_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parent_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"generate_thoughts\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"current_state\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"current_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"List[ThoughtNode]\"},{\"name\":\"select_nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"thought_nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[ThoughtNode]\",\"default_value\":\"\"}],\"return_type\":\"List[ThoughtNode]\"},{\"name\":\"solve\",\"abstraction\":true,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"update_solution\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:config", "target": "config"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config", "target": "model_config"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree", "target": "thought_tree : Optional[ThoughtTree]"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node", "target": "evaluate_node(node, parent_value): None"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts", "target": "generate_thoughts(current_state, current_node): List[ThoughtNode]"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes", "target": "select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve ", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve ", "target": "solve (init_prompt)"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution", "target": "update_solution()"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:TreeofThought:config"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"lineno\":23,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"name\":\"ThoughtSolverConfig\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"evaluator\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_steps\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"method_select\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"n_generate_sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"n_select_sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"n_solution_sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"parser\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator", "target": "evaluator"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps", "target": "max_steps : int"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select", "target": "method_select : str"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample", "target": "n_generate_sample : int"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample", "target": "n_select_sample : int"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample", "target": "n_solution_sample : int"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser", "target": "parser"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:all_nodes"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:parse_node_path"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:show"}, {"predicate": "has_class_function", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:update_node"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:BFSSolver"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:DFSSolver"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"lineno\":51,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtTree\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"name\":\"ThoughtTree\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"all_nodes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"parse_node_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"List[str]\"},{\"name\":\"show\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"update_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"thought\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"List[dict]\",\"default_value\":\"\"},{\"name\":\"current_node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"ThoughtNode\",\"default_value\":\"\"}],\"return_type\":\"List[ThoughtNode]\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "all_nodes"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:parse_node_path", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:ThoughtTree:parse_node_path", "target": "parse_node_path(node): List[str]"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:show", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:ThoughtTree:show", "target": "show(): None"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:update_node", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/base.py:ThoughtTree:update_node", "target": "update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]"}, {"predicate": "is", "source": "metagpt/tools/translator.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/translator.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/translator.py", "target": "metagpt/tools/translator.py:Translator"}, {"predicate": "is", "source": "metagpt/tools/translator.py:Translator", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/tools/translator.py:Translator", "target": "metagpt/tools/translator.py:Translator:translate_prompt"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:Translator", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Translator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/translator.py:Translator", "target": "{\"name\":\"Translator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"translate_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"original\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"lang\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/translator.py:Translator:translate_prompt", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/translator.py:Translator:translate_prompt", "target": "translate_prompt(original, lang)"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:solve"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:__init__"}, {"predicate": "has_class_function", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"lineno\":235,\"end_lineno\":277,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeofThought\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"name\":\"TreeofThought\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"config\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"solver\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strategy\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[{\"name\":\"solve\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"init_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_initialize_solver\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:config", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:TreeofThought:config", "target": "config"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:solver", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:TreeofThought:solver", "target": "solver"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:strategy", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/strategy/tot.py:TreeofThought:strategy", "target": "strategy"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:solve", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/strategy/tot.py:TreeofThought:solve", "target": "solve(init_prompt)"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/tutorial_assistant.py", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content"}, {"predicate": "has_class_function", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_function", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__"}, {"predicate": "has_class_function", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory"}, {"predicate": "has_class_function", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"lineno\":20,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TutorialAssistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"name\":\"TutorialAssistant\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"constraints\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"goal\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"main_title\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"profile\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"total_content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"react\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Message\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_handle_directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_act\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints", "target": "constraints : str"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal", "target": "goal : str"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language", "target": "language : str"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title", "target": "main_title : str"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile", "target": "profile : str"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic", "target": "topic : str"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content", "target": "total_content : str"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react", "target": "react(): Message"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/ut_writer.py", "target": "metagpt/tools/ut_writer.py:UTGenerator"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:questions_path"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:__init__"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str"}, {"predicate": "has_class_function", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"lineno\":103,\"end_lineno\":286,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UTGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"name\":\"UTGenerator\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"chatgpt_method\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"icl_sample\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"questions_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"swagger_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"template_prefix\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"ut_py_path\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"ask_gpt_and_save\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"question\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"tag\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"fname\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"build_api_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"path\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"build_object_properties\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"node\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prop_object_required\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"level\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"int\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"generate_ut\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"include_tags\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"bool\"},{\"name\":\"get_swagger_json\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"get_tags_mapping\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"gpt_msgs_to_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"para_to_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prop\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prop_object_required\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__para_to_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_para_to_str\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_generate_ut\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method", "target": "chatgpt_method : str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample", "target": "icl_sample : str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:questions_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:questions_path", "target": "questions_path : str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file", "target": "swagger_file : str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix", "target": "template_prefix : str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path", "target": "ut_py_path : str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save", "target": "ask_gpt_and_save(question: str, tag: str, fname: str)"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc", "target": "build_api_doc(node: dict, path: str, method: str): str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties", "target": "build_object_properties(node, prop_object_required, level: int): str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut", "target": "generate_ut(include_tags): bool"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json", "target": "get_swagger_json(): dict"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping", "target": "get_tags_mapping(): dict"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code", "target": "gpt_msgs_to_code(messages: list): str"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str", "target": "para_to_str(name, prop, prop_object_required)"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"lineno\":30,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Usage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"name\":\"Usage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"prompt_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"},{\"name\":\"total_tokens\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"int \",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens", "target": "prompt_tokens : int"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens", "target": "total_tokens : int"}, {"predicate": "is", "source": "metagpt/schema.py:UserMessage", "target": "class"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UserMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_function", "source": "metagpt/schema.py:UserMessage", "target": "metagpt/schema.py:UserMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UserMessage", "target": "{\"lineno\":287,\"end_lineno\":293,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UserMessage", "target": "{\"name\":\"UserMessage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/add_requirement.py", "target": "metagpt/actions/add_requirement.py:UserRequirement"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "class"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/schema.py:Message"}, {"predicate": "isAggregateOn", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/schema.py:Message:cause_by"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserRequirement\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"name\":\"UserRequirement\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"lineno\":98,\"end_lineno\":102,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WDMHttpProxyClient\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"name\":\"WDMHttpProxyClient\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"get\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get", "target": "get(url)"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"predicate": "has_class_function", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"lineno\":176,\"end_lineno\":244,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowseAndSummarize\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"name\":\"WebBrowseAndSummarize\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"browse_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[Union[Callable[[list[str]], None], None]] \",\"default_value\":\"\"},{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[WebBrowserEngine] \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"dict[str, str]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func", "target": "browse_func : Optional[Union[Callable[[list[str]], None], None]]"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine", "target": "web_browser_engine : Optional[WebBrowserEngine]"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:run", "target": "run(url: str): dict[str, str]"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine.py", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"predicate": "has_class_function", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"lineno\":16,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"name\":\"WebBrowserEngine\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"engine\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"WebBrowserEngineType \\\\| None \",\"default_value\":\"\"},{\"name\":\"run_func\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"WebPage\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine", "target": "engine : WebBrowserEngineType \\| None"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func", "target": "run_func : Callable[..., Coroutine[Any, Any, WebPage \\| list[WebPage]]] \\| None"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run", "target": "run(url: str): WebPage"}, {"predicate": "is", "source": "metagpt/tools:WebBrowserEngineType", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools:WebBrowserEngineType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/config.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/config.py:Config:web_browser_engine"}, {"predicate": "has_class_view", "source": "metagpt/tools:WebBrowserEngineType", "target": "{\"name\":\"WebBrowserEngineType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools:WebBrowserEngineType:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/tools:WebBrowserEngineType:name", "target": "name"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:WebPage"}, {"predicate": "has_function", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:get_html_content"}, {"predicate": "has_function", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:_get_soup"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:html"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:inner_text"}, {"predicate": "has_class_function", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:soup"}, {"predicate": "has_class_function", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:title"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:url"}, {"predicate": "has_class_function", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:get_links"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"lineno\":11,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebPage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"name\":\"WebPage\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"html\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"inner_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"soup\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"title\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"\"},{\"name\":\"get_links\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"Generator[str, None, None]\"}]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:html", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/parse_html.py:WebPage:html", "target": "html : str"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:inner_text", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/parse_html.py:WebPage:inner_text", "target": "inner_text : str"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "soup"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "title"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/utils/parse_html.py:WebPage:url", "target": "url : str"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:get_links", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/utils/parse_html.py:WebPage:get_links", "target": "get_links(): Generator[str, None, None]"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen"}, {"predicate": "has_class_function", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"lineno\":52,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WikiHowTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"name\":\"WikiHowTemplate\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"gen\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"question\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"step\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"list[str]\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen", "target": "gen(question: str, step: str): list[str]"}, {"predicate": "is", "source": "metagpt/actions/write_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code.py", "target": "metagpt/actions/write_code.py:WriteCode"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:get_codes"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:run"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:write_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"lineno\":88,\"end_lineno\":154,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"name\":\"WriteCode\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"get_codes\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"task_doc\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"exclude\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"CodingContext\"},{\"name\":\"write_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_code.py:WriteCode:context", "target": "context"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_code.py:WriteCode:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:get_codes", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_code.py:WriteCode:get_codes", "target": "get_codes(task_doc, exclude): str"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_code.py:WriteCode:run", "target": "run(): CodingContext"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:write_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_code.py:WriteCode:write_code", "target": "write_code(prompt): str"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_an_draft.py", "target": "metagpt/actions/write_code_an_draft.py:WriteCodeAN"}, {"predicate": "has_function", "source": "metagpt/actions/write_code_an_draft.py", "target": "metagpt/actions/write_code_an_draft.py:main"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"lineno\":577,\"end_lineno\":582,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeAN\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"name\":\"WriteCodeAN\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run", "target": "run(context)"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_review.py", "target": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:run"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"lineno\":121,\"end_lineno\":176,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"name\":\"WriteCodeReview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"CodingContext\"},{\"name\":\"write_code_review_and_rewrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cr_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:context", "target": "context"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:run", "target": "run(): CodingContext"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite", "target": "write_code_review_and_rewrite(context_prompt, cr_prompt, filename)"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_tutorial.py", "target": "metagpt/actions/write_tutorial.py:WriteContent"}, {"predicate": "has_class", "source": "metagpt/actions/write_tutorial.py", "target": "metagpt/actions/write_tutorial.py:WriteDirectory"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:directory"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"lineno\":42,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteContent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"name\":\"WriteContent\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"directory\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"dict \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:directory", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_tutorial.py:WriteContent:directory", "target": "directory : dict"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:language", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_tutorial.py:WriteContent:language", "target": "language : str"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_tutorial.py:WriteContent:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_tutorial.py:WriteContent:run", "target": "run(topic: str): str"}, {"predicate": "is", "source": "metagpt/actions/design_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/design_api.py", "target": "metagpt/actions/design_api.py:WriteDesign"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_new_system_design"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_merge"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_update_system_design"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_pdf"}, {"predicate": "has_class_function", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"lineno\":40,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDesign\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"name\":\"WriteDesign\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Message\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_new_system_design\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_merge\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_system_design\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_data_api_design\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_seq_flow\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_pdf\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_mermaid_file\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/design_api.py:WriteDesign:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/design_api.py:WriteDesign:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/design_api.py:WriteDesign:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/design_api.py:WriteDesign:run", "target": "run(with_messages: Message, schema: str)"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"lineno\":17,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDirectory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"name\":\"WriteDirectory\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"}],\"return_type\":\"Dict\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:language", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:language", "target": "language : str"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:run", "target": "run(topic: str): Dict"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_docstring.py", "target": "metagpt/actions/write_docstring.py:WriteDocstring"}, {"predicate": "has_function", "source": "metagpt/actions/write_docstring.py", "target": "metagpt/actions/write_docstring.py:_simplify_python_code"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:desc"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:run"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"lineno\":156,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDocstring\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"name\":\"WriteDocstring\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"code\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"system_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[google, numpy, sphinx]\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"write_docstring\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"filename\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str \\\\| Path\",\"default_value\":\"\"},{\"name\":\"overwrite\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"style\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"Literal[google, numpy, sphinx]\",\"default_value\":\"\"}],\"return_type\":\"str\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_docstring.py:WriteDocstring:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_docstring.py:WriteDocstring:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_docstring.py:WriteDocstring:run", "target": "run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring", "target": "write_docstring(filename: str \\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_prd.py", "target": "metagpt/actions/write_prd.py:WritePRD"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_run_new_requirement"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_is_relative"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_merge"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_update_prd"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_save_pdf"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"lineno\":64,\"end_lineno\":194,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRD\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"name\":\"WritePRD\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"content\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"ActionOutput \\\\| Message\"},{\"name\":\"_run_new_requirement\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_is_relative\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_merge\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_prd\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_competitive_analysis\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_pdf\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_rename_workspace\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_is_bugfix\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:content", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_prd.py:WritePRD:content", "target": "content : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_prd.py:WritePRD:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_prd.py:WritePRD:run", "target": "run(with_messages, schema): ActionOutput \\| Message"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_prd_review.py", "target": "metagpt/actions/write_prd_review.py:WritePRDReview"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:prd"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"lineno\":14,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRDReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"name\":\"WritePRDReview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"desc\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"prd\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"prd_review_prompt_template\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prd\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:desc", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:desc", "target": "desc : str"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd", "target": "prd : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template", "target": "prd_review_prompt_template : str"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:run", "target": "run(prd)"}, {"predicate": "is", "source": "metagpt/actions/write_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_review.py", "target": "metagpt/actions/write_review.py:WriteReview"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/write_review.py:WriteReview:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/write_review.py:WriteReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"name\":\"WriteReview\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_review.py:WriteReview:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_review.py:WriteReview:run", "target": "run(context)"}, {"predicate": "is", "source": "metagpt/actions/project_management.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/project_management.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/project_management.py", "target": "metagpt/actions/project_management.py:WriteTasks"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_update_tasks"}, {"predicate": "has_class_function", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks"}, {"predicate": "has_class_function", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_merge"}, {"predicate": "has_class_function", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_update_requirements"}, {"predicate": "has_class_function", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_save_pdf"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"lineno\":39,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTasks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"name\":\"WriteTasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_update_tasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_run_new_tasks\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_merge\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_requirements\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_save_pdf\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/project_management.py:WriteTasks:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/project_management.py:WriteTasks:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/project_management.py:WriteTasks:run", "target": "run(with_messages, schema)"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"lineno\":15,\"end_lineno\":86,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTeachingPlanPart\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"name\":\"WriteTeachingPlanPart\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"language\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"rsp\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[str] \",\"default_value\":\"\"},{\"name\":\"topic\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"format_value\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"value\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"with_message\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"_set_result\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__str__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__repr__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:context", "target": "context : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language", "target": "language : str"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp", "target": "rsp : Optional[str]"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic", "target": "topic : str"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value", "target": "format_value(value)"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run", "target": "run(with_message)"}, {"predicate": "is", "source": "metagpt/actions/write_test.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_test.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_test.py", "target": "metagpt/actions/write_test.py:WriteTest"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:name"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:run"}, {"predicate": "has_class_function", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:write_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"lineno\":41,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTest\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"name\":\"WriteTest\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"context\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"Optional[TestingContext] \",\"default_value\":\"\"},{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"run\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"TestingContext\"},{\"name\":\"write_code\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:context", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_test.py:WriteTest:context", "target": "context : Optional[TestingContext]"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/actions/write_test.py:WriteTest:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:run", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_test.py:WriteTest:run", "target": "run(): TestingContext"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:write_code", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/actions/write_test.py:WriteTest:write_code", "target": "write_code(prompt)"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url"}, {"predicate": "has_class_function", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key", "target": "api_key"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret", "target": "api_secret"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id", "target": "app_id"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host", "target": "host"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message", "target": "message : NoneType"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path", "target": "path"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url", "target": "spark_url"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url", "target": "create_url()"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai_api.py", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai_api.py", "target": "metagpt/provider/zhipuai_api.py:ZhiPuEvent"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:get_choice_text"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"lineno\":35,\"end_lineno\":138,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"name\":\"ZhiPuAILLM\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"llm\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"str \",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"bool \",\"default_value\":\"\"}],\"methods\":[{\"name\":\"acompletion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"acompletion_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"messages\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"list[dict]\",\"default_value\":\"\"},{\"name\":\"timeout\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"dict\"},{\"name\":\"get_choice_text\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"resp\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"return_type\":\"str\"},{\"name\":\"__init__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"__init_zhipuai\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_const_kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_update_costs\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"},{\"name\":\"_achat_completion_stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"#\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm", "target": "llm"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model", "target": "model : str"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt", "target": "use_system_prompt : bool"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion", "target": "acompletion(messages: list[dict], timeout): dict"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text", "target": "acompletion_text(messages: list[dict], stream, timeout): str"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion", "target": "completion(messages: list[dict], timeout): dict"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:get_choice_text", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:get_choice_text", "target": "get_choice_text(resp: dict): str"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuEvent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"name\":\"ZhiPuEvent\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[{\"name\":\"name\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name", "target": "name"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:ainvoke"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:asse_invoke"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:get_header"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:get_sse_header"}, {"predicate": "has_class_function", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"lineno\":15,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuModelAPI\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"name\":\"ZhiPuModelAPI\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"ainvoke\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"arequest\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"invoke_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"InvokeType\",\"default_value\":\"\"},{\"name\":\"stream\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"method\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"headers\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"},{\"name\":\"asse_invoke\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"AsyncSSEClient\"},{\"name\":\"get_header\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"get_sse_header\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[],\"return_type\":\"dict\"},{\"name\":\"split_zhipu_api_url\",\"abstraction\":false,\"static\":false,\"visibility\":\"+\",\"args\":[{\"name\":\"invoke_type\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"InvokeType\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"value_type\":\"\",\"default_value\":\"\"}],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:ainvoke", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:ainvoke", "target": "ainvoke(): dict"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest", "target": "arequest(invoke_type: InvokeType, stream: bool, method: str, headers: dict, kwargs)"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:asse_invoke", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:asse_invoke", "target": "asse_invoke(): AsyncSSEClient"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:get_header", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:get_header", "target": "get_header(): dict"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:get_sse_header", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:get_sse_header", "target": "get_sse_header(): dict"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url", "target": "class_function"}, {"predicate": "has_args_desc", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url", "target": "split_zhipu_api_url(invoke_type: InvokeType, kwargs)"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "class"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name", "target": "class_property"}, {"predicate": "has_type_desc", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name", "target": "name : str"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_file", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_expr", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_name", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_if", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_if_compare", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_variable", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_assign", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_classes", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_split_class_line", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_split_relationship_line", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_get_label", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_create_path_mapping", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_repair_namespaces", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_repair_ns", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_find_root", "target": "class_function"}, {"predicate": "is", "source": "metagpt/repo_parser.py:is_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:is_func", "target": "{\"lineno\":420,\"end_lineno\":421,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_func\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ast.Constant:\n@Time : 2023/11/17 17:58\n@Author : alexanderwu\n@File : repo_parser.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/17 17:58\\n@Author : alexanderwu\\n@File : repo_parser.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ast", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:subprocess", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:pandas as pd", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:pydantic", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.const", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.utils.common", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['any_to_str', 'aread']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['handle_exception']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/startup.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/startup.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/startup.py", "target": "metagpt/startup.py:startup"}, {"predicate": "is", "source": "metagpt/startup.py:startup", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:startup", "target": "{\"lineno\":14,\"end_lineno\":75,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"startup\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/startup.py:app", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:app", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"app\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:asyncio", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:pathlib", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['Path']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:typer", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"typer\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:metagpt.config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['CONFIG']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:__name__:__main__", "target": "{\"lineno\":78,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/config.py:NotConfiguredException:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:LLMProviderEnum:__missing__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:_is_valid_llm_key", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:_update", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:_ensure_workspace_exists", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:_init_with_config_files_and_env", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:_get", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:__setattr__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:Config:__getattr__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/config.py:CONFIG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/config.py:CONFIG", "target": "{\"lineno\":287,\"end_lineno\":287,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONFIG\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:ast.Constant:\nProvide configuration, singleton\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.11 of RFC 135, add git repository support.\n 2. Add the parameter `src_workspace` for the old version project path.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nProvide configuration, singleton\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.11 of RFC 135, add git repository support.\\n 2. Add the parameter `src_workspace` for the old version project path.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:datetime", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:json", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:os", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:warnings", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:copy", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['deepcopy']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:enum", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['Enum']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:pathlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['Path']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:typing", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['Any']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:uuid", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['uuid4']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:yaml", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\",\"METAGPT_ROOT\",\"OPTIONS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['DEFAULT_WORKSPACE_ROOT', 'METAGPT_ROOT', 'OPTIONS']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\",\"METAGPT_ROOT\",\"OPTIONS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:metagpt.logs", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['logger']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:metagpt.tools", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\",\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['SearchEngineType', 'WebBrowserEngineType']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\",\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"require_python_version\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['require_python_version']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"require_python_version\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['CostManager']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:module:metagpt.utils.singleton", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config.py:names:['Singleton']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:asyncio", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['AsyncGenerator', 'Awaitable', 'Callable']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:pydantic", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.logs", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['logger']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.roles", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['Role']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.schema", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['Message']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/__init__.py:module:metagpt", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/__init__.py:names:['_compat as _']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"predicate": "is", "source": "metagpt/llm.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/llm.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/llm.py", "target": "metagpt/llm.py:LLM"}, {"predicate": "is", "source": "metagpt/llm.py:LLM", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:LLM", "target": "{\"lineno\":19,\"end_lineno\":24,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"LLM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/llm.py:_", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:_", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Assign\",\"tokens\":[\"_\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:ast.Constant:\n@Time : 2023/5/11 14:45\n@Author : alexanderwu\n@File : llm.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:45\\n@Author : alexanderwu\\n@File : llm.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.config", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['CONFIG', 'LLMProviderEnum']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['BaseLLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.provider.human_provider", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['HumanProvider']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"LLM_REGISTRY\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['LLM_REGISTRY']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"LLM_REGISTRY\"]}}"}, {"predicate": "is", "source": "metagpt/team.py:Team:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/team.py:Team:_check_balance", "target": "class_function"}, {"predicate": "is", "source": "metagpt/team.py:Team:_save", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/team.py:ast.Constant:\n@Time : 2023/5/12 00:30\n@Author : alexanderwu\n@File : team.py\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\n Section 2.2.3.3 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/12 00:30\\n@Author : alexanderwu\\n@File : team.py\\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\\n Section 2.2.3.3 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:warnings", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Any']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.actions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['UserRequirement']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['CONFIG']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.const", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['MESSAGE_ROUTE_TO_ALL', 'SERDESER_PATH']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.environment", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Environment']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.roles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Role']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.schema", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Message']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['NoMoneyException', 'read_json_file', 'serialize_decorator', 'write_json_file']", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/logs.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/logs.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:define_log_level"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:log_llm_stream"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:set_llm_stream_logfunc"}, {"predicate": "is", "source": "metagpt/logs.py:define_log_level", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:define_log_level", "target": "{\"lineno\":18,\"end_lineno\":26,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"define_log_level\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:log_llm_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:log_llm_stream", "target": "{\"lineno\":32,\"end_lineno\":33,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_llm_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:set_llm_stream_logfunc", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:set_llm_stream_logfunc", "target": "{\"lineno\":36,\"end_lineno\":38,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"set_llm_stream_logfunc\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:logger", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:logger", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:_llm_stream_log", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:_llm_stream_log", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"_llm_stream_log\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:ast.Constant:\n@Time : 2023/6/1 12:41\n@Author : alexanderwu\n@File : logs.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/1 12:41\\n@Author : alexanderwu\\n@File : logs.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:sys", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:datetime", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['datetime']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:functools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['partial']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:loguru", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['logger as _logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['METAGPT_ROOT']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document.py:Repo:_path", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document.py:Repo:_set", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document.py:validate_cols", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/document.py:validate_cols", "target": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_cols\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document.py:read_data", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/document.py:read_data", "target": "{\"lineno\":31,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_data\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:ast.Constant:\n@Time : 2023/6/8 14:03\n@Author : alexanderwu\n@File : document.py\n@Desc : Classes and Operations Related to Files in the File System.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/8 14:03\\n@Author : alexanderwu\\n@File : document.py\\n@Desc : Classes and Operations Related to Files in the File System.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:enum", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Enum']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:pandas as pd", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:langchain.document_loaders", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['TextLoader', 'UnstructuredPDFLoader', 'UnstructuredWordDocumentLoader']", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:langchain.text_splitter", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['CharacterTextSplitter']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:pydantic", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:tqdm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['tqdm']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:metagpt.repo_parser", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['RepoParser']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : environment.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n 1. Remove the functionality of `Environment` class as a public message buffer.\n 2. Standardize the message forwarding behavior of the `Environment` class.\n 3. Add the `is_idle` property.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n", "target": "{\"lineno\":3,\"end_lineno\":13,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : environment.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n 1. Remove the functionality of `Environment` class as a public message buffer.\\n 2. Standardize the message forwarding behavior of the `Environment` class.\\n 3. Add the `is_idle` property.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:asyncio", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:pathlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Path']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:typing", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Iterable', 'Set']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:pydantic", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.config", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['CONFIG']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.roles.role", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Role']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.schema", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Message']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_subscribed\",\"read_json_file\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['is_subscribed', 'read_json_file', 'write_json_file']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_subscribed\",\"read_json_file\",\"write_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/_compat.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/_compat.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:platform", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:sys", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:warnings", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:n:a:m:e:p:l:a:t:f:o:r:m:.:s:y:s:t:e:m", "target": "{\"lineno\":5,\"end_lineno\":23,\"type_name\":\"ast.If\",\"tokens\":[\"n\",\"a\",\"m\",\"e\",\"p\",\"l\",\"a\",\"t\",\"f\",\"o\",\"r\",\"m\",\".\",\"s\",\"y\",\"s\",\"t\",\"e\",\"m\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/const.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/const.py", "target": "metagpt/const.py:get_metagpt_package_root"}, {"predicate": "has_function", "source": "metagpt/const.py", "target": "metagpt/const.py:get_metagpt_root"}, {"predicate": "is", "source": "metagpt/const.py:get_metagpt_package_root", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/const.py:get_metagpt_package_root", "target": "{\"lineno\":23,\"end_lineno\":33,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_package_root\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:get_metagpt_root", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/const.py:get_metagpt_root", "target": "{\"lineno\":36,\"end_lineno\":46,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_root\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:OPTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:OPTIONS", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"OPTIONS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:METAGPT_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:METAGPT_ROOT", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT", "target": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_WORKSPACE_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:EXAMPLE_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:EXAMPLE_PATH", "target": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DATA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DATA_PATH", "target": "{\"lineno\":55,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_DATA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_DATA_PATH", "target": "{\"lineno\":56,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_DATA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:RESEARCH_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:RESEARCH_PATH", "target": "{\"lineno\":57,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TUTORIAL_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TUTORIAL_PATH", "target": "{\"lineno\":58,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"TUTORIAL_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:INVOICE_OCR_TABLE_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:INVOICE_OCR_TABLE_PATH", "target": "{\"lineno\":59,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_TABLE_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:UT_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:UT_PATH", "target": "{\"lineno\":61,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SWAGGER_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SWAGGER_PATH", "target": "{\"lineno\":62,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"SWAGGER_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:UT_PY_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:UT_PY_PATH", "target": "{\"lineno\":63,\"end_lineno\":63,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PY_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:API_QUESTIONS_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:API_QUESTIONS_PATH", "target": "{\"lineno\":64,\"end_lineno\":64,\"type_name\":\"ast.Assign\",\"tokens\":[\"API_QUESTIONS_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SERDESER_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SERDESER_PATH", "target": "{\"lineno\":66,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERDESER_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TMP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TMP", "target": "{\"lineno\":68,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"TMP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SOURCE_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SOURCE_ROOT", "target": "{\"lineno\":70,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"SOURCE_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PROMPT_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PROMPT_PATH", "target": "{\"lineno\":71,\"end_lineno\":71,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SKILL_DIRECTORY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SKILL_DIRECTORY", "target": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_DIRECTORY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MEM_TTL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MEM_TTL", "target": "{\"lineno\":77,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"MEM_TTL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_FROM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_FROM", "target": "{\"lineno\":80,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_FROM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO", "target": "{\"lineno\":81,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY", "target": "{\"lineno\":82,\"end_lineno\":82,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_CAUSE_BY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_META_ROLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_META_ROLE", "target": "{\"lineno\":83,\"end_lineno\":83,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_META_ROLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL", "target": "{\"lineno\":84,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_ALL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE", "target": "{\"lineno\":85,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_NONE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:REQUIREMENT_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:REQUIREMENT_FILENAME", "target": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BUGFIX_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BUGFIX_FILENAME", "target": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"BUGFIX_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME", "target": "{\"lineno\":89,\"end_lineno\":89,\"type_name\":\"ast.Assign\",\"tokens\":[\"PACKAGE_REQUIREMENTS_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DOCS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DOCS_FILE_REPO", "target": "{\"lineno\":91,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"DOCS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PRDS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PRDS_FILE_REPO", "target": "{\"lineno\":92,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRDS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO", "target": "{\"lineno\":93,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TASK_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TASK_FILE_REPO", "target": "{\"lineno\":94,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO", "target": "{\"lineno\":95,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO", "target": "{\"lineno\":96,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_API_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SEQ_FLOW_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SEQ_FLOW_FILE_REPO", "target": "{\"lineno\":97,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEQ_FLOW_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO", "target": "{\"lineno\":98,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PRD_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PRD_PDF_FILE_REPO", "target": "{\"lineno\":99,\"end_lineno\":99,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRD_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TASK_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TASK_PDF_FILE_REPO", "target": "{\"lineno\":100,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_CODES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_CODES_FILE_REPO", "target": "{\"lineno\":101,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_CODES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO", "target": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_OUTPUTS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO", "target": "{\"lineno\":103,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO", "target": "{\"lineno\":104,\"end_lineno\":104,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:RESOURCES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:RESOURCES_FILE_REPO", "target": "{\"lineno\":105,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESOURCES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SD_OUTPUT_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SD_OUTPUT_FILE_REPO", "target": "{\"lineno\":106,\"end_lineno\":106,\"type_name\":\"ast.Assign\",\"tokens\":[\"SD_OUTPUT_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:GRAPH_REPO_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:GRAPH_REPO_FILE_REPO", "target": "{\"lineno\":107,\"end_lineno\":107,\"type_name\":\"ast.Assign\",\"tokens\":[\"GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CLASS_VIEW_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CLASS_VIEW_FILE_REPO", "target": "{\"lineno\":108,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"CLASS_VIEW_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:YAPI_URL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:YAPI_URL", "target": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"YAPI_URL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_LANGUAGE", "target": "{\"lineno\":112,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_MAX_TOKENS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_MAX_TOKENS", "target": "{\"lineno\":113,\"end_lineno\":113,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_MAX_TOKENS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMMAND_TOKENS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMMAND_TOKENS", "target": "{\"lineno\":114,\"end_lineno\":114,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMAND_TOKENS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BRAIN_MEMORY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BRAIN_MEMORY", "target": "{\"lineno\":115,\"end_lineno\":115,\"type_name\":\"ast.Assign\",\"tokens\":[\"BRAIN_MEMORY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SKILL_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SKILL_PATH", "target": "{\"lineno\":116,\"end_lineno\":116,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SERPER_API_KEY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SERPER_API_KEY", "target": "{\"lineno\":117,\"end_lineno\":117,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERPER_API_KEY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_TOKEN_SIZE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_TOKEN_SIZE", "target": "{\"lineno\":118,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_TOKEN_SIZE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BASE64_FORMAT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BASE64_FORMAT", "target": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"BASE64_FORMAT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:REDIS_KEY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:REDIS_KEY", "target": "{\"lineno\":124,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"REDIS_KEY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:LLM_API_TIMEOUT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:LLM_API_TIMEOUT", "target": "{\"lineno\":125,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_API_TIMEOUT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:IGNORED_MESSAGE_ID", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:IGNORED_MESSAGE_ID", "target": "{\"lineno\":128,\"end_lineno\":128,\"type_name\":\"ast.Assign\",\"tokens\":[\"IGNORED_MESSAGE_ID\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:GENERALIZATION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:GENERALIZATION", "target": "{\"lineno\":131,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERALIZATION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMPOSITION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMPOSITION", "target": "{\"lineno\":132,\"end_lineno\":132,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPOSITION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:AGGREGATION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:AGGREGATION", "target": "{\"lineno\":133,\"end_lineno\":133,\"type_name\":\"ast.Assign\",\"tokens\":[\"AGGREGATION\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:ast.Constant:\n@Time : 2023/5/1 11:59\n@Author : alexanderwu\n@File : const.py\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\n common properties in the Message.\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/1 11:59\\n@Author : alexanderwu\\n@File : const.py\\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\\n common properties in the Message.\\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:contextvars", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"contextvars\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:os", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:module:loguru", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:metagpt", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__get_pydantic_core_schema__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__serialize_add_class_type__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__deserialize_with_real_type__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__init_subclass__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:Document:__str__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:Document:__repr__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__setattr__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__str__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__repr__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:UserMessage:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:SystemMessage:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:AIMessage:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:__hash__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/schema.py:T", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:T", "target": "{\"lineno\":387,\"end_lineno\":387,\"type_name\":\"ast.Assign\",\"tokens\":[\"T\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:ast.Constant:\n@Time : 2023/5/8 22:12\n@Author : alexanderwu\n@File : schema.py\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\n@Modified By: mashenquan, 2023/11/22.\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\n between actions.\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 22:12\\n@Author : alexanderwu\\n@File : schema.py\\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\\n@Modified By: mashenquan, 2023/11/22.\\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\\n between actions.\\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:__future__", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['annotations']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:asyncio", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:json", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:os.path", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:uuid", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:abc", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['ABC']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:asyncio", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Queue', 'QueueEmpty', 'wait_for']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:json", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['JSONDecodeError']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Dict\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Any', 'Callable', 'Dict', 'List', 'Optional', 'Type', 'TypeVar', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Dict\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pydantic", "target": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr', 'field_serializer', 'field_validator']", "target": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pydantic_core", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"core_schema\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['core_schema']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"core_schema\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.config", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['CONFIG']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.const", "target": "{\"lineno\":39,\"end_lineno\":46,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['MESSAGE_ROUTE_CAUSE_BY', 'MESSAGE_ROUTE_FROM', 'MESSAGE_ROUTE_TO', 'MESSAGE_ROUTE_TO_ALL', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":39,\"end_lineno\":46,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.logs", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['logger']", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.common", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['any_to_str', 'any_to_str_set', 'import_class']", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['handle_exception']", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.serialize", "target": "{\"lineno\":50,\"end_lineno\":54,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['actionoutout_schema_to_mapping', 'actionoutput_mapping_to_str', 'actionoutput_str_to_mapping']", "target": "{\"lineno\":50,\"end_lineno\":54,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_image.py", "target": "metagpt/learn/text_to_image.py:text_to_image"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py:text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:text_to_image", "target": "{\"lineno\":18,\"end_lineno\":40,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_image.py\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_image.py\\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.config", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['CONFIG']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.const", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.tools.metagpt_text_to_image", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['oas3_metagpt_text_to_image']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.tools.openai_text_to_image", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['oas3_openai_text_to_image']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.utils.s3", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['S3']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "is", "source": "metagpt/learn/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/learn/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:__all__", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_image", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['text_to_image']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_speech", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['text_to_speech']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.google_search", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['google_search']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"predicate": "is", "source": "metagpt/learn/google_search.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/google_search.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/google_search.py", "target": "metagpt/learn/google_search.py:google_search"}, {"predicate": "is", "source": "metagpt/learn/google_search.py:google_search", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:google_search", "target": "{\"lineno\":4,\"end_lineno\":12,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"google_search\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:names:['SearchEngine']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_speech.py", "target": "metagpt/learn/text_to_speech.py:text_to_speech"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py:text_to_speech", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:text_to_speech", "target": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_speech\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : text_to_speech.py\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : text_to_speech.py\\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.config", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['CONFIG']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.const", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.tools.azure_tts", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['oas3_azsure_tts']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.tools.iflytek_tts", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['oas3_iflytek_tts']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.utils.s3", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['S3']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_embedding.py", "target": "metagpt/learn/text_to_embedding.py:text_to_embedding"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py:text_to_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:text_to_embedding", "target": "{\"lineno\":14,\"end_lineno\":24,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_embedding.py\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_embedding.py\\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:module:metagpt.config", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:names:['CONFIG']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:module:metagpt.tools.openai_text_to_embedding", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:names:['oas3_openai_text_to_embedding']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : skill_loader.py\n@Desc : Skill YAML Configuration Loader.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : skill_loader.py\\n@Desc : Skill YAML Configuration Loader.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:aiofiles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:yaml", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['CONFIG']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:concurrent", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['futures']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['Literal', 'overload']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:metagpt.config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['CONFIG']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:__name__:__main__", "target": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc", "target": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"oas_http_svc\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : metagpt_oas3_api_svc.py\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\n\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : metagpt_oas3_api_svc.py\\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\\n\\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:module:pathlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:names:['Path']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:connexion", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:__name__:__main__", "target": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:ast.Constant:\n@Time : 2023/5/22 21:33\n@Author : alexanderwu\n@File : search_engine_meilisearch.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/22 21:33\\n@Author : alexanderwu\\n@File : search_engine_meilisearch.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['List']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:meilisearch", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"meilisearch\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:meilisearch.index", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['Index']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['handle_exception']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding", "target": "{\"lineno\":75,\"end_lineno\":87,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : openai_text_to_embedding.py\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : openai_text_to_embedding.py\\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['CONFIG']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['Any', 'Dict', 'Optional', 'Tuple']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:metagpt.config", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['CONFIG']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:__name__:__main__", "target": "{\"lineno\":113,\"end_lineno\":116,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock", "target": "{\"lineno\":102,\"end_lineno\":106,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_install_lock\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers", "target": "{\"lineno\":109,\"end_lineno\":132,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_install_browsers\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_log_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_log_stream", "target": "{\"lineno\":135,\"end_lineno\":140,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_log_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_lock", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_lock", "target": "{\"lineno\":143,\"end_lineno\":143,\"type_name\":\"ast.AnnAssign\",\"tokens\":[\"_install_lock\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_cache", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_cache", "target": "{\"lineno\":144,\"end_lineno\":144,\"type_name\":\"ast.Assign\",\"tokens\":[\"_install_cache\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n", "target": "{\"lineno\":2,\"end_lineno\":4,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:__future__", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['annotations']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:sys", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['Literal']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:playwright.async_api", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['async_playwright']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['CONFIG']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['WebPage']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:ast.Constant:\n@Time : 2023/5/6 20:15\n@Author : alexanderwu\n@File : search_engine.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/6 20:15\\n@Author : alexanderwu\\n@File : search_engine.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:importlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['Callable', 'Coroutine', 'Literal', 'Optional', 'Union', 'overload']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:semantic_kernel.skill_definition", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['sk_function']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:metagpt.config", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['CONFIG']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:metagpt.tools", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['SearchEngineType']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n", "target": "{\"lineno\":2,\"end_lineno\":4,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:__future__", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['annotations']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:importlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['Any', 'Callable', 'Coroutine', 'overload']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.config", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['CONFIG']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.tools", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['WebBrowserEngineType']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['WebPage']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:json", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['Any', 'Dict', 'Optional', 'Tuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:aiohttp", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:metagpt.config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['CONFIG']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:__name__:__main__", "target": "{\"lineno\":115,\"end_lineno\":118,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:ast.Constant:\n@Time : 2023/9/26 14:27\n@Author : zhanglei\n@File : moderation.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/26 14:27\\n@Author : zhanglei\\n@File : moderation.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:names:['Union']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:module:metagpt.llm", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:names:['LLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/__init__.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/__init__.py", "target": "metagpt/tools/__init__.py:SearchEngineType"}, {"predicate": "has_class", "source": "metagpt/tools/__init__.py", "target": "metagpt/tools/__init__.py:WebBrowserEngineType"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngineType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "{\"name\":\"SearchEngineType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "class"}, {"predicate": "has_class_function", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "{\"lineno\":21,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngineType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "{\"name\":\"WebBrowserEngineType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[{\"name\":\"__missing__\",\"abstraction\":false,\"static\":false,\"visibility\":\"-\",\"args\":[],\"return_type\":\"\"}]}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:35\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:35\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:module:enum", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:names:['Enum']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:safe_google_results", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:safe_google_results", "target": "{\"lineno\":120,\"end_lineno\":133,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"safe_google_results\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:concurrent", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['futures']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:urllib.parse", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['urlparse']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:httplib2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"httplib2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:metagpt.config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['CONFIG']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:__name__:__main__", "target": "{\"lineno\":136,\"end_lineno\":139,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func", "target": "{\"lineno\":105,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_gen_get_driver_func\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types", "target": "{\"lineno\":90,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"_webdriver_manager_types\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n", "target": "{\"lineno\":2,\"end_lineno\":4,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:__future__", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['annotations']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:importlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:concurrent", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['futures']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:copy", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['deepcopy']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['Literal']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.common.by", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['By']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['expected_conditions as EC']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support.wait", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WebDriverWait']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.download_manager", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMDownloadManager']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.http", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMHttpClient']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.config", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['CONFIG']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WebPage']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/openapi_v3_hello.py", "target": "metagpt/tools/openapi_v3_hello.py:post_greeting"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py:post_greeting", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:post_greeting", "target": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"post_greeting\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : mashenquan\n@File : openapi_v3_hello.py\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\n\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : mashenquan\\n@File : openapi_v3_hello.py\\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\\n\\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:module:pathlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:names:['Path']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:connexion", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:__name__:__main__", "target": "{\"lineno\":25,\"end_lineno\":29,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:oas3_azsure_tts", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:oas3_azsure_tts", "target": "{\"lineno\":61,\"end_lineno\":105,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_azsure_tts\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:ast.Constant:\n@Time : 2023/6/9 22:22\n@Author : Leo Xiao\n@File : azure_tts.py\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/9 22:22\\n@Author : Leo Xiao\\n@File : azure_tts.py\\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:uuid", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['uuid4']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:aiofiles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:azure.cognitiveservices.speech", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['AudioConfig', 'SpeechConfig', 'SpeechSynthesizer']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['CONFIG']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:_save", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:run_i2i", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:SDEngine:run_sam", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:decode_base64_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:decode_base64_to_image", "target": "{\"lineno\":112,\"end_lineno\":117,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_base64_to_image\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:batch_decode_base64_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:batch_decode_base64_to_image", "target": "{\"lineno\":120,\"end_lineno\":123,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"batch_decode_base64_to_image\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:payload", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:payload", "target": "{\"lineno\":19,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"payload\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/sd_engine.py:default_negative_prompt", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:default_negative_prompt", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"default_negative_prompt\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:base64", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:io", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"io\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:json", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:module:os.path", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"os.path\",\"names\":[\"join\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:names:['join']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"os.path\",\"names\":[\"join\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:names:['List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:module:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:names:['ClientSession']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:module:PIL", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\",\"PngImagePlugin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:names:['Image', 'PngImagePlugin']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"PIL\",\"names\":[\"Image\",\"PngImagePlugin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:module:metagpt.config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:names:['CONFIG']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:module:metagpt.const", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SD_OUTPUT_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:names:['SD_OUTPUT_FILE_REPO']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SD_OUTPUT_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/sd_engine.py:__name__:__main__", "target": "{\"lineno\":126,\"end_lineno\":133,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image", "target": "{\"lineno\":60,\"end_lineno\":69,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : openai_text_to_image.py\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : openai_text_to_image.py\\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:requests", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:module:metagpt.llm", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:names:['LLM']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:ICL_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:ICL_SAMPLE", "target": "{\"lineno\":10,\"end_lineno\":64,\"type_name\":\"ast.Assign\",\"tokens\":[\"ICL_SAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX", "target": "{\"lineno\":66,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX", "target": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"YFT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:OCR_API_DOC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:OCR_API_DOC", "target": "{\"lineno\":77,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"OCR_API_DOC\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:json", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['OpenAILLM as GPTAPI']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.utils.common", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['awrite']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"predicate": "is", "source": "metagpt/tools/translator.py:prompt", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:prompt", "target": "{\"lineno\":9,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"prompt\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:ast.Constant:\n@Time : 2023/4/29 15:36\n@Author : alexanderwu\n@File : translator.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:36\\n@Author : alexanderwu\\n@File : translator.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image", "target": "{\"lineno\":86,\"end_lineno\":98,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_metagpt_text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : metagpt_text_to_image.py\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : metagpt_text_to_image.py\\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['Dict', 'List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['BaseModel']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['CONFIG']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts", "target": "{\"lineno\":118,\"end_lineno\":152,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_iflytek_tts\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_IFLYTEK_VOICE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : iflytek_tts.py\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : iflytek_tts.py\\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:hashlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:hmac", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:uuid", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:datetime", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['datetime']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:enum", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Enum']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:pathlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Path']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:time", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['mktime']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:typing", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Optional']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:urllib.parse", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['urlencode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:wsgiref.handlers", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['format_date_time']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:aiofiles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:websockets as websockets", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"websockets as websockets\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:pydantic", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['BaseModel']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:metagpt.config", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['CONFIG']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:metagpt.logs", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['logger']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : alexanderwu\n@File : prompt_writer.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : alexanderwu\\n@File : prompt_writer.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:names:['Union']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:ast.Constant:\n@Time : 2023/5/20 12:15\n@Author : alexanderwu\n@File : memory.py\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 12:15\\n@Author : alexanderwu\\n@File : memory.py\\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:collections", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['defaultdict']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['DefaultDict', 'Iterable', 'Set']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['BaseModel', 'Field', 'SerializeAsAny']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['IGNORED_MESSAGE_ID']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['Message']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"read_json_file\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['any_to_str', 'any_to_str_set', 'read_json_file', 'write_json_file']", "target": "{\"lineno\":17,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"read_json_file\",\"write_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_summarize", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : brain_memory.py\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : brain_memory.py\\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.config", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['CONFIG']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_LANGUAGE\",\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['DEFAULT_LANGUAGE', 'DEFAULT_MAX_TOKENS', 'DEFAULT_TOKEN_SIZE']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_LANGUAGE\",\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.provider", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['MetaGPTLLM']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Message', 'SimpleMessage']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.utils.redis", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Redis']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:_load", "target": "class_function"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:ast.Constant:\n@Desc : the implement of memory storage\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of memory storage\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain.embeddings", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain.vectorstores.faiss", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['FAISS']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain_core.embeddings", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Embeddings']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['DATA_PATH', 'MEM_TTL']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.document_store.faiss_store", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['FaissStore']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.utils.serialize", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['deserialize_message', 'serialize_message']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"predicate": "is", "source": "metagpt/memory/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/memory/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:__all__", "target": "{\"lineno\":14,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:module:metagpt.memory.memory", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:names:['Memory']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:ast.Constant:\n@Desc : the implement of Long-term memory\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of Long-term memory\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['ConfigDict', 'Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.memory", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Memory']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.memory.memory_storage", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['MemoryStorage']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.roles.role", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['RoleContext']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Message']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:dataclasses", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['dataclass']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['List']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:qdrant_client", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['QdrantClient']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:qdrant_client.models", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['Filter', 'PointStruct', 'VectorParams']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['BaseStore']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:ast.Constant:\n@Time : 2023/5/29 14:46\n@Author : alexanderwu\n@File : chromadb_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/29 14:46\\n@Author : alexanderwu\\n@File : chromadb_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:chromadb", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"chromadb\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:ast.Constant:\n@Time : 2023/8/9 15:42\n@Author : unkn-wn (Leon Yee)\n@File : lancedb_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/9 15:42\\n@Author : unkn-wn (Leon Yee)\\n@File : lancedb_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:shutil", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:lancedb", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"lancedb\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:__all__", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:module:metagpt.document_store.faiss_store", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:names:['FaissStore']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:_load", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:_write", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : faiss_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : faiss_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain.embeddings", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain.vectorstores", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['FAISS']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain_core.embeddings", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Embeddings']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['CONFIG']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.document", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['IndexableDocument']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['LocalStore']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:search", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:write", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:add", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_load", "target": "class_function"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_write", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:ast.Constant:\n@Time : 2023/5/28 00:01\n@Author : alexanderwu\n@File : base_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/28 00:01\\n@Author : alexanderwu\\n@File : base_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:metagpt.config", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['Config']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:ast.Constant:\n@Time : 2023/7/21 11:15\n@Author : Leo Xiao\n@File : anthropic_api.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/21 11:15\\n@Author : Leo Xiao\\n@File : anthropic_api.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:anthropic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"anthropic\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:module:anthropic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:names:['Anthropic', 'AsyncAnthropic']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:module:metagpt.config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:names:['CONFIG']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:google.generativeai as genai", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"google.generativeai as genai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.ai", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['generativelanguage as glm']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.generative_models", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['GenerativeModel']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['content_types']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types.generation_types", "target": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['AsyncGenerateContentResponse', 'GenerateContentResponse', 'GenerationConfig']", "target": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:tenacity", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.config", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['CONFIG', 'LLMProviderEnum']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.logs", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['BaseLLM']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['register_provider']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['log_and_reraise']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation;\n Change cost control from global to company level.\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n", "target": "{\"lineno\":2,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation;\\n Change cost control from global to company level.\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:openai", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['AsyncAzureOpenAI']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:openai._base_client", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['AsyncHttpxClientWrapper']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['LLMProviderEnum']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['register_provider']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['OpenAILLM']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:__init_fireworks", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_GRADE_TOKEN_COSTS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:re", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['APIConnectionError', 'AsyncStream']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai.types", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CompletionUsage']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai.types.chat", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['ChatCompletionChunk']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CONFIG', 'Config', 'LLMProviderEnum']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['register_provider']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['OpenAILLM', 'log_and_reraise']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CostManager', 'Costs']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:requests", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['ConnectionError']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:tenacity", "target": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['CONFIG', 'LLMProviderEnum']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.const", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['LLM_API_TIMEOUT']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.logs", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['BaseLLM']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.general_api_requestor", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['GeneralAPIRequestor']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['register_provider']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['log_and_reraise']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['CostManager']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "is", "source": "metagpt/provider/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/provider/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:__all__", "target": "{\"lineno\":18,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:ast.Constant:\n@Time : 2023/5/5 22:59\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 22:59\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.fireworks_api", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['FireworksLLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.google_gemini_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['GeminiLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.ollama_api", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OllamaLLM']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.open_llm_api", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OpenLLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OpenAILLM']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.zhipuai_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['ZhiPuAILLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.azure_openai_api", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['AzureOpenAILLM']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.metagpt_api", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['MetaGPTLLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_init_openai", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_init_client", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_process_message", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:log_and_reraise", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:log_and_reraise", "target": "{\"lineno\":42,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_and_reraise\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for isolation;\n Change cost control from global to company level.\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n", "target": "{\"lineno\":2,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for isolation;\\n Change cost control from global to company level.\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['AsyncIterator', 'Union']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['APIConnectionError', 'AsyncOpenAI', 'AsyncStream']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai._base_client", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['AsyncHttpxClientWrapper']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai.types", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CompletionUsage']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai.types.chat", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['ChatCompletion', 'ChatCompletionChunk']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:tenacity", "target": "{\"lineno\":19,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":19,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.config", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CONFIG', 'Config', 'LLMProviderEnum']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.logs", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['BaseLLM']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.constant", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['GENERAL_FUNCTION_SCHEMA', 'GENERAL_TOOL_CHOICE']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['register_provider']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.schema", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['Message']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['Costs']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['handle_exception']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":35,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['count_message_tokens', 'count_string_tokens', 'get_max_completion_tokens']", "target": "{\"lineno\":35,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:ast.Constant:\n@File : spark_api.py\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : spark_api.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:_thread as thread", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"_thread as thread\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:base64", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:datetime", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:hashlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:hmac", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:ssl", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"ssl\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:time", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['mktime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:urllib.parse", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['urlencode', 'urlparse']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:wsgiref.handlers", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['format_date_time']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:websocket", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"websocket\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['CONFIG', 'LLMProviderEnum']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['register_provider']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:parse_stream_helper", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:parse_stream_helper", "target": "{\"lineno\":15,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:parse_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:parse_stream", "target": "{\"lineno\":31,\"end_lineno\":35,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['AsyncGenerator', 'Generator', 'Iterator', 'Tuple', 'Union']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:aiohttp", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:requests", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:metagpt.provider.general_api_base", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['APIRequestor']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_user_msg", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_system_msg", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:ast.Constant:\n@Time : 2023/5/5 23:04\n@Author : alexanderwu\n@File : base_llm.py\n@Desc : mashenquan, 2023/8/22. + try catch\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:04\\n@Author : alexanderwu\\n@File : base_llm.py\\n@Desc : mashenquan, 2023/8/22. + try catch\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:json", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:abc", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['Optional']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "is", "source": "metagpt/provider/constant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/constant.py", "target": "python"}, {"predicate": "is", "source": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA", "target": "{\"lineno\":3,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_FUNCTION_SCHEMA\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_TOOL_CHOICE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:enum", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['Enum']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:openai", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:zhipuai", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:requests", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['ConnectionError']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:tenacity", "target": "{\"lineno\":11,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":11,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['CONFIG', 'LLMProviderEnum']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['register_provider']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['log_and_reraise']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.zhipuai.zhipu_model_api", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['ZhiPuModelAPI']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_console_log_level", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_console_log_level", "target": "{\"lineno\":78,\"end_lineno\":82,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_console_log_level\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_debug", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_debug", "target": "{\"lineno\":85,\"end_lineno\":89,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_debug\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_info", "target": "{\"lineno\":92,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_warn", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_warn", "target": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_warn\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:logfmt", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logfmt", "target": "{\"lineno\":105,\"end_lineno\":120,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"logfmt\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_build_api_url", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_build_api_url", "target": "{\"lineno\":153,\"end_lineno\":159,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_build_api_url\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_requests_proxies_arg", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_requests_proxies_arg", "target": "{\"lineno\":162,\"end_lineno\":173,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_requests_proxies_arg\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg", "target": "{\"lineno\":176,\"end_lineno\":187,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_aiohttp_proxies_arg\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_make_session", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_make_session", "target": "{\"lineno\":190,\"end_lineno\":196,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_make_session\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream_helper", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream_helper", "target": "{\"lineno\":199,\"end_lineno\":210,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream", "target": "{\"lineno\":213,\"end_lineno\":217,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream_async", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream_async", "target": "{\"lineno\":220,\"end_lineno\":224,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"parse_stream_async\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:aiohttp_session", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:aiohttp_session", "target": "{\"lineno\":620,\"end_lineno\":622,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aiohttp_session\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:logger", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logger", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:TIMEOUT_SECS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:TIMEOUT_SECS", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TIMEOUT_SECS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS", "target": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_SESSION_LIFETIME_SECS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_CONNECTION_RETRIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_thread_context", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_thread_context", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"_thread_context\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:LLM_LOG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:LLM_LOG", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_LOG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:api_key_to_header", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:api_key_to_header", "target": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"api_key_to_header\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:os", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:platform", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:sys", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:threading", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:time", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:contextlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['asynccontextmanager']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:enum", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['Enum']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['AsyncGenerator', 'AsyncIterator', 'Dict', 'Iterator', 'Optional', 'Tuple', 'Union', 'overload']", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:urllib.parse", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['urlencode', 'urlsplit', 'urlunsplit']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:aiohttp", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:requests", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:sys.version_info", "target": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.If\",\"tokens\":[\"sys.version_info\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logging", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.Import\",\"tokens\":[\"logging\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:openai", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:openai", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['version']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:register_provider", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:register_provider", "target": "{\"lineno\":27,\"end_lineno\":34,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_provider\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_REGISTRY\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:ast.Constant:\n@Time : 2023/12/19 17:26\n@Author : alexanderwu\n@File : llm_provider_registry.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 17:26\\n@Author : alexanderwu\\n@File : llm_provider_registry.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:module:metagpt.config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:names:['LLMProviderEnum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"LLMProviderEnum\"]}}"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : metagpt_api.py\n@Desc : MetaGPT LLM provider.\n", "target": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : metagpt_api.py\\n@Desc : MetaGPT LLM provider.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['LLMProviderEnum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.provider", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['OpenAILLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['register_provider']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:__init_openllm", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage", "target": "class_function"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:openai.types", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['CompletionUsage']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.config", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['CONFIG', 'Config', 'LLMProviderEnum']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\",\"LLMProviderEnum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.logs", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['logger']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['register_provider']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['OpenAILLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['CostManager', 'Costs']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['count_message_tokens', 'count_string_tokens']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:ast.Constant:\nFilename: MetaGPT/metagpt/provider/human_provider.py\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\nAuthor: garylin2099\n", "target": "{\"lineno\":1,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nFilename: MetaGPT/metagpt/provider/human_provider.py\\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\\nAuthor: garylin2099\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.logs", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['logger']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['BaseLLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:_aread", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:module:zhipuai.utils.sse_client", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.utils.sse_client\",\"names\":[\"_FIELD_SEPARATOR\",\"Event\",\"SSEClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:names:['_FIELD_SEPARATOR', 'Event', 'SSEClient']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.utils.sse_client\",\"names\":[\"_FIELD_SEPARATOR\",\"Event\",\"SSEClient\"]}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:zhipuai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.model_api.api", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.model_api.api\",\"names\":[\"InvokeType\",\"ModelAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['InvokeType', 'ModelAPI']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.model_api.api\",\"names\":[\"InvokeType\",\"ModelAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.utils.http_client", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.utils.http_client\",\"names\":[\"headers as zhipuai_default_headers\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['headers as zhipuai_default_headers']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.utils.http_client\",\"names\":[\"headers as zhipuai_default_headers\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.general_api_requestor", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['GeneralAPIRequestor']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.zhipuai.async_sse_client", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['AsyncSSEClient']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:metagpt.utils.repair_llm_raw_output", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['RepairType', 'extract_content_from_output', 'repair_llm_raw_output', 'retry_parse_json_text']", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess", "target": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"llm_output_postprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:module:metagpt.provider.postprocess.base_postprocess_plugin", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['BasePostProcessPlugin']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"predicate": "is", "source": "metagpt/management/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/management/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/management/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:58\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:58\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:Skill", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:Skill", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Assign\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:ast.Constant:\n@Time : 2023/6/5 01:44\n@Author : alexanderwu\n@File : skill_manager.py\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/5 01:44\\n@Author : alexanderwu\\n@File : skill_manager.py\\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['Action']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.const", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['PROMPT_PATH']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.document_store.chromadb_store", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['ChromaStore']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:__name__:__main__", "target": "{\"lineno\":77,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_parse_tasks", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_write_code", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_summarize", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_is_pass", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_think", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_coding_context", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_coding_doc", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_code_actions", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:IS_PASS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:IS_PASS_PROMPT", "target": "{\"lineno\":48,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_PASS_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\n distribution feature for message filtering.\n 2. Consolidate message reception and processing logic within `_observe`.\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\n 4. Supplemented the external transmission of internal messages.\n@Modified By: mashenquan, 2023-11-27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n", "target": "{\"lineno\":3,\"end_lineno\":18,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\\n distribution feature for message filtering.\\n 2. Consolidate message reception and processing logic within `_observe`.\\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\\n 4. Supplemented the external transmission of internal messages.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:__future__", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['annotations']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:json", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:collections", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['defaultdict']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:pathlib", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Path']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:typing", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Set']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Action', 'WriteCode', 'WriteCodeReview', 'WriteTasks']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.fix_bug", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['FixBug']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.summarize_code", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['SummarizeCode']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.config", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CONFIG']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.const", "target": "{\"lineno\":31,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CODE_SUMMARIES_FILE_REPO', 'CODE_SUMMARIES_PDF_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":31,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.logs", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['logger']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.roles", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Role']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.schema", "target": "{\"lineno\":39,\"end_lineno\":45,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CodeSummarizeContext', 'CodingContext', 'Document', 'Documents', 'Message']", "target": "{\"lineno\":39,\"end_lineno\":45,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":46,\"end_lineno\":46,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['any_to_name', 'any_to_str', 'any_to_str_set']", "target": "{\"lineno\":46,\"end_lineno\":46,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_act", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_observe", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : qa_engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\n@Modified By: mashenquan, 2023-11-27.\n 1. Following the think-act principle, solidify the task parameters when creating the\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\n to using file references.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : qa_engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\\n to using file references.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.actions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['DebugError', 'RunCode', 'WriteTest']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.actions.summarize_code", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['SummarizeCode']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.config", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['CONFIG']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.const", "target": "{\"lineno\":22,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['MESSAGE_ROUTE_TO_NONE', 'TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO']", "target": "{\"lineno\":22,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.logs", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['logger']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.roles", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['Role']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.schema", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['Document', 'Message', 'RunCodeContext', 'TestingContext']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['any_to_str_set', 'parse_recipient']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['FileRepository']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:_think", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:_react", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : teacher.py\n@Desc : Used by Agent Store\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : teacher.py\\n@Desc : Used by Agent Store\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:aiofiles", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.actions", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['UserRequirement']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.actions.write_teaching_plan", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['TeachingPlanBlock', 'WriteTeachingPlanPart']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['CONFIG']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.roles", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['Role']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.schema", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['Message']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.utils.common", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['any_to_str']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\"]}}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:_think", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:_observe", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : product_manager.py\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : product_manager.py\\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['UserRequirement', 'WritePRD']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.actions.prepare_documents", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['PrepareDocuments']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['CONFIG']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.roles.role", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['Role']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.utils.common", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['any_to_name']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:_set_store", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['SearchAndSummarize', 'UserRequirement']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['BaseStore']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.roles", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Role']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.tools", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['SearchEngineType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:_act_sp", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:_act", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:ast.Constant:\n@Time : 2023/5/23 17:25\n@Author : alexanderwu\n@File : searcher.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:25\\n@Author : alexanderwu\\n@File : searcher.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"ActionOutput\",\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['ActionOutput', 'SearchAndSummarize']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"ActionOutput\",\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions.action_node", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['ActionNode']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.roles", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Role']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Message']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.tools", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['SearchEngineType']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:_plan", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:ast.Constant:\n@Time : 2023/8/7\n@Author : mashenquan\n@File : assistant.py\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\n make these symbols configurable and standardized, making the process of building flows more convenient.\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\n configuration file.\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\n indicates that further reasoning cannot continue.\n\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/7\\n@Author : mashenquan\\n@File : assistant.py\\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\\n make these symbols configurable and standardized, making the process of building flows more convenient.\\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\\n configuration file.\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\\n indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:enum", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Enum']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:pathlib", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Path']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:typing", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Optional']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:pydantic", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Field']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.actions.skill_action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['ArgumentsParingAction', 'SkillAction']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.actions.talk_action", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['TalkAction']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.config", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['CONFIG']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.learn.skill_loader", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['SkillsDeclaration']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.logs", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['logger']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.memory.brain_memory", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['BrainMemory']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.roles", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Role']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.schema", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Message']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/roles/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/roles/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:__all__", "target": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.role", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Role']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.architect", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Architect']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.project_manager", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['ProjectManager']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.product_manager", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['ProductManager']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.engineer", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Engineer']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.qa_engineer", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['QaEngineer']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.searcher", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Searcher']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.sales", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Sales']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.customer_service", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['CustomerService']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:check", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_reset", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_setting", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_init_action_system_message", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_init_actions", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_set_react_mode", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_watch", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_set_state", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_get_prefix", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_think", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_observe", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_react", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act_by_order", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_plan_and_act", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/role.py:PREFIX_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:PREFIX_TEMPLATE", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONSTRAINT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:STATE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:STATE_TEMPLATE", "target": "{\"lineno\":53,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"STATE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:ROLE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ROLE_TEMPLATE", "target": "{\"lineno\":70,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"ROLE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ast.Constant:\n@Time : 2023/5/11 14:42\n@Author : alexanderwu\n@File : role.py\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\n consolidated within the `_observe` function.\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\n they've subscribed to through the `subscribed_tags` property.\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n", "target": "{\"lineno\":3,\"end_lineno\":21,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:42\\n@Author : alexanderwu\\n@File : role.py\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\\n consolidated within the `_observe` function.\\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\\n they've subscribed to through the `subscribed_tags` property.\\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:__future__", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['annotations']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:enum", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Enum']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:pathlib", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Path']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:typing", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Any', 'Iterable', 'Optional', 'Set', 'Type']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:pydantic", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions.action_node", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ActionNode']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions.add_requirement", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['UserRequirement']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.const", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['SERDESER_PATH']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.llm", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\",\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['LLM', 'HumanProvider']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\",\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.logs", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['logger']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.memory", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Memory']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['BaseLLM']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.schema", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Message', 'MessageQueue', 'SerializationMixin']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.common", "target": "{\"lineno\":40,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"import_class\",\"read_json_file\",\"role_raise_decorator\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['any_to_name', 'any_to_str', 'import_class', 'read_json_file', 'role_raise_decorator', 'write_json_file']", "target": "{\"lineno\":40,\"end_lineno\":47,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"import_class\",\"read_json_file\",\"role_raise_decorator\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.repair_llm_raw_output", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['extract_state_value_from_output']", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:ast.Constant:\n@Time : 2023/9/21 14:10:05\n@Author : Stitch-z\n@File : invoice_ocr_assistant.py\n", "target": "{\"lineno\":4,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 14:10:05\\n@Author : Stitch-z\\n@File : invoice_ocr_assistant.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:json", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Optional']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:pandas as pd", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['BaseModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.actions.invoice_ocr", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['GenerateTable', 'InvoiceOCR', 'ReplyQuestion']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.prompts.invoice_ocr", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['INVOICE_OCR_SUCCESS']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.roles.role", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : architect.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : architect.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['WritePRD']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.actions.design_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['WriteDesign']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.roles.role", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['Role']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:DESC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:DESC", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESC\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['BaseStore']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:metagpt.roles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Sales']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:_think", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:_act", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:ast.Constant:\n@Time : 2023/9/13 12:23\n@Author : femto Zheng\n@File : sk_agent.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\n distribution feature for message filtering.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:23\\n@Author : femto Zheng\\n@File : sk_agent.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\\n distribution feature for message filtering.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Any', 'Callable', 'Union']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Field']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Kernel']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['SequentialPlanner']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.action_planner.action_planner", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['ActionPlanner']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.basic_planner", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['BasicPlanner', 'Plan']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.actions", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['UserRequirement']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.actions.execute_task", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['ExecuteTask']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.llm", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['LLM']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['BaseLLM']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.roles", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Role']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.schema", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Message']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.utils.make_sk_kernel", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['make_sk_kernel']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:PREFIX", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS", "target": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_INSTRUCTIONS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:SUFFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:SUFFIX", "target": "{\"lineno\":21,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUFFIX\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:ast.Constant:\n@Time : 2023/5/18 22:43\n@Author : alexanderwu\n@File : prompt.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 22:43\\n@Author : alexanderwu\\n@File : prompt.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:datetime", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['datetime']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Dict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.actions.write_tutorial", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['WriteContent', 'WriteDirectory']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['TUTORIAL_PATH']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.roles.role", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Message']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.utils.file", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['File']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:ast.Constant:\n@Time : 2023/5/11 15:04\n@Author : alexanderwu\n@File : project_manager.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 15:04\\n@Author : alexanderwu\\n@File : project_manager.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['WriteTasks']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.actions.design_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['WriteDesign']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.roles.role", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['Role']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:_think", "target": "class_function"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:_act", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['BaseModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Action', 'CollectLinks', 'ConductResearch', 'WebBrowseAndSummarize']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.actions.research", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['get_research_system_text']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['RESEARCH_PATH']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.roles.role", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:__name__:__main__", "target": "{\"lineno\":119,\"end_lineno\":126,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/serialize.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutput_mapping_to_str"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutput_str_to_mapping"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:serialize_message"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:deserialize_message"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping", "target": "{\"lineno\":11,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutout_schema_to_mapping\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutput_mapping_to_str", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutput_mapping_to_str", "target": "{\"lineno\":43,\"end_lineno\":47,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_mapping_to_str\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutput_str_to_mapping", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutput_str_to_mapping", "target": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_str_to_mapping\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:serialize_message", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:serialize_message", "target": "{\"lineno\":60,\"end_lineno\":71,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_message\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:deserialize_message", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:deserialize_message", "target": "{\"lineno\":74,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"deserialize_message\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:copy", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:pickle", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pickle\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:module:metagpt.utils.common", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:names:['import_class']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_playwright.py", "target": "metagpt/utils/mmdc_playwright.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:mermaid_to_file", "target": "{\"lineno\":17,\"end_lineno\":121,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : Steven Lee\n@File : mmdc_playwright.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : Steven Lee\\n@File : mmdc_playwright.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:os", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:urllib.parse", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['urljoin']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:playwright.async_api", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['async_playwright']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:ast.Constant:\n@Time : 2023/11/22\n@Author : mashenquan\n@File : dependency_file.py\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/22\\n@Author : mashenquan\\n@File : dependency_file.py\\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['Set']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:aiofiles", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['aread']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['handle_exception']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/make_sk_kernel.py", "target": "metagpt/utils/make_sk_kernel.py:make_sk_kernel"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py:make_sk_kernel", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:make_sk_kernel", "target": "{\"lineno\":19,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_sk_kernel\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:ast.Constant:\n@Time : 2023/9/13 12:29\n@Author : femto Zheng\n@File : make_sk_kernel.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:29\\n@Author : femto Zheng\\n@File : make_sk_kernel.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:semantic_kernel as sk", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"semantic_kernel as sk\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion", "target": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['AzureChatCompletion']", "target": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['OpenAIChatCompletion']", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['CONFIG']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:count_message_tokens"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:count_string_tokens"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:get_max_completion_tokens"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:count_message_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:count_message_tokens", "target": "{\"lineno\":56,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_message_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:count_string_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:count_string_tokens", "target": "{\"lineno\":111,\"end_lineno\":127,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_string_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:get_max_completion_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:get_max_completion_tokens", "target": "{\"lineno\":130,\"end_lineno\":142,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_max_completion_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:TOKEN_COSTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:TOKEN_COSTS", "target": "{\"lineno\":14,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_COSTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:TOKEN_MAX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:TOKEN_MAX", "target": "{\"lineno\":35,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_MAX\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:ast.Constant:\n@Time : 2023/5/18 00:40\n@Author : alexanderwu\n@File : token_counter.py\nref1: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\nref2: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\nref3: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\nref4: https://ai.google.dev/models/gemini\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 00:40\\n@Author : alexanderwu\\n@File : token_counter.py\\nref1: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\\nref2: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\\nref3: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\\nref4: https://ai.google.dev/models/gemini\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:tiktoken", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"tiktoken\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity", "target": "{\"lineno\":24,\"end_lineno\":41,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_case_sensitivity\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing", "target": "{\"lineno\":44,\"end_lineno\":64,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_special_character_missing\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing", "target": "{\"lineno\":67,\"end_lineno\":105,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_required_key_pair_missing\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_json_format", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_json_format", "target": "{\"lineno\":108,\"end_lineno\":123,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_json_format\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output", "target": "{\"lineno\":126,\"end_lineno\":137,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_repair_llm_raw_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output", "target": "{\"lineno\":140,\"end_lineno\":161,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_llm_raw_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json", "target": "{\"lineno\":164,\"end_lineno\":206,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_invalid_json\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry", "target": "{\"lineno\":209,\"end_lineno\":243,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"run_after_exp_and_passon_next_retry\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text", "target": "{\"lineno\":251,\"end_lineno\":265,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"retry_parse_json_text\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output", "target": "{\"lineno\":268,\"end_lineno\":298,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_content_from_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output", "target": "{\"lineno\":301,\"end_lineno\":314,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_state_value_from_output\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:copy", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:enum", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['Enum']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['Callable', 'Union']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:regex as re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"regex as re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['RetryCallState', 'retry', 'stop_after_attempt', 'wait_fixed']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['CONFIG']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.utils.custom_decoder", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['CustomDecoder']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mermaid.py", "target": "metagpt/utils/mermaid.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:mermaid_to_file", "target": "{\"lineno\":20,\"end_lineno\":92,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:MMC1", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:MMC1", "target": "{\"lineno\":95,\"end_lineno\":127,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC1\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:MMC2", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:MMC2", "target": "{\"lineno\":129,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:ast.Constant:\n@Time : 2023/7/4 10:53\n@Author : alexanderwu alitrack\n@File : mermaid.py\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/4 10:53\\n@Author : alexanderwu alitrack\\n@File : mermaid.py\\n@Modified By: mashenquan, 2023/8/20. Remove global configuration `CONFIG`, enable configuration support for business isolation.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:asyncio", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:os", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:aiofiles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['CONFIG']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['check_cmd_exists']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:get_html_content", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:get_html_content", "target": "{\"lineno\":42,\"end_lineno\":45,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_html_content\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:_get_soup", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:_get_soup", "target": "{\"lineno\":48,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_soup\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:__future__", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['annotations']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:typing", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['Generator', 'Optional']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:urllib.parse", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['urljoin', 'urlparse']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:bs4", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['BeautifulSoup']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['BaseModel', 'PrivateAttr']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py", "target": "python"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py:MSG_SEP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/special_tokens.py:MSG_SEP", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Assign\",\"tokens\":[\"MSG_SEP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILENAME_CODE_SEP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/ahttp_client.py", "target": "metagpt/utils/ahttp_client.py:apost"}, {"predicate": "has_function", "source": "metagpt/utils/ahttp_client.py", "target": "metagpt/utils/ahttp_client.py:apost_stream"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py:apost", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:apost", "target": "{\"lineno\":11,\"end_lineno\":28,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py:apost_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:apost_stream", "target": "{\"lineno\":31,\"end_lineno\":49,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost_stream\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:names:['Any', 'Mapping', 'Optional', 'Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:aiohttp", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:module:aiohttp.client", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:names:['DEFAULT_TIMEOUT']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"predicate": "is", "source": "metagpt/utils/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/utils/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:__all__", "target": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:50\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:50\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.read_document", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['read_docx']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.singleton", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['Singleton']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['TOKEN_COSTS', 'count_message_tokens', 'count_string_tokens']", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_ink.py", "target": "metagpt/utils/mmdc_ink.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:mermaid_to_file", "target": "{\"lineno\":15,\"end_lineno\":41,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mermaid.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:base64", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:module:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:names:['ClientError', 'ClientSession']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:upsert", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:update", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : di_graph_repository.py\n@Desc : Graph repository based on DiGraph\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : di_graph_repository.py\\n@Desc : Graph repository based on DiGraph\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['List']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:networkx", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"networkx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['aread', 'awrite']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['SPO', 'GraphRepository']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : openai.py\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\n", "target": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : openai.py\\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['NamedTuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['BaseModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['TOKEN_COSTS']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : file.py\n@Describe : General file operations.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : file.py\\n@Describe : General file operations.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:aiofiles", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['handle_exception']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:__str__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/common.py:check_cmd_exists", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:check_cmd_exists", "target": "{\"lineno\":38,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"check_cmd_exists\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:require_python_version", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:require_python_version", "target": "{\"lineno\":51,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"require_python_version\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:print_members", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:print_members", "target": "{\"lineno\":319,\"end_lineno\":335,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"print_members\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:parse_recipient", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:parse_recipient", "target": "{\"lineno\":338,\"end_lineno\":348,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_recipient\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:get_class_name", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:get_class_name", "target": "{\"lineno\":351,\"end_lineno\":353,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_name\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_str", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_str", "target": "{\"lineno\":356,\"end_lineno\":363,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_str_set", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_str_set", "target": "{\"lineno\":366,\"end_lineno\":381,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str_set\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:is_subscribed", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:is_subscribed", "target": "{\"lineno\":384,\"end_lineno\":392,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_subscribed\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_name", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_name", "target": "{\"lineno\":395,\"end_lineno\":403,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_name\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:concat_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:concat_namespace", "target": "{\"lineno\":406,\"end_lineno\":407,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"concat_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:split_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:split_namespace", "target": "{\"lineno\":410,\"end_lineno\":411,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:general_after_log", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:general_after_log", "target": "{\"lineno\":414,\"end_lineno\":444,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"general_after_log\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_json_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_json_file", "target": "{\"lineno\":447,\"end_lineno\":456,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_json_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:write_json_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:write_json_file", "target": "{\"lineno\":459,\"end_lineno\":465,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"write_json_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:import_class", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:import_class", "target": "{\"lineno\":468,\"end_lineno\":471,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:import_class_inst", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:import_class_inst", "target": "{\"lineno\":474,\"end_lineno\":477,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class_inst\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:format_trackback_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:format_trackback_info", "target": "{\"lineno\":480,\"end_lineno\":481,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"format_trackback_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:serialize_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:serialize_decorator", "target": "{\"lineno\":484,\"end_lineno\":495,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:role_raise_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:role_raise_decorator", "target": "{\"lineno\":498,\"end_lineno\":519,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"role_raise_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:aread", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aread", "target": "{\"lineno\":523,\"end_lineno\":527,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:awrite", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:awrite", "target": "{\"lineno\":530,\"end_lineno\":535,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_file_block", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_file_block", "target": "{\"lineno\":538,\"end_lineno\":552,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"read_file_block\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:ast.Constant:\n@Time : 2023/4/29 16:07\n@Author : alexanderwu\n@File : common.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n Add generic class-to-string and object-to-string conversion functionality.\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\n responses.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 16:07\\n@Author : alexanderwu\\n@File : common.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n Add generic class-to-string and object-to-string conversion functionality.\\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\\n responses.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:__future__", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['annotations']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:ast", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:contextlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"contextlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:importlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:inspect", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:json", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:os", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:platform", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:re", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:sys", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:traceback", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:typing", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Any', 'List', 'Tuple', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aiofiles", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:loguru", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Import\",\"tokens\":[\"loguru\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:pydantic_core", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['to_jsonable_python']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:tenacity", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"_utils\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['RetryCallState', '_utils']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"_utils\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.const", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['MESSAGE_ROUTE_TO_ALL']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.logs", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['logger']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['handle_exception']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:_connect", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:ast.Constant:\n@Time : 2023/12/27\n@Author : mashenquan\n@File : redis.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/27\\n@Author : mashenquan\\n@File : redis.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:traceback", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:datetime", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['timedelta']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:aioredis", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aioredis\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:metagpt.config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['CONFIG']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/text.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/text.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:reduce_message_length"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:generate_prompt_chunk"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:split_paragraph"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:decode_unicode_escape"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:_split_by_count"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:_split_text_with_ends"}, {"predicate": "is", "source": "metagpt/utils/text.py:reduce_message_length", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:reduce_message_length", "target": "{\"lineno\":6,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"reduce_message_length\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:generate_prompt_chunk", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:generate_prompt_chunk", "target": "{\"lineno\":34,\"end_lineno\":76,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_prompt_chunk\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:split_paragraph", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:split_paragraph", "target": "{\"lineno\":79,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_paragraph\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:decode_unicode_escape", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:decode_unicode_escape", "target": "{\"lineno\":99,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_unicode_escape\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:_split_by_count", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:_split_by_count", "target": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_by_count\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:_split_text_with_ends", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:_split_text_with_ends", "target": "{\"lineno\":121,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_text_with_ends\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:module:typing", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:names:['Generator', 'Sequence']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:names:['TOKEN_MAX', 'count_string_tokens']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:upsert", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:select", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : graph_repository.py\n@Desc : Superclass for graph repository.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : graph_repository.py\\n@Desc : Superclass for graph repository.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:abc", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['List']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['BaseModel']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.repo_parser", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"ClassInfo\",\"ClassRelationship\",\"RepoFileInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['ClassInfo', 'ClassRelationship', 'RepoFileInfo']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"ClassInfo\",\"ClassRelationship\",\"RepoFileInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['concat_namespace']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\"]}}"}, {"predicate": "is", "source": "metagpt/utils/singleton.py:Singleton:__call__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:ast.Constant:\n@Time : 2023/5/11 16:15\n@Author : alexanderwu\n@File : singleton.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 16:15\\n@Author : alexanderwu\\n@File : singleton.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"abc\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:os", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:datetime", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['datetime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Dict', 'List', 'Set']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:aiofiles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['CONFIG']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.schema", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Document']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['aread']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.utils.json_to_markdown", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['json_to_markdown']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:_leave", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:_leave", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:get_docstring_statement", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:get_docstring_statement", "target": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_docstring_statement\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:has_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:has_decorator", "target": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"has_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:merge_docstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:merge_docstring", "target": "{\"lineno\":159,\"end_lineno\":176,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_docstring\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringNode", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringNode", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"DocstringNode\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:typing", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['Union']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:libcst as cst", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"libcst as cst\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:libcst._nodes.module", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['Module']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/exceptions.py", "target": "metagpt/utils/exceptions.py:handle_exception"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py:handle_exception", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:handle_exception", "target": "{\"lineno\":20,\"end_lineno\":61,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"handle_exception\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py:ReturnType", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:ReturnType", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"ReturnType\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:ast.Constant:\n@Time : 2023/12/19 14:46\n@Author : alexanderwu\n@File : exceptions.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 14:46\\n@Author : alexanderwu\\n@File : exceptions.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:asyncio", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:functools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"functools\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:traceback", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:names:['Any', 'Callable', 'Tuple', 'Type', 'TypeVar', 'Union']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/highlight.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/highlight.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/highlight.py", "target": "metagpt/utils/highlight.py:highlight"}, {"predicate": "is", "source": "metagpt/utils/highlight.py:highlight", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:highlight", "target": "{\"lineno\":7,\"end_lineno\":25,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"highlight\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['highlight as highlight_']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments.formatters", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['HtmlFormatter', 'TerminalFormatter']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments.lexers", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['PythonLexer', 'SqlLexer']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file", "target": "{\"lineno\":17,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mmdc_pyppeteer.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mmdc_pyppeteer.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:urllib.parse", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['urljoin']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:pyppeteer", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['launch']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.config", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['CONFIG']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:base64", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:os.path", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:traceback", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:uuid", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:aioboto3", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aioboto3\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:aiofiles", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.config", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['CONFIG']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.const", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/json_to_markdown.py", "target": "metagpt/utils/json_to_markdown.py:json_to_markdown"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py:json_to_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/json_to_markdown.py:json_to_markdown", "target": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"json_to_markdown\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/json_to_markdown.py:ast.Constant:\n@Time : 2023/9/11 11:50\n@Author : femto Zheng\n@File : json_to_markdown.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/11 11:50\\n@Author : femto Zheng\\n@File : json_to_markdown.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:py_make_scanner", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:py_make_scanner", "target": "{\"lineno\":9,\"end_lineno\":69,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_make_scanner\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:JSONObject", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:JSONObject", "target": "{\"lineno\":91,\"end_lineno\":192,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"JSONObject\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:py_scanstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:py_scanstring", "target": "{\"lineno\":195,\"end_lineno\":267,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_scanstring\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:NUMBER_RE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:NUMBER_RE", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"NUMBER_RE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:FLAGS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:FLAGS", "target": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"FLAGS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK", "target": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE", "target": "{\"lineno\":74,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_SINGLEQUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE", "target": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_DOUBLE_QUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE", "target": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_SINGLEQUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:BACKSLASH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:BACKSLASH", "target": "{\"lineno\":77,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"BACKSLASH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:WHITESPACE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:WHITESPACE", "target": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:WHITESPACE_STR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:WHITESPACE_STR", "target": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE_STR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:scanstring", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:scanstring", "target": "{\"lineno\":270,\"end_lineno\":270,\"type_name\":\"ast.Assign\",\"tokens\":[\"scanstring\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:json", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:re", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:module:json", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:names:['JSONDecodeError']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:module:json.decoder", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:names:['_decode_uXXXX']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:_init", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: Git repository management. RFC 135 2.2.3.3.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: Git repository management. RFC 135 2.2.3.3.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:shutil", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:enum", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Enum']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Dict', 'List']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:git.repo", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Repo']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:git.repo.fun", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['is_git_dir']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:gitignore_parser", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['parse_gitignore']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.utils.dependency_file", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['DependencyFile']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['FileRepository']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/read_document.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/read_document.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/read_document.py", "target": "metagpt/utils/read_document.py:read_docx"}, {"predicate": "is", "source": "metagpt/utils/read_document.py:read_docx", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:read_docx", "target": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_docx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:ast.Constant:\n@Time : 2023/4/29 15:45\n@Author : alexanderwu\n@File : read_document.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:45\\n@Author : alexanderwu\\n@File : read_document.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:docx", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"docx\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_name", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_variable_type", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_parse_function_args", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : rebuild_class_view.py\n@Desc : Rebuild class view info\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : rebuild_class_view.py\\n@Desc : Rebuild class view info\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:aiofiles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Action']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['CONFIG']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.const", "target": "{\"lineno\":16,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['AGGREGATION', 'COMPOSITION', 'DATA_API_DESIGN_FILE_REPO', 'GENERALIZATION', 'GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":16,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.logs", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['logger']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.repo_parser", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['RepoParser']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.schema", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"ClassAttribute\",\"ClassMethod\",\"ClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['ClassAttribute', 'ClassMethod', 'ClassView']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"ClassAttribute\",\"ClassMethod\",\"ClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.common", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['split_namespace']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['DiGraphRepository']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:ast.Constant:\n@Time : 2024/1/4\n@Author : mashenquan\n@File : rebuild_sequence_view.py\n@Desc : Rebuild sequence view info\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4\\n@Author : mashenquan\\n@File : rebuild_sequence_view.py\\n@Desc : Rebuild sequence view info\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['List']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.actions", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['CONFIG']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['DiGraphRepository']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['GraphKeyword']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":37,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\n value of the `Message` object.\n@Modified By: mashenquan, 2023-11-27.\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\n code-block formatting to enhance the understanding for the LLM.\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\n than passing them in when calling the run function.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\\n value of the `Message` object.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\\n code-block formatting to enhance the understanding for the LLM.\\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\\n than passing them in when calling the run function.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:json", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:pydantic", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['Field']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:tenacity", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['Action']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.config", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CONFIG']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.const", "target": "{\"lineno\":25,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_SUMMARIES_FILE_REPO\",\"DOCS_FILE_REPO\",\"TASK_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['BUGFIX_FILENAME', 'CODE_SUMMARIES_FILE_REPO', 'DOCS_FILE_REPO', 'TASK_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO']", "target": "{\"lineno\":25,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_SUMMARIES_FILE_REPO\",\"DOCS_FILE_REPO\",\"TASK_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.logs", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['logger']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.schema", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CodingContext', 'Document', 'RunCodeResult']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.utils.common", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CodeParser']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['FileRepository']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/write_prd_an.py", "target": "metagpt/actions/write_prd_an.py:main"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:main", "target": "{\"lineno\":160,\"end_lineno\":162,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:LANGUAGE", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE", "target": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAMMING_LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS", "target": "{\"lineno\":27,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"ORIGINAL_REQUIREMENTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PROJECT_NAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PROJECT_NAME", "target": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS", "target": "{\"lineno\":41,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRODUCT_GOALS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:USER_STORIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:USER_STORIES", "target": "{\"lineno\":48,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"USER_STORIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS", "target": "{\"lineno\":61,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART", "target": "{\"lineno\":72,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_QUADRANT_CHART\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS", "target": "{\"lineno\":93,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL", "target": "{\"lineno\":100,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_POOL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT", "target": "{\"lineno\":107,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"UI_DESIGN_DRAFT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR", "target": "{\"lineno\":114,\"end_lineno\":119,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ISSUE_TYPE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ISSUE_TYPE", "target": "{\"lineno\":121,\"end_lineno\":126,\"type_name\":\"ast.Assign\",\"tokens\":[\"ISSUE_TYPE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:IS_RELATIVE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:IS_RELATIVE", "target": "{\"lineno\":128,\"end_lineno\":133,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_RELATIVE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REASON", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REASON", "target": "{\"lineno\":135,\"end_lineno\":137,\"type_name\":\"ast.Assign\",\"tokens\":[\"REASON\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:NODES", "target": "{\"lineno\":140,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE", "target": "{\"lineno\":155,\"end_lineno\":155,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_PRD_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE", "target": "{\"lineno\":156,\"end_lineno\":156,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_ISSUE_TYPE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE", "target": "{\"lineno\":157,\"end_lineno\":157,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_IS_RELATIVE_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ast.Constant:\n@Time : 2023/12/14 11:40\n@Author : alexanderwu\n@File : write_prd_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 11:40\\n@Author : alexanderwu\\n@File : write_prd_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:__name__:__main__", "target": "{\"lineno\":165,\"end_lineno\":166,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":20,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE", "target": "{\"lineno\":49,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:ast.Constant:\n@Author : alexanderwu\n@File : summarize_code.py\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : summarize_code.py\\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:tenacity", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.actions.action", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['CONFIG']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['CodeSummarizeContext']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['FileRepository']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/research.py:get_research_system_text", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:get_research_system_text", "target": "{\"lineno\":281,\"end_lineno\":291,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_research_system_text\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:LANG_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:LANG_PROMPT", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANG_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM", "target": "{\"lineno\":22,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_BASE_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_TOPIC_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT", "target": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_TOPIC_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT", "target": "{\"lineno\":30,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_SEARCH_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT", "target": "{\"lineno\":39,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"COLLECT_AND_RANKURLS_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT", "target": "{\"lineno\":53,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"WEB_BROWSE_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT", "target": "{\"lineno\":65,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONDUCT_RESEARCH_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Callable', 'Optional', 'Union']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Field', 'parse_obj_as']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.config", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['CONFIG']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['LLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['SearchEngine']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.tools.web_browser_engine", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['WebBrowserEngine', 'WebBrowserEngineType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['OutputParser']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.utils.text", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['generate_prompt_chunk', 'reduce_message_length']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : skill_action.py\n@Desc : Call learned skill\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : skill_action.py\\n@Desc : Call learned skill\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ast", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:importlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:traceback", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:copy", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['deepcopy']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Dict', 'Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.actions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Action']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.learn.skill_loader", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Skill']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:PROMPT_TEMPLATE", "target": "{\"lineno\":20,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : write_test.py\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\n WriteTest object, rather than passing them in when calling the run function.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : write_test.py\\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Optional']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.actions.action", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['CONFIG']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['TEST_CODES_FILE_REPO']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Document', 'TestingContext']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['CodeParser']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE", "target": "{\"lineno\":23,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : debug_error.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : debug_error.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['Field']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.actions.action", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['CONFIG']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.const", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.logs", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['logger']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.schema", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['RunCodeContext', 'RunCodeResult']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.utils.common", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['CodeParser']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['FileRepository']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_new_system_design", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_merge", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_update_system_design", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_pdf", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":31,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:ast.Constant:\n@Time : 2023/5/11 19:26\n@Author : alexanderwu\n@File : design_api.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:26\\n@Author : alexanderwu\\n@File : design_api.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.actions", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.actions.design_api_an", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DESIGN_API_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['DESIGN_API_NODE']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DESIGN_API_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['CONFIG']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.const", "target": "{\"lineno\":19,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"PRDS_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['DATA_API_DESIGN_FILE_REPO', 'PRDS_FILE_REPO', 'SEQ_FLOW_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'SYSTEM_DESIGN_PDF_FILE_REPO']", "target": "{\"lineno\":19,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"PRDS_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.schema", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Document', 'Documents', 'Message']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['FileRepository']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['mermaid_to_file']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py", "target": "python"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:PROJECT_NAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:PROJECT_NAME", "target": "{\"lineno\":20,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:FILE_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:FILE_LIST", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILE_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES", "target": "{\"lineno\":31,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW", "target": "{\"lineno\":40,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR", "target": "{\"lineno\":48,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:NODES", "target": "{\"lineno\":55,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:DESIGN_API_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:DESIGN_API_NODE", "target": "{\"lineno\":64,\"end_lineno\":64,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESIGN_API_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:ast.Constant:\n@Time : 2023/12/12 22:24\n@Author : alexanderwu\n@File : design_api_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/12 22:24\\n@Author : alexanderwu\\n@File : design_api_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['MMC1', 'MMC2']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:__init__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:ast.Constant:\n@Time : 2023/7/11 10:03\n@Author : chengmaoyu\n@File : action_output\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/11 10:03\\n@Author : chengmaoyu\\n@File : action_output\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:names:['BaseModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:ast.Constant:\n@Time : 2023/5/20 17:46\n@Author : alexanderwu\n@File : add_requirement.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 17:46\\n@Author : alexanderwu\\n@File : add_requirement.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/__init__.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/__init__.py", "target": "metagpt/actions/__init__.py:ActionType"}, {"predicate": "is", "source": "metagpt/actions/__init__.py:ActionType", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:ActionType", "target": "{\"lineno\":27,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/__init__.py:ActionType", "target": "{\"name\":\"ActionType\",\"abstraction\":false,\"static\":false,\"visibility\":\"\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:__all__", "target": "{\"lineno\":47,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:ast.Constant:\n@Time : 2023/5/11 17:44\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:44\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.action", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.action_output", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['ActionOutput']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.add_requirement", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['UserRequirement']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.debug_error", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['DebugError']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.design_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteDesign']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.design_api_review", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['DesignReview']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.project_management", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteTasks']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.research", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['CollectLinks', 'WebBrowseAndSummarize', 'ConductResearch']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.run_code", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['RunCode']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.search_and_summarize", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['SearchAndSummarize']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_code", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCode']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_code_review", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCodeReview']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePRD']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd_review", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePRDReview']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_test", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteTest']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:REVIEW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:REVIEW", "target": "{\"lineno\":12,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:LGTM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:LGTM", "target": "{\"lineno\":22,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_REVIEW_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['List']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['Action']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_init_with_instruction", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:__str__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:__repr__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_aask", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_run_action_node", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : action.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : action.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.actions.action_node", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ActionNode']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.llm", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['LLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['BaseLLM']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['CodeSummarizeContext', 'CodingContext', 'RunCodeContext', 'SerializationMixin', 'TestingContext']", "target": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:run", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:ast.Constant:\n@Time : 2023/9/13 12:26\n@Author : femto Zheng\n@File : execute_task.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:26\\n@Author : femto Zheng\\n@File : execute_task.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:module:metagpt.schema", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:names:['Message']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_run_new_requirement", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_is_relative", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_merge", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_update_prd", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_save_pdf", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE", "target": "{\"lineno\":44,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":55,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n", "target": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:__future__", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['annotations']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:json", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:pathlib", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Path']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:typing", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Optional']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.action_node", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['ActionNode']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.fix_bug", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['FixBug']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.write_prd_an", "target": "{\"lineno\":23,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"PROJECT_NAME\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['PROJECT_NAME', 'WP_IS_RELATIVE_NODE', 'WP_ISSUE_TYPE_NODE', 'WRITE_PRD_NODE']", "target": "{\"lineno\":23,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"PROJECT_NAME\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.config", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['CONFIG']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.const", "target": "{\"lineno\":30,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DOCS_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['BUGFIX_FILENAME', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'DOCS_FILE_REPO', 'PRD_PDF_FILE_REPO', 'PRDS_FILE_REPO', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":30,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DOCS_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.logs", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['logger']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.schema", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['BugFixContext', 'Document', 'Documents', 'Message']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.common", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['CodeParser']", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['FileRepository']", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['mermaid_to_file']", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:_simplify_python_code", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:_simplify_python_code", "target": "{\"lineno\":199,\"end_lineno\":212,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_simplify_python_code\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM", "target": "{\"lineno\":34,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE", "target": "{\"lineno\":58,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_GOOGLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY", "target": "{\"lineno\":86,\"end_lineno\":122,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_NUMPY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX", "target": "{\"lineno\":124,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_SPHINX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:_python_docstring_style", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:_python_docstring_style", "target": "{\"lineno\":149,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"_python_docstring_style\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:ast.Constant:Code Docstring Generator.\n\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\ndocstrings for the given code and system text.\n\nUsage:\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\n\nArguments:\n filename The path to the Python file for which you want to generate docstrings.\n\nOptions:\n --overwrite If specified, overwrite the original file with the code containing docstrings.\n --style= Specify the style of the generated docstrings.\n Valid values: 'google', 'numpy', or 'sphinx'.\n Default: 'google'\n\nExample:\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\n\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\nthe specified docstring style and adds them to the code.\n", "target": "{\"lineno\":1,\"end_lineno\":23,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"Code Docstring Generator.\\n\\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\\ndocstrings for the given code and system text.\\n\\nUsage:\\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\\n\\nArguments:\\n filename The path to the Python file for which you want to generate docstrings.\\n\\nOptions:\\n --overwrite If specified, overwrite the original file with the code containing docstrings.\\n --style= Specify the style of the generated docstrings.\\n Valid values: 'google', 'numpy', or 'sphinx'.\\n Default: 'google'\\n\\nExample:\\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\\n\\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\\nthe specified docstring style and adds them to the code.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:__future__", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['annotations']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:ast", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:pathlib", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Path']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:typing", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Literal', 'Optional']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.actions.action", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Action']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.utils.common", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['OutputParser', 'aread', 'awrite']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.utils.pycst", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['merge_docstring']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:__name__:__main__", "target": "{\"lineno\":215,\"end_lineno\":218,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:ast.Constant:\n@Time : 2023-12-12\n@Author : mashenquan\n@File : fix_bug.py\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023-12-12\\n@Author : mashenquan\\n@File : fix_bug.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:module:metagpt.actions", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:names:['Action']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:QUESTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:QUESTIONS", "target": "{\"lineno\":11,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:ast.Constant:\n@Time : 2023/9/19 15:02\n@Author : DevXiaolan\n@File : prepare_interview.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/19 15:02\\n@Author : DevXiaolan\\n@File : prepare_interview.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:module:metagpt.actions.action_node", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:names:['ActionNode']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_dependencies", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":29,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:CONTEXT", "target": "{\"lineno\":51,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : run_code.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\n the understanding for the LLM.\n 2. Fix bug: Add the \"install dependency\" operation.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\n (code files, unit test files, log files) from using the message to using the file name.\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\n class.\n", "target": "{\"lineno\":3,\"end_lineno\":17,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : run_code.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\\n the understanding for the LLM.\\n 2. Fix bug: Add the \\\"install dependency\\\" operation.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\\n (code files, unit test files, log files) from using the message to using the file name.\\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\\n class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:subprocess", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:typing", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Tuple']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:pydantic", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Field']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.actions.action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Action']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.config", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['CONFIG']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.logs", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['logger']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.schema", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['RunCodeContext', 'RunCodeResult']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['handle_exception']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:main", "target": "{\"lineno\":586,\"end_lineno\":587,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REVIEW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REVIEW", "target": "{\"lineno\":13,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:LGTM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:LGTM", "target": "{\"lineno\":24,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:ACTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:ACTIONS", "target": "{\"lineno\":32,\"end_lineno\":62,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACTIONS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT", "target": "{\"lineno\":64,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_DRAFT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_FUNCTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_FUNCTION", "target": "{\"lineno\":72,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_FUNCTION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE", "target": "{\"lineno\":84,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT", "target": "{\"lineno\":98,\"end_lineno\":417,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT", "target": "{\"lineno\":420,\"end_lineno\":490,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SMALLEST_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE", "target": "{\"lineno\":493,\"end_lineno\":555,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE", "target": "{\"lineno\":558,\"end_lineno\":558,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE", "target": "{\"lineno\":559,\"end_lineno\":559,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3", "target": "{\"lineno\":562,\"end_lineno\":574,\"type_name\":\"ast.Assign\",\"tokens\":[\"CR_FOR_MOVE_FUNCTION_BY_3\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:asyncio", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions.action_node", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['ActionNode']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:__name__:__main__", "target": "{\"lineno\":590,\"end_lineno\":591,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : talk_action.py\n@Desc : Act as it\u2019s a talk\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : talk_action.py\\n@Desc : Act as it\u2019s a talk\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.actions", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['CONFIG']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_LANGUAGE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['DEFAULT_LANGUAGE']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_LANGUAGE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['Dict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.actions", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['Action']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.prompts.tutorial_assistant", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['CONTENT_PROMPT', 'DIRECTORY_PROMPT']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.utils.common", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['OutputParser']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:module:metagpt.actions.action", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:QUESTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:QUESTIONS", "target": "{\"lineno\":11,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:ast.Constant:\n@Time : 2023/9/12 17:45\n@Author : fisherdeng\n@File : generate_questions.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/12 17:45\\n@Author : fisherdeng\\n@File : generate_questions.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:module:metagpt.actions.action_node", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:names:['ActionNode']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : prepare_documents.py\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\n RFC 135 2.2.3.5.1.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : prepare_documents.py\\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\\n RFC 135 2.2.3.5.1.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:shutil", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Optional']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['CONFIG']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.const", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DOCS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['DOCS_FILE_REPO', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DOCS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Document']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['FileRepository']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['GitRepository']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM", "target": "{\"lineno\":20,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US", "target": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM_EN_US\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT", "target": "{\"lineno\":45,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM", "target": "{\"lineno\":61,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT", "target": "{\"lineno\":83,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD", "target": "{\"lineno\":94,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_FOOD\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:ast.Constant:\n@Time : 2023/5/23 17:26\n@Author : alexanderwu\n@File : search_google.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:26\\n@Author : alexanderwu\\n@File : search_google.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Any', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"pydantic\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Field', 'model_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['CONFIG', 'Config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\",\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Message']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.tools", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['SearchEngineType']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['SearchEngine']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE", "target": "{\"lineno\":21,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION", "target": "{\"lineno\":36,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_AND_INSTRUCTION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE", "target": "{\"lineno\":58,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE", "target": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code_review.py\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\n WriteCode object, rather than passing them in when calling the run function.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code_review.py\\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\\n WriteCode object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:tenacity", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['WriteCode']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.actions.action", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CONFIG']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CodingContext']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CodeParser']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : write_teaching_plan.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : write_teaching_plan.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.config", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['CONFIG']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/project_management_an.py", "target": "metagpt/actions/project_management_an.py:main"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:main", "target": "{\"lineno\":81,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_PYTHON_PACKAGES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES", "target": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_OTHER_LANGUAGE_PACKAGES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS", "target": "{\"lineno\":27,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:TASK_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:TASK_LIST", "target": "{\"lineno\":38,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:FULL_API_SPEC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:FULL_API_SPEC", "target": "{\"lineno\":45,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"FULL_API_SPEC\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE", "target": "{\"lineno\":53,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM", "target": "{\"lineno\":60,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR_PM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:NODES", "target": "{\"lineno\":67,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:PM_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:PM_NODE", "target": "{\"lineno\":78,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"PM_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:ast.Constant:\n@Time : 2023/12/14 15:28\n@Author : alexanderwu\n@File : project_management_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 15:28\\n@Author : alexanderwu\\n@File : project_management_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:__name__:__main__", "target": "{\"lineno\":86,\"end_lineno\":87,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_update_tasks", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_merge", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_update_requirements", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_save_pdf", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":30,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:ast.Constant:\n@Time : 2023/5/11 19:12\n@Author : alexanderwu\n@File : project_management.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:12\\n@Author : alexanderwu\\n@File : project_management.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:json", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['ActionOutput']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.action", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Action']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['PM_NODE']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['CONFIG']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.const", "target": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['PACKAGE_REQUIREMENTS_FILENAME', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO', 'TASK_PDF_FILE_REPO']", "target": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.schema", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Document', 'Documents']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['FileRepository']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__str__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__repr__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_compile_f", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_aask_v1", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:dict_to_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:dict_to_markdown", "target": "{\"lineno\":49,\"end_lineno\":53,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"dict_to_markdown\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:TAG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:TAG", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"TAG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE_CONSTRAINT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_CONSTRAINT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE", "target": "{\"lineno\":29,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"SIMPLE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ast.Constant:\n@Time : 2023/12/11 18:45\n@Author : alexanderwu\n@File : action_node.py\n\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/11 18:45\\n@Author : alexanderwu\\n@File : action_node.py\\n\\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['Any', 'Dict', 'List', 'Optional', 'Tuple', 'Type']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"create_model\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['BaseModel', 'create_model', 'model_validator']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"create_model\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:tenacity", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.config", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['CONFIG']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config\",\"names\":[\"CONFIG\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.llm", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['BaseLLM']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.provider.postprocess.llm_output_postprocess", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['llm_output_postprocess']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.utils.common", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['OutputParser', 'general_after_log']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:ast.Constant:\n@Time : 2023/5/11 19:31\n@Author : alexanderwu\n@File : design_api_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:31\\n@Author : alexanderwu\\n@File : design_api_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:module:metagpt.actions.action", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip", "target": "class_function"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 18:10:20\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Actions of the invoice ocr assistant.\n", "target": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 18:10:20\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Actions of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:os", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:zipfile", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"zipfile\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:datetime", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['datetime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:pandas as pd", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:paddleocr", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['PaddleOCR']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:pydantic", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Field']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.actions", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Action']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.const", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['INVOICE_OCR_TABLE_PATH']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.llm", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['LLM']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.logs", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['logger']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.prompts.invoice_ocr", "target": "{\"lineno\":25,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['EXTRACT_OCR_MAIN_INFO_PROMPT', 'REPLY_OCR_QUESTION_PROMPT']", "target": "{\"lineno\":25,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['BaseLLM']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.common", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['OutputParser']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.file", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['File']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/sales.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:SALES_ASSISTANT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:SALES_ASSISTANT", "target": "{\"lineno\":10,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES_ASSISTANT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:SALES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:SALES", "target": "{\"lineno\":33,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:conversation_stages", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:conversation_stages", "target": "{\"lineno\":57,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"conversation_stages\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:ast.Constant:\n@Time : 2023/5/8 15:29\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 15:29\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/prompts/__init__.py:ast.Constant:\n@Time : 2023/5/30 09:51\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/30 09:51\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT", "target": "{\"lineno\":11,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2", "target": "{\"lineno\":28,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_2\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3", "target": "{\"lineno\":43,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_3\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4", "target": "{\"lineno\":57,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_4\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5", "target": "{\"lineno\":72,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_5\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:ast.Constant:\n@Time : 2023/6/19 23:07\n@Author : alexanderwu\n@File : summarize.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/19 23:07\\n@Author : alexanderwu\\n@File : summarize.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE", "target": "{\"lineno\":9,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_SAMPLE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/metagpt_sample.py:ast.Constant:\n@Time : 2023/6/7 20:29\n@Author : alexanderwu\n@File : metagpt_sample.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/7 20:29\\n@Author : alexanderwu\\n@File : metagpt_sample.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT", "target": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT", "target": "{\"lineno\":15,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"DIRECTORY_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT", "target": "{\"lineno\":27,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTENT_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Tutorial Assistant's prompt templates.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Tutorial Assistant's prompt templates.\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT", "target": "{\"lineno\":13,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT", "target": "{\"lineno\":29,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"REPLY_OCR_QUESTION_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_SUCCESS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 16:30:25\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Prompts of the invoice ocr assistant.\n", "target": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 16:30:25\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Prompts of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:enum", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['Enum']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:pydantic", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:metagpt.strategy.base", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['BaseEvaluator', 'BaseParser']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:_bfs_build", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:_dfs", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver:solve", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:__init__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:OUTPUT_FORMAT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:OUTPUT_FORMAT", "target": "{\"lineno\":19,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"OUTPUT_FORMAT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:__future__", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['annotations']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:asyncio", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['Any', 'List', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['LLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.strategy.base", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['ThoughtNode', 'ThoughtTree']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.strategy.tot_schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['MethodSelect', 'Strategy', 'ThoughtSolverConfig']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['CodeParser']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:__call__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:propose", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:sample", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:value", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:__call__", "target": "class_function"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify", "target": "class_function"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:abc", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['ABC']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['List']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:anytree", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['Node', 'RenderTree']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['BaseModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}]}
\ No newline at end of file
diff --git a/tests/data/graph_db/networkx.sequence_view.json b/tests/data/graph_db/networkx.sequence_view.json
new file mode 100644
index 000000000..ca521bae2
--- /dev/null
+++ b/tests/data/graph_db/networkx.sequence_view.json
@@ -0,0 +1 @@
+{"directed": true, "multigraph": false, "graph": {}, "nodes": [{"id": "metagpt/schema.py"}, {"id": "source_code"}, {"id": "python"}, {"id": "metagpt/schema.py:AIMessage"}, {"id": "class"}, {"id": "{\"name\":\"AIMessage\",\"package\":\"metagpt/schema.py:AIMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor"}, {"id": "{\"name\":\"APIRequestor\",\"package\":\"metagpt/provider/general_api_base.py:APIRequestor\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}},\"methods\":{\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]},\"arequest_raw\":{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]},\"request\":{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]},\"request_headers\":{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]},\"request_raw\":{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}},\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"],\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\",\"aiohttp.ClientResponse\",\"requests.Response\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_key"}, {"id": "class_property"}, {"id": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_type"}, {"id": "{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:api_version"}, {"id": "{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:base_url"}, {"id": "{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:organization"}, {"id": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest"}, {"id": "class_method"}, {"id": "{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw"}, {"id": "{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request"}, {"id": "{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request_headers"}, {"id": "{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:request_raw"}, {"id": "{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}"}, {"id": "?:AZURE_AD"}, {"id": "?:OPEN_AI"}, {"id": "?:OpenAIResponse"}, {"id": "?:AsyncGenerator"}, {"id": "?:aiohttp.ClientResponse"}, {"id": "?:requests.Response"}, {"id": "metagpt/actions/action.py"}, {"id": "metagpt/actions/action.py:Action"}, {"id": "{\"name\":\"Action\",\"package\":\"metagpt/actions/action.py:Action\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"node\":{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},\"prefix\":{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"set_name_if_empty\":{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]},\"set_prefix\":{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}},\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:desc"}, {"id": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]}"}, {"id": "metagpt/actions/action.py:Action:model_config"}, {"id": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:name"}, {"id": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:node"}, {"id": "{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:prefix"}, {"id": "{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:project_name"}, {"id": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:project_path"}, {"id": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:prompt_schema"}, {"id": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:repo"}, {"id": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"id": "metagpt/actions/action.py:Action:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:set_name_if_empty"}, {"id": "{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action.py:Action:set_prefix"}, {"id": "{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}"}, {"id": "?:CodePlanAndChangeContext"}, {"id": "?:CodeSummarizeContext"}, {"id": "?:CodingContext"}, {"id": "?:RunCodeContext"}, {"id": "?:TestingContext"}, {"id": "metagpt/actions/action_node.py"}, {"id": "metagpt/actions/action_node.py:ActionNode"}, {"id": "{\"name\":\"ActionNode\",\"package\":\"metagpt/actions/action_node.py:ActionNode\",\"attributes\":{\"children\":{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"example\":{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]},\"expected_type\":{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]},\"instruction\":{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]},\"key\":{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"schema\":{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}},\"methods\":{\"add_child\":{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_children\":{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"auto_review\":{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]},\"auto_revise\":{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"compile\":{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]},\"compile_example\":{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_instruction\":{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_to\":{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]},\"create_children_class\":{\"name\":\"create_children_class\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_children_class(exclude)\",\"aggregations\":[]},\"create_class\":{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]},\"create_model_class\":{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]},\"fill\":{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, timeout, exclude)\",\"aggregations\":[]},\"from_children\":{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"from_pydantic\":{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]},\"get_child\":{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]},\"get_children_mapping\":{\"name\":\"get_children_mapping\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_children_mapping_old\":{\"name\":\"get_children_mapping_old\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping_old(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_mapping\":{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_self_mapping\":{\"name\":\"get_self_mapping\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_self_mapping(): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"human_review\":{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]},\"human_revise\":{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]},\"keys\":{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]},\"review\":{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"revise\":{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]},\"set_recursive\":{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]},\"simple_fill\":{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, timeout, exclude)\",\"aggregations\":[]},\"simple_review\":{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"simple_revise\":{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"tagging\":{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]},\"update_instruct_content\":{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}},\"compositions\":[\"ActionNode\",\"Type\",\"BaseModel\"],\"aggregations\":[\"ReviseMode\",\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:children"}, {"id": "{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:content"}, {"id": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:context"}, {"id": "{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:example"}, {"id": "{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:expected_type"}, {"id": "{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:instruct_content"}, {"id": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:instruction"}, {"id": "{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:key"}, {"id": "{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:llm"}, {"id": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:schema"}, {"id": "{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_child"}, {"id": "{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:add_children"}, {"id": "{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:auto_review"}, {"id": "{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:auto_revise"}, {"id": "{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile"}, {"id": "{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_example"}, {"id": "{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_instruction"}, {"id": "{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:compile_to"}, {"id": "{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_children_class"}, {"id": "{\"name\":\"create_children_class\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_children_class(exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_class"}, {"id": "{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:create_model_class"}, {"id": "{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:fill"}, {"id": "{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, timeout, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:from_children"}, {"id": "{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:from_pydantic"}, {"id": "{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_child"}, {"id": "{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_children_mapping"}, {"id": "{\"name\":\"get_children_mapping\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_children_mapping_old"}, {"id": "{\"name\":\"get_children_mapping_old\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping_old(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_mapping"}, {"id": "{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:get_self_mapping"}, {"id": "{\"name\":\"get_self_mapping\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_self_mapping(): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:human_review"}, {"id": "{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:human_revise"}, {"id": "{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:keys"}, {"id": "{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:review"}, {"id": "{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:revise"}, {"id": "{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_context"}, {"id": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_llm"}, {"id": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:set_recursive"}, {"id": "{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_fill"}, {"id": "{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, timeout, exclude)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_review"}, {"id": "{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:simple_revise"}, {"id": "{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:tagging"}, {"id": "{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:to_dict"}, {"id": "{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ActionNode:update_instruct_content"}, {"id": "{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}"}, {"id": "?:ActionNode"}, {"id": "?:Type"}, {"id": "?:BaseModel"}, {"id": "?:ReviseMode"}, {"id": "?:ReviewMode"}, {"id": "metagpt/actions/action_output.py"}, {"id": "metagpt/actions/action_output.py:ActionOutput"}, {"id": "{\"name\":\"ActionOutput\",\"package\":\"metagpt/actions/action_output.py:ActionOutput\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}},\"methods\":{},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_output.py:ActionOutput:content"}, {"id": "metagpt/actions/action_output.py:ActionOutput:instruct_content"}, {"id": "metagpt/actions"}, {"id": ""}, {"id": "metagpt/actions:ActionType"}, {"id": "{\"name\":\"ActionType\",\"package\":\"metagpt/actions:ActionType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions:ActionType:name"}, {"id": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:ApiType"}, {"id": "{\"name\":\"ApiType\",\"package\":\"metagpt/provider/general_api_base.py:ApiType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"from_str\":{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:ApiType:name"}, {"id": "metagpt/provider/general_api_base.py:ApiType:from_str"}, {"id": "{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/architect.py"}, {"id": "metagpt/roles/architect.py:Architect"}, {"id": "{\"name\":\"Architect\",\"package\":\"metagpt/roles/architect.py:Architect\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:constraints"}, {"id": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:goal"}, {"id": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/architect.py:Architect:name"}, {"id": "metagpt/roles/architect.py:Architect:profile"}, {"id": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"id": "{\"name\":\"ArgumentsParingAction\",\"package\":\"metagpt/actions/skill_action.py:ArgumentsParingAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"parse_arguments\":{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:args"}, {"id": "{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask"}, {"id": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt"}, {"id": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"id": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"id": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments"}, {"id": "{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:ArgumentsParingAction:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "?:Message"}, {"id": "metagpt/roles/assistant.py"}, {"id": "metagpt/roles/assistant.py:Assistant"}, {"id": "{\"name\":\"Assistant\",\"package\":\"metagpt/roles/assistant.py:Assistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]},\"get_memory\":{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]},\"load_memory\":{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]},\"refine_memory\":{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]},\"skill_handler\":{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]},\"talk\":{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]},\"talk_handler\":{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}},\"compositions\":[\"SkillsDeclaration\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:constraints"}, {"id": "metagpt/roles/assistant.py:Assistant:desc"}, {"id": "metagpt/roles/assistant.py:Assistant:goal"}, {"id": "metagpt/roles/assistant.py:Assistant:memory"}, {"id": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:name"}, {"id": "metagpt/roles/assistant.py:Assistant:profile"}, {"id": "metagpt/roles/assistant.py:Assistant:skills"}, {"id": "{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:act"}, {"id": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/assistant.py:Assistant:get_memory"}, {"id": "{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:load_memory"}, {"id": "{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:refine_memory"}, {"id": "{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:skill_handler"}, {"id": "{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:talk"}, {"id": "{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:talk_handler"}, {"id": "{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:Assistant:think"}, {"id": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}"}, {"id": "?:SkillsDeclaration"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient"}, {"id": "{\"name\":\"AsyncSSEClient\",\"package\":\"metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient\",\"attributes\":{},\"methods\":{\"stream\":{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream"}, {"id": "{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/context.py"}, {"id": "metagpt/context.py:AttrDict"}, {"id": "{\"name\":\"AttrDict\",\"package\":\"metagpt/context.py:AttrDict\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]},\"remove\":{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:model_config"}, {"id": "metagpt/context.py:AttrDict:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:remove"}, {"id": "{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]}"}, {"id": "metagpt/context.py:AttrDict:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData"}, {"id": "{\"name\":\"AudioData\",\"package\":\"metagpt/tools/iflytek_tts.py:AudioData\",\"attributes\":{\"audio\":{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]},\"ced\":{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:audio"}, {"id": "{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:ced"}, {"id": "{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:AudioData:status"}, {"id": "{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}"}, {"id": "metagpt/provider/azure_openai_api.py"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM"}, {"id": "{\"name\":\"AzureOpenAILLM\",\"package\":\"metagpt/provider/azure_openai_api.py:AzureOpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AsyncAzureOpenAI\"],\"aggregations\":[]}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"id": "?:AsyncAzureOpenAI"}, {"id": "metagpt/tools/azure_tts.py"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS"}, {"id": "{\"name\":\"AzureTTS\",\"package\":\"metagpt/tools/azure_tts.py:AzureTTS\",\"attributes\":{\"region\":{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]},\"subscription_key\":{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}},\"methods\":{\"role_style_text\":{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]},\"role_text\":{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]},\"style_text\":{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]},\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:region"}, {"id": "{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key"}, {"id": "{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text"}, {"id": "{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:role_text"}, {"id": "{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:style_text"}, {"id": "{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech"}, {"id": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate"}, {"id": "{\"name\":\"BEAGECTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:BEAGECTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py"}, {"id": "metagpt/strategy/tot.py:BFSSolver"}, {"id": "{\"name\":\"BFSSolver\",\"package\":\"metagpt/strategy/tot.py:BFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"generate_and_evaluate_nodes\":{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"id": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes"}, {"id": "{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:BFSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:BaseContext"}, {"id": "{\"name\":\"BaseContext\",\"package\":\"metagpt/schema.py:BaseContext\",\"attributes\":{},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}},\"compositions\":[],\"aggregations\":[\"T\"]}"}, {"id": "metagpt/schema.py:BaseContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}"}, {"id": "?:T"}, {"id": "metagpt/strategy/base.py"}, {"id": "metagpt/strategy/base.py:BaseEvaluator"}, {"id": "{\"name\":\"BaseEvaluator\",\"package\":\"metagpt/strategy/base.py:BaseEvaluator\",\"attributes\":{},\"methods\":{\"status_verify\":{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:status_verify"}, {"id": "{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify ()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py"}, {"id": "metagpt/provider/base_llm.py:BaseLLM"}, {"id": "{\"name\":\"BaseLLM\",\"package\":\"metagpt/provider/base_llm.py:BaseLLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str\",\"aggregations\":[]},\"aask_batch\":{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]},\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code (messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion (messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text (messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"get_choice_delta_text\":{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]},\"get_choice_function\":{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"id": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:cost_manager"}, {"id": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:system_prompt"}, {"id": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt"}, {"id": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask_batch"}, {"id": "{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:aask_code"}, {"id": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code (messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion (messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text (messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text"}, {"id": "{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function"}, {"id": "{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments"}, {"id": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"id": "?:AsyncOpenAI"}, {"id": "?:CostManager"}, {"id": "metagpt/strategy/base.py:BaseParser"}, {"id": "{\"name\":\"BaseParser\",\"package\":\"metagpt/strategy/base.py:BaseParser\",\"attributes\":{},\"methods\":{\"propose\":{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose (current_state: str): str\",\"aggregations\":[]},\"sample\":{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample (current_state: str): str\",\"aggregations\":[]},\"value\":{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value (input: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:propose"}, {"id": "{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose (current_state: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:sample"}, {"id": "{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample (current_state: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:BaseParser:value"}, {"id": "{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value (input: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin"}, {"id": "{\"name\":\"BasePostProcessPlugin\",\"package\":\"metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin\",\"attributes\":{\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_extract_content_from_output\":{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]},\"run_repair_llm_output\":{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_repair_llm_raw_output\":{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]},\"run_retry_parse_json_text\":{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model"}, {"id": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output"}, {"id": "{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output"}, {"id": "{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output"}, {"id": "{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text"}, {"id": "{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py"}, {"id": "metagpt/document_store/base_store.py:BaseStore"}, {"id": "{\"name\":\"BaseStore\",\"package\":\"metagpt/document_store/base_store.py:BaseStore\",\"attributes\":{},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search ()\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:add"}, {"id": "{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:search"}, {"id": "{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:BaseStore:write"}, {"id": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory"}, {"id": "{\"name\":\"BrainMemory\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory\",\"attributes\":{\"cacheable\":{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]},\"historical_summary\":{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]},\"history_text\":{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]},\"is_dirty\":{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]},\"is_history_available\":{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]},\"last_history_id\":{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]},\"last_talk\":{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"add_answer\":{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_history\":{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_talk\":{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]},\"dumps\":{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]},\"exists\":{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]},\"extract_info\":{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]},\"get_knowledge\":{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]},\"get_title\":{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]},\"is_related\":{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]},\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]},\"pop_last_talk\":{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]},\"rewrite\":{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]},\"set_history_summary\":{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]},\"split_texts\":{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]},\"summarize\":{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]},\"to_int\":{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]},\"to_metagpt_history_format\":{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]},\"to_redis_key\":{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"BaseLLM\"],\"aggregations\":[\"BrainMemory\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:cacheable"}, {"id": "{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary"}, {"id": "{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:history"}, {"id": "{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:history_text"}, {"id": "{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty"}, {"id": "{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available"}, {"id": "{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:knowledge"}, {"id": "{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id"}, {"id": "{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:last_talk"}, {"id": "{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:llm"}, {"id": "{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_answer"}, {"id": "{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_history"}, {"id": "{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:add_talk"}, {"id": "{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:dumps"}, {"id": "{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:exists"}, {"id": "{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:extract_info"}, {"id": "{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge"}, {"id": "{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:get_title"}, {"id": "{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:is_related"}, {"id": "{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk"}, {"id": "{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:rewrite"}, {"id": "{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary"}, {"id": "{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:split_texts"}, {"id": "{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:summarize"}, {"id": "{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_int"}, {"id": "{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format"}, {"id": "{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key"}, {"id": "{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}"}, {"id": "?:BaseLLM"}, {"id": "?:BrainMemory"}, {"id": "metagpt/configs/browser_config.py"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig"}, {"id": "{\"name\":\"BrowserConfig\",\"package\":\"metagpt/configs/browser_config.py:BrowserConfig\",\"attributes\":{\"browser\":{\"name\":\"browser\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"driver\":{\"name\":\"driver\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"driver : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:browser"}, {"id": "{\"name\":\"browser\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:driver"}, {"id": "{\"name\":\"driver\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"driver : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"id": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"id": "metagpt/configs/browser_config.py:BrowserConfig:path"}, {"id": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:BugFixContext"}, {"id": "{\"name\":\"BugFixContext\",\"package\":\"metagpt/schema.py:BugFixContext\",\"attributes\":{\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:BugFixContext:filename"}, {"id": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py"}, {"id": "metagpt/config2.py:CLIParams"}, {"id": "{\"name\":\"CLIParams\",\"package\":\"metagpt/config2.py:CLIParams\",\"attributes\":{\"git_reinit\":{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}},\"methods\":{\"check_project_path\":{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/config2.py:CLIParams:git_reinit"}, {"id": "{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:inc"}, {"id": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:max_auto_summarize_code"}, {"id": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:project_name"}, {"id": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:project_path"}, {"id": "{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:reqa_file"}, {"id": "{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:CLIParams:check_project_path"}, {"id": "{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py"}, {"id": "metagpt/utils/git_repository.py:ChangeType"}, {"id": "{\"name\":\"ChangeType\",\"package\":\"metagpt/utils/git_repository.py:ChangeType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:ChangeType:name"}, {"id": "metagpt/document_store/chromadb_store.py"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore"}, {"id": "{\"name\":\"ChromaStore\",\"package\":\"metagpt/document_store/chromadb_store.py:ChromaStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"collection\":{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:client"}, {"id": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:collection"}, {"id": "{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:persist"}, {"id": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py"}, {"id": "metagpt/provider/anthropic_api.py:Claude2"}, {"id": "{\"name\":\"Claude2\",\"package\":\"metagpt/provider/anthropic_api.py:Claude2\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:ask"}, {"id": "{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo"}, {"id": "{\"name\":\"CodeBlockInfo\",\"package\":\"metagpt/repo_parser.py:CodeBlockInfo\",\"attributes\":{\"end_lineno\":{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]},\"lineno\":{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]},\"properties\":{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]},\"tokens\":{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]},\"type_name\":{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno"}, {"id": "{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:lineno"}, {"id": "{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:properties"}, {"id": "{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:tokens"}, {"id": "{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:CodeBlockInfo:type_name"}, {"id": "{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/common.py"}, {"id": "metagpt/utils/common.py:CodeParser"}, {"id": "{\"name\":\"CodeParser\",\"package\":\"metagpt/utils/common.py:CodeParser\",\"attributes\":{},\"methods\":{\"parse_block\":{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_block"}, {"id": "{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_blocks"}, {"id": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_code"}, {"id": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_file_list"}, {"id": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:CodeParser:parse_str"}, {"id": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext"}, {"id": "{\"name\":\"CodePlanAndChangeContext\",\"package\":\"metagpt/schema.py:CodePlanAndChangeContext\",\"attributes\":{\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"prd_filename\":{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:design_filename"}, {"id": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:filename"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename"}, {"id": "{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:requirement"}, {"id": "{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:task_filename"}, {"id": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodePlanAndChangeContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext"}, {"id": "{\"name\":\"CodeSummarizeContext\",\"package\":\"metagpt/schema.py:CodeSummarizeContext\",\"attributes\":{\"codes_filenames\":{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]},\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:codes_filenames"}, {"id": "{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:design_filename"}, {"id": "metagpt/schema.py:CodeSummarizeContext:reason"}, {"id": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:CodeSummarizeContext:task_filename"}, {"id": "metagpt/schema.py:CodeSummarizeContext:loads"}, {"id": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"id": "metagpt/schema.py:CodingContext"}, {"id": "{\"name\":\"CodingContext\",\"package\":\"metagpt/schema.py:CodingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"design_doc\":{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"task_doc\":{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:CodingContext:code_doc"}, {"id": "{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:CodingContext:design_doc"}, {"id": "{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:CodingContext:filename"}, {"id": "metagpt/schema.py:CodingContext:task_doc"}, {"id": "{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "?:Document"}, {"id": "metagpt/actions/research.py"}, {"id": "metagpt/actions/research.py:CollectLinks"}, {"id": "{\"name\":\"CollectLinks\",\"package\":\"metagpt/actions/research.py:CollectLinks\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"rank_func\":{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}},\"compositions\":[\"Callable\"],\"aggregations\":[\"str\\\\\"]}"}, {"id": "metagpt/actions/research.py:CollectLinks:desc"}, {"id": "metagpt/actions/research.py:CollectLinks:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/research.py:CollectLinks:name"}, {"id": "metagpt/actions/research.py:CollectLinks:rank_func"}, {"id": "{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"id": "{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}"}, {"id": "metagpt/actions/research.py:CollectLinks:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}"}, {"id": "?:Callable"}, {"id": "?:str\\"}, {"id": "metagpt/learn/skill_loader.py"}, {"id": "metagpt/learn/skill_loader.py:Components"}, {"id": "{\"name\":\"Components\",\"package\":\"metagpt/learn/skill_loader.py:Components\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:ConductResearch"}, {"id": "{\"name\":\"ConductResearch\",\"package\":\"metagpt/actions/research.py:ConductResearch\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:ConductResearch:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/config2.py:Config\",\"attributes\":{\"AZURE_TTS_REGION\":{\"name\":\"AZURE_TTS_REGION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_REGION : str\",\"compositions\":[]},\"AZURE_TTS_SUBSCRIPTION_KEY\":{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_SUBSCRIPTION_KEY : str\",\"compositions\":[]},\"IFLYTEK_API_KEY\":{\"name\":\"IFLYTEK_API_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_KEY : str\",\"compositions\":[]},\"IFLYTEK_API_SECRET\":{\"name\":\"IFLYTEK_API_SECRET\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_SECRET : str\",\"compositions\":[]},\"IFLYTEK_APP_ID\":{\"name\":\"IFLYTEK_APP_ID\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_APP_ID : str\",\"compositions\":[]},\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\":{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL : str\",\"compositions\":[]},\"browser\":{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]},\"code_review_k_times\":{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]},\"enable_longterm_memory\":{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"llm_for_researcher_report\":{\"name\":\"llm_for_researcher_report\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_report : str\",\"compositions\":[]},\"llm_for_researcher_summary\":{\"name\":\"llm_for_researcher_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_summary : str\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]},\"mermaid\":{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]},\"mermaid_engine\":{\"name\":\"mermaid_engine\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_engine : str\",\"compositions\":[]},\"mmdc\":{\"name\":\"mmdc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mmdc : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]},\"pyppeteer_executable_path\":{\"name\":\"pyppeteer_executable_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_executable_path : str\",\"compositions\":[]},\"redis\":{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]},\"redis_key\":{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]},\"repair_llm_output\":{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},\"s3\":{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]},\"search\":{\"name\":\"search\",\"type_\":\"Optional[SearchConfig]\",\"default_\":\"\",\"description\":\"search : Optional[SearchConfig]\",\"compositions\":[\"SearchConfig\"]},\"workspace\":{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}},\"methods\":{\"default\":{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]},\"from_home\":{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]},\"get_azure_llm\":{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"get_openai_llm\":{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"update_via_cli\":{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\",\"S3Config\",\"SearchConfig\"],\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:AZURE_TTS_REGION"}, {"id": "{\"name\":\"AZURE_TTS_REGION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_REGION : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:AZURE_TTS_SUBSCRIPTION_KEY"}, {"id": "{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_SUBSCRIPTION_KEY : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:IFLYTEK_API_KEY"}, {"id": "{\"name\":\"IFLYTEK_API_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_KEY : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:IFLYTEK_API_SECRET"}, {"id": "{\"name\":\"IFLYTEK_API_SECRET\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_SECRET : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:IFLYTEK_APP_ID"}, {"id": "{\"name\":\"IFLYTEK_APP_ID\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_APP_ID : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:METAGPT_TEXT_TO_IMAGE_MODEL_URL"}, {"id": "{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:browser"}, {"id": "{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:code_review_k_times"}, {"id": "{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:enable_longterm_memory"}, {"id": "{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:inc"}, {"id": "metagpt/config2.py:Config:language"}, {"id": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:llm"}, {"id": "metagpt/config2.py:Config:llm_for_researcher_report"}, {"id": "{\"name\":\"llm_for_researcher_report\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_report : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:llm_for_researcher_summary"}, {"id": "{\"name\":\"llm_for_researcher_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:max_auto_summarize_code"}, {"id": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:mermaid"}, {"id": "{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:mermaid_engine"}, {"id": "{\"name\":\"mermaid_engine\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_engine : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:mmdc"}, {"id": "{\"name\":\"mmdc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mmdc : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:project_name"}, {"id": "metagpt/config2.py:Config:project_path"}, {"id": "metagpt/config2.py:Config:prompt_schema"}, {"id": "{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:proxy"}, {"id": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:puppeteer_config"}, {"id": "{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:pyppeteer_executable_path"}, {"id": "{\"name\":\"pyppeteer_executable_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_executable_path : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:redis"}, {"id": "{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"id": "metagpt/config2.py:Config:redis_key"}, {"id": "{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:repair_llm_output"}, {"id": "{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:reqa_file"}, {"id": "{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:s3"}, {"id": "{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]}"}, {"id": "metagpt/config2.py:Config:search"}, {"id": "{\"name\":\"search\",\"type_\":\"Optional[SearchConfig]\",\"default_\":\"\",\"description\":\"search : Optional[SearchConfig]\",\"compositions\":[\"SearchConfig\"]}"}, {"id": "metagpt/config2.py:Config:workspace"}, {"id": "{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}"}, {"id": "metagpt/config2.py:Config:default"}, {"id": "{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config:from_home"}, {"id": "{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]}"}, {"id": "metagpt/config2.py:Config:get_azure_llm"}, {"id": "{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:get_openai_llm"}, {"id": "{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"id": "metagpt/config2.py:Config:update_via_cli"}, {"id": "{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}"}, {"id": "?:RedisConfig"}, {"id": "?:S3Config"}, {"id": "?:SearchConfig"}, {"id": "?:LLMConfig"}, {"id": "metagpt/tools/openai_text_to_embedding.py"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config\",\"attributes\":{\"alias\":{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias"}, {"id": "{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed"}, {"id": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:Config"}, {"id": "{\"name\":\"Config\",\"package\":\"metagpt/strategy/tot.py:TreeofThought:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed"}, {"id": "metagpt/context.py:Context"}, {"id": "{\"name\":\"Context\",\"package\":\"metagpt/context.py:Context\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]},\"kwargs\":{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}},\"methods\":{\"llm\":{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]},\"llm_with_cost_manager_from_llm_config\":{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]},\"new_environ\":{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}},\"compositions\":[\"GitRepository\",\"ProjectRepo\",\"Path\"],\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"id": "metagpt/context.py:Context:config"}, {"id": "metagpt/context.py:Context:cost_manager"}, {"id": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"id": "metagpt/context.py:Context:git_repo"}, {"id": "{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]}"}, {"id": "metagpt/context.py:Context:kwargs"}, {"id": "{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}"}, {"id": "metagpt/context.py:Context:model_config"}, {"id": "metagpt/context.py:Context:repo"}, {"id": "{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]}"}, {"id": "metagpt/context.py:Context:src_workspace"}, {"id": "{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/context.py:Context:llm"}, {"id": "{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]}"}, {"id": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config"}, {"id": "{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"id": "metagpt/context.py:Context:new_environ"}, {"id": "{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}"}, {"id": "?:GitRepository"}, {"id": "?:ProjectRepo"}, {"id": "?:Path"}, {"id": "metagpt/context_mixin.py"}, {"id": "metagpt/context_mixin.py:ContextMixin"}, {"id": "{\"name\":\"ContextMixin\",\"package\":\"metagpt/context_mixin.py:ContextMixin\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"private_config\":{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]},\"private_context\":{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]},\"private_llm\":{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]},\"set_config\":{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}},\"compositions\":[\"Config\",\"Context\",\"BaseLLM\"],\"aggregations\":[]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:config"}, {"id": "metagpt/context_mixin.py:ContextMixin:context"}, {"id": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:llm"}, {"id": "metagpt/context_mixin.py:ContextMixin:model_config"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_config"}, {"id": "{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_context"}, {"id": "{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"id": "{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_config"}, {"id": "{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_context"}, {"id": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/context_mixin.py:ContextMixin:set_llm"}, {"id": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}"}, {"id": "?:Config"}, {"id": "?:Context"}, {"id": "metagpt/utils/cost_manager.py"}, {"id": "metagpt/utils/cost_manager.py:CostManager"}, {"id": "{\"name\":\"CostManager\",\"package\":\"metagpt/utils/cost_manager.py:CostManager\",\"attributes\":{\"max_budget\":{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]},\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]},\"get_total_completion_tokens\":{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]},\"get_total_cost\":{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]},\"get_total_prompt_tokens\":{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:max_budget"}, {"id": "{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_budget"}, {"id": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens"}, {"id": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_cost"}, {"id": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens"}, {"id": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_costs"}, {"id": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens"}, {"id": "{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_cost"}, {"id": "{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens"}, {"id": "{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:CostManager:update_cost"}, {"id": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"id": "?:Costs"}, {"id": "metagpt/utils/cost_manager.py:Costs"}, {"id": "{\"name\":\"Costs\",\"package\":\"metagpt/utils/cost_manager.py:Costs\",\"attributes\":{\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_budget"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_cost"}, {"id": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens"}, {"id": "metagpt/utils/custom_decoder.py"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder"}, {"id": "{\"name\":\"CustomDecoder\",\"package\":\"metagpt/utils/custom_decoder.py:CustomDecoder\",\"attributes\":{\"parse_object\":{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]},\"parse_string\":{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]},\"scan_once\":{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}},\"methods\":{\"decode\":{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object"}, {"id": "{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string"}, {"id": "{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once"}, {"id": "{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:decode"}, {"id": "{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/customer_service.py"}, {"id": "metagpt/roles/customer_service.py:CustomerService"}, {"id": "{\"name\":\"CustomerService\",\"package\":\"metagpt/roles/customer_service.py:CustomerService\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/customer_service.py:CustomerService:desc"}, {"id": "metagpt/roles/customer_service.py:CustomerService:name"}, {"id": "metagpt/roles/customer_service.py:CustomerService:profile"}, {"id": "metagpt/roles/customer_service.py:CustomerService:store"}, {"id": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"id": "?:BaseStore"}, {"id": "metagpt/tools/search_engine_ddg.py"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper"}, {"id": "{\"name\":\"DDGAPIWrapper\",\"package\":\"metagpt/tools/search_engine_ddg.py:DDGAPIWrapper\",\"attributes\":{\"ddgs\":{\"name\":\"ddgs\",\"type_\":\"DDGS\",\"default_\":\"\",\"description\":\"ddgs : DDGS\",\"compositions\":[\"DDGS\"]},\"executor\":{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}},\"compositions\":[\"DDGS\"],\"aggregations\":[\"\\\\\"]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs"}, {"id": "{\"name\":\"ddgs\",\"type_\":\"DDGS\",\"default_\":\"\",\"description\":\"ddgs : DDGS\",\"compositions\":[\"DDGS\"]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor"}, {"id": "{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop"}, {"id": "{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}"}, {"id": "?:DDGS"}, {"id": "?:\\"}, {"id": "metagpt/strategy/tot.py:DFSSolver"}, {"id": "{\"name\":\"DFSSolver\",\"package\":\"metagpt/strategy/tot.py:DFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"id": "metagpt/strategy/tot.py:DFSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource"}, {"id": "{\"name\":\"DataSource\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:DataSource\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:name"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:url"}, {"id": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/debug_error.py"}, {"id": "metagpt/actions/debug_error.py:DebugError"}, {"id": "{\"name\":\"DebugError\",\"package\":\"metagpt/actions/debug_error.py:DebugError\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"id": "metagpt/actions/debug_error.py:DebugError:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile"}, {"id": "{\"name\":\"DependencyFile\",\"package\":\"metagpt/utils/dependency_file.py:DependencyFile\",\"attributes\":{\"exists\":{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}},\"methods\":{\"delete_file\":{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]},\"load\":{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]},\"update\":{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:exists"}, {"id": "{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:delete_file"}, {"id": "{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:load"}, {"id": "{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:save"}, {"id": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:update"}, {"id": "{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "?:Path\\"}, {"id": "metagpt/actions/design_api_review.py"}, {"id": "metagpt/actions/design_api_review.py:DesignReview"}, {"id": "{\"name\":\"DesignReview\",\"package\":\"metagpt/actions/design_api_review.py:DesignReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:i_context"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:name"}, {"id": "metagpt/actions/design_api_review.py:DesignReview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository"}, {"id": "{\"name\":\"DiGraphRepository\",\"package\":\"metagpt/utils/di_graph_repository.py:DiGraphRepository\",\"attributes\":{\"pathname\":{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]},\"root\":{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"json\":{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"GraphRepository\",\"str\\\\\",\"Path\"]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\",\"GraphRepository\",\"SPO\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname"}, {"id": "{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root"}, {"id": "{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert"}, {"id": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json"}, {"id": "{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from"}, {"id": "{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"GraphRepository\",\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select"}, {"id": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"id": "?:GraphRepository"}, {"id": "?:SPO"}, {"id": "metagpt/utils/project_repo.py"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories"}, {"id": "{\"name\":\"DocFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:DocFileRepositories\",\"attributes\":{\"class_view\":{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]},\"task\":{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:class_view"}, {"id": "{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change"}, {"id": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary"}, {"id": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo"}, {"id": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:prd"}, {"id": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:system_design"}, {"id": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:task"}, {"id": "{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}"}, {"id": "metagpt/utils/pycst.py"}, {"id": "metagpt/utils/pycst.py:DocstringCollector"}, {"id": "{\"name\":\"DocstringCollector\",\"package\":\"metagpt/utils/pycst.py:DocstringCollector\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.FunctionDef\",\"cst.Module\",\"bool\\\\\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:docstrings"}, {"id": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:stack"}, {"id": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef"}, {"id": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef"}, {"id": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:leave_Module"}, {"id": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef"}, {"id": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef"}, {"id": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:visit_Module"}, {"id": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"id": "?:..."}, {"id": "?:cst.SimpleStatementLine"}, {"id": "?:tuple"}, {"id": "?:cst.ClassDef"}, {"id": "?:cst.FunctionDef"}, {"id": "?:cst.Module"}, {"id": "?:bool\\"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer"}, {"id": "{\"name\":\"DocstringTransformer\",\"package\":\"metagpt/utils/pycst.py:DocstringTransformer\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\",\"cst.FunctionDef\",\"Module\",\"bool\\\\\",\"cst.Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:docstrings"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:stack"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef"}, {"id": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef"}, {"id": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module"}, {"id": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]}"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module"}, {"id": "?:cst.CSTNode"}, {"id": "?:Module"}, {"id": "metagpt/document.py"}, {"id": "metagpt/document.py:Document"}, {"id": "{\"name\":\"Document\",\"package\":\"metagpt/document.py:Document\",\"attributes\":{\"author\":{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"reviews\":{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"from_text\":{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/document.py:Document:author"}, {"id": "{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:content"}, {"id": "metagpt/document.py:Document:name"}, {"id": "metagpt/document.py:Document:path"}, {"id": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:reviews"}, {"id": "{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:status"}, {"id": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"id": "metagpt/document.py:Document:from_path"}, {"id": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:from_text"}, {"id": "{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:Document:persist"}, {"id": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Document:to_path"}, {"id": "{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/schema.py:Document"}, {"id": "{\"name\":\"Document\",\"package\":\"metagpt/schema.py:Document\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]},\"root_relative_path\":{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}},\"methods\":{\"get_meta\":{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/schema.py:Document:content"}, {"id": "metagpt/schema.py:Document:filename"}, {"id": "metagpt/schema.py:Document:root_path"}, {"id": "{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Document:root_relative_path"}, {"id": "{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Document:get_meta"}, {"id": "{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:DocumentStatus"}, {"id": "{\"name\":\"DocumentStatus\",\"package\":\"metagpt/document.py:DocumentStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document.py:DocumentStatus:name"}, {"id": "metagpt/schema.py:Documents"}, {"id": "{\"name\":\"Documents\",\"package\":\"metagpt/schema.py:Documents\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}},\"methods\":{\"from_iterable\":{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Documents\",\"Iterable\",\"Document\"]},\"to_action_output\":{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}},\"compositions\":[\"Document\"],\"aggregations\":[\"Documents\",\"Iterable\",\"ActionOutput\"]}"}, {"id": "metagpt/schema.py:Documents:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/schema.py:Documents:from_iterable"}, {"id": "{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Documents\",\"Iterable\",\"Document\"]}"}, {"id": "metagpt/schema.py:Documents:to_action_output"}, {"id": "{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}"}, {"id": "?:Documents"}, {"id": "?:Iterable"}, {"id": "?:ActionOutput"}, {"id": "metagpt/repo_parser.py:DotClassAttribute"}, {"id": "{\"name\":\"DotClassAttribute\",\"package\":\"metagpt/repo_parser.py:DotClassAttribute\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"default_\":{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]},\"parse_compositions\":{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]},\"remove_white_spaces\":{\"name\":\"remove_white_spaces\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove_white_spaces(v: str)\",\"aggregations\":[]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:compositions"}, {"id": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:default_"}, {"id": "{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:description"}, {"id": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:name"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:type_"}, {"id": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions"}, {"id": "{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:remove_white_spaces"}, {"id": "{\"name\":\"remove_white_spaces\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove_white_spaces(v: str)\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:sort"}, {"id": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"id": "?:DotClassAttribute"}, {"id": "metagpt/repo_parser.py:DotClassInfo"}, {"id": "{\"name\":\"DotClassInfo\",\"package\":\"metagpt/repo_parser.py:DotClassInfo\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"attributes\":{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"methods\":{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}},\"methods\":{\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[\"DotClassAttribute\",\"DotClassMethod\"],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:aggregations"}, {"id": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:attributes"}, {"id": "{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:compositions"}, {"id": "metagpt/repo_parser.py:DotClassInfo:methods"}, {"id": "{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:name"}, {"id": "metagpt/repo_parser.py:DotClassInfo:package"}, {"id": "{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassInfo:sort"}, {"id": "?:DotClassMethod"}, {"id": "metagpt/repo_parser.py:DotClassMethod"}, {"id": "{\"name\":\"DotClassMethod\",\"package\":\"metagpt/repo_parser.py:DotClassMethod\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"args\":{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"return_args\":{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}},\"compositions\":[\"DotClassAttribute\",\"DotReturn\"],\"aggregations\":[\"DotClassMethod\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:aggregations"}, {"id": "metagpt/repo_parser.py:DotClassMethod:args"}, {"id": "{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:description"}, {"id": "metagpt/repo_parser.py:DotClassMethod:name"}, {"id": "metagpt/repo_parser.py:DotClassMethod:return_args"}, {"id": "{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}"}, {"id": "metagpt/repo_parser.py:DotClassMethod:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}"}, {"id": "?:DotReturn"}, {"id": "metagpt/repo_parser.py:DotClassRelationship"}, {"id": "{\"name\":\"DotClassRelationship\",\"package\":\"metagpt/repo_parser.py:DotClassRelationship\",\"attributes\":{\"dest\":{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]},\"src\":{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:dest"}, {"id": "{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:label"}, {"id": "{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:relationship"}, {"id": "{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotClassRelationship:src"}, {"id": "{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:DotReturn"}, {"id": "{\"name\":\"DotReturn\",\"package\":\"metagpt/repo_parser.py:DotReturn\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotReturn\\\\\"]}"}, {"id": "metagpt/repo_parser.py:DotReturn:compositions"}, {"id": "metagpt/repo_parser.py:DotReturn:description"}, {"id": "metagpt/repo_parser.py:DotReturn:type_"}, {"id": "metagpt/repo_parser.py:DotReturn:parse"}, {"id": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]}"}, {"id": "metagpt/repo_parser.py:DotReturn:sort"}, {"id": "?:DotReturn\\"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"id": "{\"name\":\"Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Embedding\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]},\"object\":{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding"}, {"id": "{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:index"}, {"id": "{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Embedding:object"}, {"id": "{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py"}, {"id": "metagpt/roles/engineer.py:Engineer"}, {"id": "{\"name\":\"Engineer\",\"package\":\"metagpt/roles/engineer.py:Engineer\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"code_todos\":{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"n_borg\":{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]},\"n_summarize\":{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"next_todo_action\":{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"summarize_todos\":{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]},\"use_code_review\":{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:action_description"}, {"id": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:code_todos"}, {"id": "{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:constraints"}, {"id": "metagpt/roles/engineer.py:Engineer:goal"}, {"id": "metagpt/roles/engineer.py:Engineer:n_borg"}, {"id": "{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:n_summarize"}, {"id": "{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:name"}, {"id": "metagpt/roles/engineer.py:Engineer:next_todo_action"}, {"id": "{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:profile"}, {"id": "metagpt/roles/engineer.py:Engineer:src_workspace"}, {"id": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:summarize_todos"}, {"id": "{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]}"}, {"id": "metagpt/roles/engineer.py:Engineer:use_code_review"}, {"id": "{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate"}, {"id": "{\"name\":\"EnronTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:EnronTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity"}, {"id": "{\"name\":\"Entity\",\"package\":\"metagpt/learn/skill_loader.py:Entity\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}},\"methods\":{},\"compositions\":[\"Skill\"],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity:name"}, {"id": "{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Entity:skills"}, {"id": "{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}"}, {"id": "?:Skill"}, {"id": "metagpt/environment.py"}, {"id": "metagpt/environment.py:Environment"}, {"id": "{\"name\":\"Environment\",\"package\":\"metagpt/environment.py:Environment\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"member_addrs\":{\"name\":\"member_addrs\",\"type_\":\"dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : dict[Role, Set]\",\"compositions\":[\"Role\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"roles\":{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny[Role]]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}},\"methods\":{\"add_role\":{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: Role)\",\"aggregations\":[\"Role\"]},\"add_roles\":{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable[Role]\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable[Role])\",\"aggregations\":[\"Role\",\"Iterable\"]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]},\"get_addresses\":{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]},\"get_role\":{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Role\",\"description\":\"Role\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): Role\",\"aggregations\":[\"Role\"]},\"get_roles\":{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,Role]\",\"description\":\"dict[str, Role]\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, Role]\",\"aggregations\":[\"Role\"]},\"init_roles\":{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]},\"role_names\":{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}},\"compositions\":[\"Role\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\",\"Message\"]}"}, {"id": "metagpt/environment.py:Environment:context"}, {"id": "metagpt/environment.py:Environment:desc"}, {"id": "metagpt/environment.py:Environment:history"}, {"id": "{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]}"}, {"id": "metagpt/environment.py:Environment:is_idle"}, {"id": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"id": "metagpt/environment.py:Environment:member_addrs"}, {"id": "{\"name\":\"member_addrs\",\"type_\":\"dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : dict[Role, Set]\",\"compositions\":[\"Role\"]}"}, {"id": "metagpt/environment.py:Environment:model_config"}, {"id": "metagpt/environment.py:Environment:roles"}, {"id": "{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny[Role]]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}"}, {"id": "metagpt/environment.py:Environment:add_role"}, {"id": "{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment.py:Environment:add_roles"}, {"id": "{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable[Role]\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable[Role])\",\"aggregations\":[\"Role\",\"Iterable\"]}"}, {"id": "metagpt/environment.py:Environment:archive"}, {"id": "{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:get_addresses"}, {"id": "{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:get_role"}, {"id": "{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Role\",\"description\":\"Role\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): Role\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment.py:Environment:get_roles"}, {"id": "{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,Role]\",\"description\":\"dict[str, Role]\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, Role]\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/environment.py:Environment:init_roles"}, {"id": "{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:publish_message"}, {"id": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/environment.py:Environment:role_names"}, {"id": "{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}"}, {"id": "metagpt/environment.py:Environment:set_addresses"}, {"id": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}"}, {"id": "?:Role"}, {"id": "?:SerializeAsAny"}, {"id": "metagpt/learn/skill_loader.py:Example"}, {"id": "{\"name\":\"Example\",\"package\":\"metagpt/learn/skill_loader.py:Example\",\"attributes\":{\"answer\":{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Example:answer"}, {"id": "{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Example:ask"}, {"id": "metagpt/actions/execute_task.py"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask"}, {"id": "{\"name\":\"ExecuteTask\",\"package\":\"metagpt/actions/execute_task.py:ExecuteTask\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run ()\",\"aggregations\":[]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:name"}, {"id": "metagpt/actions/execute_task.py:ExecuteTask:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore"}, {"id": "{\"name\":\"FaissStore\",\"package\":\"metagpt/document_store/faiss_store.py:FaissStore\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]},\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]},\"asearch\":{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete ()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[\"OpenAIEmbeddings\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:content_col"}, {"id": "{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:embedding"}, {"id": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:meta_col"}, {"id": "{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:store"}, {"id": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:asearch"}, {"id": "{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:delete"}, {"id": "{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete ()\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:persist"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:write"}, {"id": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"id": "?:OpenAIEmbeddings"}, {"id": "metagpt/utils/file.py"}, {"id": "metagpt/utils/file.py:File"}, {"id": "{\"name\":\"File\",\"package\":\"metagpt/utils/file.py:File\",\"attributes\":{\"CHUNK_SIZE\":{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}},\"methods\":{\"read\":{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"bytes\",\"Path\"]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"bytes\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"bytes\",\"Path\"]}"}, {"id": "metagpt/utils/file.py:File:CHUNK_SIZE"}, {"id": "{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}"}, {"id": "metagpt/utils/file.py:File:read"}, {"id": "{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"bytes\",\"Path\"]}"}, {"id": "metagpt/utils/file.py:File:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"bytes\",\"Path\"]}"}, {"id": "?:bytes"}, {"id": "metagpt/utils/file_repository.py"}, {"id": "metagpt/utils/file_repository.py:FileRepository"}, {"id": "{\"name\":\"FileRepository\",\"package\":\"metagpt/utils/file_repository.py:FileRepository\",\"attributes\":{\"all_files\":{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]},\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]},\"get_all\":{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]},\"get_change_dir_files\":{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]},\"get_changed_dependency\":{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"new_filename\":{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Path\\\\\",\"Document\"]},\"save_doc\":{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]},\"save_pdf\":{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"Document\\\\\",\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:all_files"}, {"id": "{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:changed_files"}, {"id": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:root_path"}, {"id": "{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:workdir"}, {"id": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_all"}, {"id": "{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files"}, {"id": "{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency"}, {"id": "{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:get_dependency"}, {"id": "{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:new_filename"}, {"id": "{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Path\\\\\",\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_doc"}, {"id": "{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:save_pdf"}, {"id": "{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"id": "?:Document\\"}, {"id": "metagpt/provider/fireworks_api.py"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager"}, {"id": "{\"name\":\"FireworksCostManager\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"model_grade_token_costs\":{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost"}, {"id": "{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs"}, {"id": "{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost"}, {"id": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"id": "{\"name\":\"FireworksLLM\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksLLM\",\"attributes\":{\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}},\"methods\":{\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens"}, {"id": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs"}, {"id": "metagpt/actions/fix_bug.py"}, {"id": "metagpt/actions/fix_bug.py:FixBug"}, {"id": "{\"name\":\"FixBug\",\"package\":\"metagpt/actions/fix_bug.py:FixBug\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/fix_bug.py:FixBug:name"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator"}, {"id": "{\"name\":\"GPTPromptGenerator\",\"package\":\"metagpt/tools/prompt_writer.py:GPTPromptGenerator\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]},\"gen_chatbot_style\":{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]},\"gen_instruction_style\":{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]},\"gen_query_style\":{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style"}, {"id": "{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style"}, {"id": "{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style"}, {"id": "{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel"}, {"id": "{\"name\":\"GeminiGenerativeModel\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiGenerativeModel\",\"attributes\":{},\"methods\":{\"count_tokens\":{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]},\"count_tokens_async\":{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}},\"compositions\":[],\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens"}, {"id": "{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async"}, {"id": "{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"id": "?:content_types.ContentsType"}, {"id": "?:glm.CountTokensResponse"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"id": "{\"name\":\"GeminiLLM\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"aget_usage\":{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:model"}, {"id": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage"}, {"id": "{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion"}, {"id": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage"}, {"id": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"id": "?:GenerateContentResponse"}, {"id": "metagpt/provider/general_api_requestor.py"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor"}, {"id": "{\"name\":\"GeneralAPIRequestor\",\"package\":\"metagpt/provider/general_api_requestor.py:GeneralAPIRequestor\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/generate_questions.py"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions"}, {"id": "{\"name\":\"GenerateQuestions\",\"package\":\"metagpt/actions/generate_questions.py:GenerateQuestions\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}},\"compositions\":[],\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions:name"}, {"id": "metagpt/actions/generate_questions.py:GenerateQuestions:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}"}, {"id": "metagpt/actions/invoice_ocr.py"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"id": "{\"name\":\"GenerateTable\",\"package\":\"metagpt/actions/invoice_ocr.py:GenerateTable\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:language"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:name"}, {"id": "metagpt/actions/invoice_ocr.py:GenerateTable:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb"}, {"id": "{\"name\":\"GetMessageFromWeb\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb\",\"attributes\":{\"domain\":{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]},\"ret\":{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]},\"spark_api_key\":{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]},\"spark_api_secret\":{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]},\"spark_appid\":{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]},\"text\":{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}},\"methods\":{\"gen_params\":{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]},\"on_close\":{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close (ws, one, two)\",\"aggregations\":[]},\"on_error\":{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]},\"on_message\":{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]},\"on_open\":{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"send\":{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain"}, {"id": "{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret"}, {"id": "{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key"}, {"id": "{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret"}, {"id": "{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid"}, {"id": "{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url"}, {"id": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:text"}, {"id": "{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params"}, {"id": "{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close"}, {"id": "{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close (ws, one, two)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error"}, {"id": "{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message"}, {"id": "{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open"}, {"id": "{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:run"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:send"}, {"id": "{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository"}, {"id": "{\"name\":\"GitRepository\",\"package\":\"metagpt/utils/git_repository.py:GitRepository\",\"attributes\":{\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"is_valid\":{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"add_change\":{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]},\"commit\":{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]},\"delete_repository\":{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]},\"filter_gitignore\":{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]},\"get_files\":{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]},\"is_git_dir\":{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]},\"new_file_repository\":{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"Path\\\\\",\"FileRepository\"]},\"open\":{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]},\"rename_root\":{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"DependencyFile\",\"FileRepository\",\"Path\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:changed_files"}, {"id": "metagpt/utils/git_repository.py:GitRepository:is_valid"}, {"id": "{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:status"}, {"id": "metagpt/utils/git_repository.py:GitRepository:workdir"}, {"id": "metagpt/utils/git_repository.py:GitRepository:add_change"}, {"id": "{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:archive"}, {"id": "{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:commit"}, {"id": "{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:delete_repository"}, {"id": "{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore"}, {"id": "{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:get_dependency"}, {"id": "{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:get_files"}, {"id": "{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:is_git_dir"}, {"id": "{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:new_file_repository"}, {"id": "{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"Path\\\\\",\"FileRepository\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:open"}, {"id": "{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:rename_root"}, {"id": "{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}"}, {"id": "?:DependencyFile"}, {"id": "?:FileRepository"}, {"id": "metagpt/tools/search_engine_googleapi.py"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper"}, {"id": "{\"name\":\"GoogleAPIWrapper\",\"package\":\"metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper\",\"attributes\":{\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"google_api_client\":{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]},\"google_api_key\":{\"name\":\"google_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_api_key : Optional[str]\",\"compositions\":[]},\"google_cse_id\":{\"name\":\"google_cse_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_cse_id : Optional[str]\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"check_google_api_key\":{\"name\":\"check_google_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_api_key(val: str)\",\"aggregations\":[]},\"check_google_cse_id\":{\"name\":\"check_google_cse_id\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_cse_id(val: str)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor"}, {"id": "{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client"}, {"id": "{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key"}, {"id": "{\"name\":\"google_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id"}, {"id": "{\"name\":\"google_cse_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_cse_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop"}, {"id": "{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key"}, {"id": "{\"name\":\"check_google_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_api_key(val: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id"}, {"id": "{\"name\":\"check_google_cse_id\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_cse_id(val: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"id": "?:futures.Executor"}, {"id": "?:asyncio.AbstractEventLoop"}, {"id": "metagpt/utils/graph_repository.py"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword"}, {"id": "{\"name\":\"GraphKeyword\",\"package\":\"metagpt/utils/graph_repository.py:GraphKeyword\",\"attributes\":{\"CLASS\":{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]},\"CLASS_METHOD\":{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]},\"CLASS_PROPERTY\":{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]},\"FUNCTION\":{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]},\"GLOBAL_VARIABLE\":{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]},\"HAS_CLASS\":{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]},\"HAS_CLASS_METHOD\":{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]},\"HAS_CLASS_PROPERTY\":{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]},\"HAS_CLASS_USE_CASE\":{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]},\"HAS_CLASS_VIEW\":{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]},\"HAS_DETAIL\":{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]},\"HAS_FUNCTION\":{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]},\"HAS_PAGE_INFO\":{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]},\"HAS_PARTICIPANT\":{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]},\"HAS_SEQUENCE_VIEW\":{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]},\"IS\":{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]},\"IS_AGGREGATE_OF\":{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]},\"IS_COMPOSITE_OF\":{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]},\"NULL\":{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]},\"OF\":{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]},\"ON\":{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]},\"SOURCE_CODE\":{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS"}, {"id": "{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD"}, {"id": "{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY"}, {"id": "{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION"}, {"id": "{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE"}, {"id": "{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS"}, {"id": "{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD"}, {"id": "{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY"}, {"id": "{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE"}, {"id": "{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW"}, {"id": "{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL"}, {"id": "{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION"}, {"id": "{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO"}, {"id": "{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT"}, {"id": "{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW"}, {"id": "{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS"}, {"id": "{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF"}, {"id": "{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF"}, {"id": "{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:NULL"}, {"id": "{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:OF"}, {"id": "{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:ON"}, {"id": "{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE"}, {"id": "{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository"}, {"id": "{\"name\":\"GraphRepository\",\"package\":\"metagpt/utils/graph_repository.py:GraphRepository\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete (subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert (subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"rebuild_composition_relationship\":{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save ()\",\"aggregations\":[]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select (subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]},\"update_graph_db_with_class_relationship_views\":{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]},\"update_graph_db_with_class_views\":{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]},\"update_graph_db_with_file_info\":{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}},\"compositions\":[],\"aggregations\":[\"GraphRepository\",\"SPO\",\"DotClassRelationship\",\"DotClassInfo\",\"RepoFileInfo\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:name"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete (subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:insert"}, {"id": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert (subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship"}, {"id": "{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:save"}, {"id": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save ()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:select"}, {"id": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select (subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views"}, {"id": "{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views"}, {"id": "{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info"}, {"id": "{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}"}, {"id": "?:DotClassRelationship"}, {"id": "?:DotClassInfo"}, {"id": "?:RepoFileInfo"}, {"id": "metagpt/utils/human_interaction.py"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction"}, {"id": "{\"name\":\"HumanInteraction\",\"package\":\"metagpt/utils/human_interaction.py:HumanInteraction\",\"attributes\":{\"stop_list\":{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}},\"methods\":{\"check_input_type\":{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]},\"input_num_until_valid\":{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]},\"input_until_valid\":{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]},\"interact_with_instruct_content\":{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]},\"multilines_input\":{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[\"tuple\"],\"aggregations\":[\"Type\",\"BaseModel\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list"}, {"id": "{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type"}, {"id": "{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid"}, {"id": "{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid"}, {"id": "{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content"}, {"id": "{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input"}, {"id": "{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py"}, {"id": "metagpt/provider/human_provider.py:HumanProvider"}, {"id": "{\"name\":\"HumanProvider\",\"package\":\"metagpt/provider/human_provider.py:HumanProvider\",\"attributes\":{\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:system_prompt"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:aask"}, {"id": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text"}, {"id": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:ask"}, {"id": "{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS"}, {"id": "{\"name\":\"IFlyTekTTS\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTS\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}},\"methods\":{\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech"}, {"id": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse"}, {"id": "{\"name\":\"IFlyTekTTSResponse\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]},\"sid\":{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AudioData\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code"}, {"id": "{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data"}, {"id": "{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message"}, {"id": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid"}, {"id": "{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}"}, {"id": "?:AudioData"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus"}, {"id": "{\"name\":\"IFlyTekTTSStatus\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name"}, {"id": "metagpt/tools/metagpt_text_to_image.py"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult"}, {"id": "{\"name\":\"ImageResult\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult\",\"attributes\":{\"images\":{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images"}, {"id": "{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters"}, {"id": "{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument"}, {"id": "{\"name\":\"IndexableDocument\",\"package\":\"metagpt/document.py:IndexableDocument\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]},\"get_docs_and_metadatas\":{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}},\"compositions\":[\"pd.DataFrame\"],\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:IndexableDocument:content_col"}, {"id": "{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument:data"}, {"id": "{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]}"}, {"id": "metagpt/document.py:IndexableDocument:meta_col"}, {"id": "{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document.py:IndexableDocument:model_config"}, {"id": "metagpt/document.py:IndexableDocument:from_path"}, {"id": "{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas"}, {"id": "{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}"}, {"id": "?:pd.DataFrame"}, {"id": "metagpt/roles/invoice_ocr_assistant.py"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData"}, {"id": "{\"name\":\"InvoiceData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceData\",\"attributes\":{\"invoice_data\":{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data"}, {"id": "{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR"}, {"id": "{\"name\":\"InvoiceOCR\",\"package\":\"metagpt/actions/invoice_ocr.py:InvoiceOCR\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant"}, {"id": "{\"name\":\"InvoiceOCRAssistant\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"orc_data\":{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]},\"origin_query\":{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data"}, {"id": "{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query"}, {"id": "{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath"}, {"id": "{\"name\":\"InvoicePath\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoicePath\",\"attributes\":{\"file_path\":{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path"}, {"id": "{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/configs/llm_config.py"}, {"id": "metagpt/configs/llm_config.py:LLMConfig"}, {"id": "{\"name\":\"LLMConfig\",\"package\":\"metagpt/configs/llm_config.py:LLMConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]},\"best_of\":{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]},\"calc_usage\":{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]},\"domain\":{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]},\"frequency_penalty\":{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]},\"logprobs\":{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]},\"max_token\":{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"n\":{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]},\"presence_penalty\":{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"repetition_penalty\":{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]},\"stop\":{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]},\"stream\":{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]},\"temperature\":{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]},\"timeout\":{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]},\"top_k\":{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]},\"top_logprobs\":{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]},\"top_p\":{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}},\"methods\":{\"check_llm_key\":{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_key"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"id": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:api_version"}, {"id": "{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:base_url"}, {"id": "{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:best_of"}, {"id": "{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:calc_usage"}, {"id": "{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:domain"}, {"id": "{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty"}, {"id": "{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:logprobs"}, {"id": "{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:max_token"}, {"id": "{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:model"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:n"}, {"id": "{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty"}, {"id": "{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:proxy"}, {"id": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty"}, {"id": "{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:stop"}, {"id": "{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:stream"}, {"id": "{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:temperature"}, {"id": "{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:timeout"}, {"id": "{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_k"}, {"id": "{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs"}, {"id": "{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:top_p"}, {"id": "{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key"}, {"id": "{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/llm_provider_registry.py"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry"}, {"id": "{\"name\":\"LLMProviderRegistry\",\"package\":\"metagpt/provider/llm_provider_registry.py:LLMProviderRegistry\",\"attributes\":{\"providers\":{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}},\"methods\":{\"get_provider\":{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]},\"register\":{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"LLMType\"]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers"}, {"id": "{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider"}, {"id": "{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register"}, {"id": "{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}"}, {"id": "?:LLMType"}, {"id": "metagpt/configs/llm_config.py:LLMType"}, {"id": "{\"name\":\"LLMType\",\"package\":\"metagpt/configs/llm_config.py:LLMType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/llm_config.py:LLMType:name"}, {"id": "metagpt/document_store/lancedb_store.py"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore"}, {"id": "{\"name\":\"LanceStore\",\"package\":\"metagpt/document_store/lancedb_store.py:LanceStore\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"table\":{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"drop\":{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\",\"LanceTable\",\"RemoteTable\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:db"}, {"id": "{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:name"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:table"}, {"id": "{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:delete"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:drop"}, {"id": "{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:persist"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:write"}, {"id": "{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}"}, {"id": "?:LanceDBConnection"}, {"id": "?:RemoteDBConnection"}, {"id": "?:LanceTable"}, {"id": "?:RemoteTable"}, {"id": "metagpt/document_store/base_store.py:LocalStore"}, {"id": "{\"name\":\"LocalStore\",\"package\":\"metagpt/document_store/base_store.py:LocalStore\",\"attributes\":{\"cache_dir\":{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]},\"fname\":{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]},\"raw_data_path\":{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:cache_dir"}, {"id": "{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:fname"}, {"id": "{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:raw_data_path"}, {"id": "{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:store"}, {"id": "metagpt/memory/longterm_memory.py"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"id": "{\"name\":\"LongTermMemory\",\"package\":\"metagpt/memory/longterm_memory.py:LongTermMemory\",\"attributes\":{\"memory_storage\":{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_from_recover\":{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}},\"compositions\":[\"RoleContext\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"id": "{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover"}, {"id": "{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"id": "{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:clear"}, {"id": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:delete"}, {"id": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news"}, {"id": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory"}, {"id": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}"}, {"id": "?:RoleContext"}, {"id": "metagpt/strategy/tot.py:MCTSSolver"}, {"id": "{\"name\":\"MCTSSolver\",\"package\":\"metagpt/strategy/tot.py:MCTSSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:MCTSSolver:solve"}, {"id": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine"}, {"id": "{\"name\":\"MeilisearchEngine\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}},\"methods\":{\"add_documents\":{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]},\"set_index\":{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}},\"compositions\":[\"Client\"],\"aggregations\":[\"DataSource\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client"}, {"id": "{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents"}, {"id": "{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index"}, {"id": "{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}"}, {"id": "?:Client"}, {"id": "?:DataSource"}, {"id": "metagpt/memory/memory.py"}, {"id": "metagpt/memory/memory.py:Memory"}, {"id": "{\"name\":\"Memory\",\"package\":\"metagpt/memory/memory.py:Memory\",\"attributes\":{\"ignore_id\":{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]},\"storage\":{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"add_batch\":{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"count\":{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"delete_newest\":{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_action\":{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_actions\":{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_content\":{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_role\":{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]},\"try_remember\":{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\"]}"}, {"id": "metagpt/memory/memory.py:Memory:ignore_id"}, {"id": "{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory.py:Memory:index"}, {"id": "{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]}"}, {"id": "metagpt/memory/memory.py:Memory:storage"}, {"id": "{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}"}, {"id": "metagpt/memory/memory.py:Memory:add"}, {"id": "metagpt/memory/memory.py:Memory:add_batch"}, {"id": "{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]}"}, {"id": "metagpt/memory/memory.py:Memory:clear"}, {"id": "metagpt/memory/memory.py:Memory:count"}, {"id": "{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]}"}, {"id": "metagpt/memory/memory.py:Memory:delete"}, {"id": "metagpt/memory/memory.py:Memory:delete_newest"}, {"id": "{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:find_news"}, {"id": "metagpt/memory/memory.py:Memory:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_action"}, {"id": "{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_actions"}, {"id": "{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_content"}, {"id": "{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:get_by_role"}, {"id": "{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory.py:Memory:try_remember"}, {"id": "{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "?:DefaultDict"}, {"id": "metagpt/memory/memory_storage.py"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage"}, {"id": "{\"name\":\"MemoryStorage\",\"package\":\"metagpt/memory/memory_storage.py:MemoryStorage\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"is_initialized\":{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]},\"mem_ttl\":{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]},\"role_mem_path\":{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]},\"threshold\":{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]},\"clean\":{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]},\"search_dissimilar\":{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"OpenAIEmbeddings\",\"Path\",\"FAISS\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:embedding"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized"}, {"id": "{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl"}, {"id": "{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:role_id"}, {"id": "{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path"}, {"id": "{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:store"}, {"id": "{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:threshold"}, {"id": "{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:clean"}, {"id": "{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:persist"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory"}, {"id": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar"}, {"id": "{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "?:FAISS"}, {"id": "metagpt/configs/mermaid_config.py"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig"}, {"id": "{\"name\":\"MermaidConfig\",\"package\":\"metagpt/configs/mermaid_config.py:MermaidConfig\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:engine"}, {"id": "{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]}"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:path"}, {"id": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config"}, {"id": "metagpt/schema.py:Message"}, {"id": "{\"name\":\"Message\",\"package\":\"metagpt/schema.py:Message\",\"attributes\":{\"cause_by\":{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"id\":{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]},\"send_to\":{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]},\"sent_from\":{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}},\"methods\":{\"check_cause_by\":{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]},\"check_id\":{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]},\"check_instruct_content\":{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]},\"check_send_to\":{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]},\"check_sent_from\":{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]},\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]},\"ser_instruct_content\":{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:cause_by"}, {"id": "{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:content"}, {"id": "metagpt/schema.py:Message:id"}, {"id": "{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:instruct_content"}, {"id": "{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:role"}, {"id": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:send_to"}, {"id": "{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:sent_from"}, {"id": "{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:Message:check_cause_by"}, {"id": "{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_id"}, {"id": "{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_instruct_content"}, {"id": "{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:check_send_to"}, {"id": "{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:check_sent_from"}, {"id": "{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:dump"}, {"id": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:Message:ser_instruct_content"}, {"id": "{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]}"}, {"id": "metagpt/schema.py:Message:to_dict"}, {"id": "{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:MessageQueue"}, {"id": "{\"name\":\"MessageQueue\",\"package\":\"metagpt/schema.py:MessageQueue\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"empty\":{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]},\"pop\":{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"pop_all\":{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]},\"push\":{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"MessageQueue\",\"Message\\\\\",\"Message\"]}"}, {"id": "metagpt/schema.py:MessageQueue:model_config"}, {"id": "metagpt/schema.py:MessageQueue:dump"}, {"id": "metagpt/schema.py:MessageQueue:empty"}, {"id": "{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:MessageQueue:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]}"}, {"id": "metagpt/schema.py:MessageQueue:pop"}, {"id": "{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"id": "metagpt/schema.py:MessageQueue:pop_all"}, {"id": "{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/schema.py:MessageQueue:push"}, {"id": "{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"id": "?:MessageQueue"}, {"id": "?:Message\\"}, {"id": "metagpt/roles/assistant.py:MessageType"}, {"id": "{\"name\":\"MessageType\",\"package\":\"metagpt/roles/assistant.py:MessageType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/assistant.py:MessageType:name"}, {"id": "metagpt/provider/metagpt_api.py"}, {"id": "metagpt/provider/metagpt_api.py:MetaGPTLLM"}, {"id": "{\"name\":\"MetaGPTLLM\",\"package\":\"metagpt/provider/metagpt_api.py:MetaGPTLLM\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image"}, {"id": "{\"name\":\"MetaGPTText2Image\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image\",\"attributes\":{\"model_url\":{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}},\"methods\":{\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url"}, {"id": "{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image"}, {"id": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py"}, {"id": "metagpt/strategy/tot_schema.py:MethodSelect"}, {"id": "{\"name\":\"MethodSelect\",\"package\":\"metagpt/strategy/tot_schema.py:MethodSelect\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:MethodSelect:name"}, {"id": "metagpt/tools/moderation.py"}, {"id": "metagpt/tools/moderation.py:Moderation"}, {"id": "{\"name\":\"Moderation\",\"package\":\"metagpt/tools/moderation.py:Moderation\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"amoderation_with_categories\":{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]},\"handle_moderation_results\":{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:llm"}, {"id": "metagpt/tools/moderation.py:Moderation:amoderation"}, {"id": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories"}, {"id": "{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"id": "metagpt/tools/moderation.py:Moderation:handle_moderation_results"}, {"id": "{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException"}, {"id": "{\"name\":\"NoMoneyException\",\"package\":\"metagpt/utils/common.py:NoMoneyException\",\"attributes\":{\"amount\":{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException:amount"}, {"id": "{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]}"}, {"id": "metagpt/utils/common.py:NoMoneyException:message"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:OCRResults"}, {"id": "{\"name\":\"OCRResults\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:OCRResults\",\"attributes\":{\"ocr_result\":{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result"}, {"id": "{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"id": "{\"name\":\"OllamaLLM\",\"package\":\"metagpt/provider/ollama_api.py:OllamaLLM\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"http_method\":{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"suffix_url\":{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:http_method"}, {"id": "{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:model"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url"}, {"id": "{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage"}, {"id": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM"}, {"id": "{\"name\":\"OpenAILLM\",\"package\":\"metagpt/provider/openai_api.py:OpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]},\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}},\"methods\":{\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]]): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"aspeech_to_text\":{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]},\"atext_to_speech\":{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\",\"ChatCompletion\",\"Costs\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aclient"}, {"id": "{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:model"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aask_code"}, {"id": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]]): dict\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:acompletion"}, {"id": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:amoderation"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text"}, {"id": "{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech"}, {"id": "{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments"}, {"id": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text"}, {"id": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:get_costs"}, {"id": "?:ChatCompletion"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse"}, {"id": "{\"name\":\"OpenAIResponse\",\"package\":\"metagpt/provider/general_api_base.py:OpenAIResponse\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},\"operation_location\":{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]},\"request_id\":{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]},\"response_ms\":{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]},\"retry_after\":{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:data"}, {"id": "{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location"}, {"id": "{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:organization"}, {"id": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id"}, {"id": "{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms"}, {"id": "{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after"}, {"id": "{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding"}, {"id": "{\"name\":\"OpenAIText2Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}},\"methods\":{\"text_2_embedding\":{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding"}, {"id": "{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"id": "{\"name\":\"OpenAIText2Image\",\"package\":\"metagpt/tools/openai_text_to_image.py:OpenAIText2Image\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"get_image_data\":{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]},\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data"}, {"id": "{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image"}, {"id": "metagpt/provider/open_llm_api.py"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"id": "{\"name\":\"OpenLLM\",\"package\":\"metagpt/provider/open_llm_api.py:OpenLLM\",\"attributes\":{},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs"}, {"id": "metagpt/utils/common.py:OutputParser"}, {"id": "{\"name\":\"OutputParser\",\"package\":\"metagpt/utils/common.py:OutputParser\",\"attributes\":{},\"methods\":{\"extract_content\":{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]},\"extract_struct\":{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]},\"parse_data\":{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]},\"parse_data_with_mapping\":{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]},\"parse_python_code\":{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"type\"]}"}, {"id": "metagpt/utils/common.py:OutputParser:extract_content"}, {"id": "{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:extract_struct"}, {"id": "{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_blocks"}, {"id": "metagpt/utils/common.py:OutputParser:parse_code"}, {"id": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_data"}, {"id": "{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping"}, {"id": "{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_file_list"}, {"id": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_python_code"}, {"id": "{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/common.py:OutputParser:parse_str"}, {"id": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}"}, {"id": "?:type"}, {"id": "metagpt/learn/skill_loader.py:Parameter"}, {"id": "{\"name\":\"Parameter\",\"package\":\"metagpt/learn/skill_loader.py:Parameter\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Parameter:description"}, {"id": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Parameter:type"}, {"id": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper"}, {"id": "{\"name\":\"PlaywrightWrapper\",\"package\":\"metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit'] \\\\| None\",\"compositions\":[\"Literal\\\\\"]},\"launch_kwargs\":{\"name\":\"launch_kwargs\",\"type_\":\"dict\\\\|None\",\"default_\":\"\",\"description\":\"launch_kwargs : dict \\\\| None\",\"compositions\":[\"dict\\\\\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}},\"compositions\":[\"Literal\\\\\",\"dict\\\\\"],\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type"}, {"id": "{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit'] \\\\| None\",\"compositions\":[\"Literal\\\\\"]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs"}, {"id": "{\"name\":\"launch_kwargs\",\"type_\":\"dict\\\\|None\",\"default_\":\"\",\"description\":\"launch_kwargs : dict \\\\| None\",\"compositions\":[\"dict\\\\\"]}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"id": "?:Literal\\"}, {"id": "?:dict\\"}, {"id": "?:WebPage\\"}, {"id": "?:WebPage"}, {"id": "metagpt/actions/prepare_documents.py"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments"}, {"id": "{\"name\":\"PrepareDocuments\",\"package\":\"metagpt/actions/prepare_documents.py:PrepareDocuments\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:config"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:name"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_interview.py"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview"}, {"id": "{\"name\":\"PrepareInterview\",\"package\":\"metagpt/actions/prepare_interview.py:PrepareInterview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview:name"}, {"id": "metagpt/actions/prepare_interview.py:PrepareInterview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/product_manager.py"}, {"id": "metagpt/roles/product_manager.py:ProductManager"}, {"id": "{\"name\":\"ProductManager\",\"package\":\"metagpt/roles/product_manager.py:ProductManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"todo_action\":{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/product_manager.py:ProductManager:constraints"}, {"id": "metagpt/roles/product_manager.py:ProductManager:goal"}, {"id": "metagpt/roles/product_manager.py:ProductManager:name"}, {"id": "metagpt/roles/product_manager.py:ProductManager:profile"}, {"id": "metagpt/roles/product_manager.py:ProductManager:todo_action"}, {"id": "{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/project_manager.py"}, {"id": "metagpt/roles/project_manager.py:ProjectManager"}, {"id": "{\"name\":\"ProjectManager\",\"package\":\"metagpt/roles/project_manager.py:ProjectManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:constraints"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:goal"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:name"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:profile"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo"}, {"id": "{\"name\":\"ProjectRepo\",\"package\":\"metagpt/utils/project_repo.py:ProjectRepo\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]},\"resources\":{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]},\"src_relative_path\":{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]},\"srcs\":{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]},\"test_outputs\":{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]},\"tests\":{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"code_files_exists\":{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]},\"with_src_path\":{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:git_repo"}, {"id": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:requirement"}, {"id": "{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"id": "{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path"}, {"id": "{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:srcs"}, {"id": "{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"id": "{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"id": "{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:workdir"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists"}, {"id": "{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path"}, {"id": "{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}"}, {"id": "metagpt/roles/prompt.py"}, {"id": "metagpt/roles/prompt.py:PromptString"}, {"id": "{\"name\":\"PromptString\",\"package\":\"metagpt/roles/prompt.py:PromptString\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/prompt.py:PromptString:name"}, {"id": "metagpt/roles/qa_engineer.py"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer"}, {"id": "{\"name\":\"QaEngineer\",\"package\":\"metagpt/roles/qa_engineer.py:QaEngineer\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"test_round\":{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]},\"test_round_allowed\":{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:constraints"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:goal"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:name"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:profile"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:test_round"}, {"id": "{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed"}, {"id": "{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection"}, {"id": "{\"name\":\"QdrantConnection\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantConnection\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:host"}, {"id": "{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory"}, {"id": "{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:port"}, {"id": "{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantConnection:url"}, {"id": "{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore"}, {"id": "{\"name\":\"QdrantStore\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]},\"create_collection\":{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]},\"delete_collection\":{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]},\"has_collection\":{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}},\"compositions\":[\"QdrantClient\"],\"aggregations\":[\"PointStruct\",\"VectorParams\",\"Filter\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:client"}, {"id": "{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:add"}, {"id": "{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection"}, {"id": "{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection"}, {"id": "{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection"}, {"id": "{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:search"}, {"id": "{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:write"}, {"id": "?:QdrantClient"}, {"id": "?:PointStruct"}, {"id": "?:VectorParams"}, {"id": "?:Filter"}, {"id": "metagpt/actions/rebuild_class_view.py"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView"}, {"id": "{\"name\":\"RebuildClassView\",\"package\":\"metagpt/actions/rebuild_class_view.py:RebuildClassView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db"}, {"id": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView"}, {"id": "{\"name\":\"RebuildSequenceView\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"parse_participant\":{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant"}, {"id": "{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run"}, {"id": "metagpt/utils/redis.py"}, {"id": "metagpt/utils/redis.py:Redis"}, {"id": "{\"name\":\"Redis\",\"package\":\"metagpt/utils/redis.py:Redis\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}},\"methods\":{\"close\":{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\"],\"aggregations\":[\"bytes\\\\\"]}"}, {"id": "metagpt/utils/redis.py:Redis:config"}, {"id": "{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"id": "metagpt/utils/redis.py:Redis:close"}, {"id": "{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/redis.py:Redis:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]}"}, {"id": "metagpt/utils/redis.py:Redis:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"id": "?:bytes\\"}, {"id": "metagpt/configs/redis_config.py"}, {"id": "metagpt/configs/redis_config.py:RedisConfig"}, {"id": "{\"name\":\"RedisConfig\",\"package\":\"metagpt/configs/redis_config.py:RedisConfig\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]},\"password\":{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]},\"username\":{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}},\"methods\":{\"to_kwargs\":{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]},\"to_url\":{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:db"}, {"id": "{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:host"}, {"id": "{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:password"}, {"id": "{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:port"}, {"id": "{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:username"}, {"id": "{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs"}, {"id": "{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]}"}, {"id": "metagpt/configs/redis_config.py:RedisConfig:to_url"}, {"id": "{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/repair_llm_raw_output.py"}, {"id": "metagpt/utils/repair_llm_raw_output.py:RepairType"}, {"id": "{\"name\":\"RepairType\",\"package\":\"metagpt/utils/repair_llm_raw_output.py:RepairType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:RepairType:name"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ReplyData"}, {"id": "{\"name\":\"ReplyData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:ReplyData\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"id": "{\"name\":\"ReplyQuestion\",\"package\":\"metagpt/actions/invoice_ocr.py:ReplyQuestion\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language"}, {"id": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Repo"}, {"id": "{\"name\":\"Repo\",\"package\":\"metagpt/document.py:Repo\",\"attributes\":{\"assets\":{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"codes\":{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"docs\":{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"eda\":{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]},\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]},\"get_text_documents\":{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}},\"compositions\":[\"Document\",\"Path\"],\"aggregations\":[\"RepoMetadata\"]}"}, {"id": "metagpt/document.py:Repo:assets"}, {"id": "{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:codes"}, {"id": "{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:docs"}, {"id": "{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"id": "metagpt/document.py:Repo:name"}, {"id": "metagpt/document.py:Repo:path"}, {"id": "metagpt/document.py:Repo:eda"}, {"id": "{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]}"}, {"id": "metagpt/document.py:Repo:from_path"}, {"id": "metagpt/document.py:Repo:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:Repo:get_text_documents"}, {"id": "{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/document.py:Repo:set"}, {"id": "{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]}"}, {"id": "metagpt/document.py:Repo:to_path"}, {"id": "{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}"}, {"id": "?:RepoMetadata"}, {"id": "metagpt/repo_parser.py:RepoFileInfo"}, {"id": "{\"name\":\"RepoFileInfo\",\"package\":\"metagpt/repo_parser.py:RepoFileInfo\",\"attributes\":{\"classes\":{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]},\"file\":{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]},\"functions\":{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]},\"globals\":{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]},\"page_info\":{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:classes"}, {"id": "{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:file"}, {"id": "{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:functions"}, {"id": "{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:globals"}, {"id": "{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoFileInfo:page_info"}, {"id": "{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata"}, {"id": "{\"name\":\"RepoMetadata\",\"package\":\"metagpt/document.py:RepoMetadata\",\"attributes\":{\"n_chars\":{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]},\"n_docs\":{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"symbols\":{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:n_chars"}, {"id": "{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:n_docs"}, {"id": "{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]}"}, {"id": "metagpt/document.py:RepoMetadata:name"}, {"id": "metagpt/document.py:RepoMetadata:symbols"}, {"id": "{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}"}, {"id": "metagpt/repo_parser.py:RepoParser"}, {"id": "{\"name\":\"RepoParser\",\"package\":\"metagpt/repo_parser.py:RepoParser\",\"attributes\":{\"base_directory\":{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"extract_class_and_function_info\":{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]},\"generate_dataframe_structure\":{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path)\",\"aggregations\":[]},\"generate_json_structure\":{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path)\",\"aggregations\":[]},\"generate_structure\":{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path, mode): Path\",\"aggregations\":[\"Path\"]},\"generate_symbols\":{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]},\"node_to_str\":{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]},\"rebuild_class_views\":{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"RepoFileInfo\",\"CodeBlockInfo\\\\\",\"str\\\\\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:base_directory"}, {"id": "{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info"}, {"id": "{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure"}, {"id": "{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path)\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_json_structure"}, {"id": "{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path)\",\"aggregations\":[]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_structure"}, {"id": "{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path, mode): Path\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:generate_symbols"}, {"id": "{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:node_to_str"}, {"id": "{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]}"}, {"id": "metagpt/repo_parser.py:RepoParser:rebuild_class_views"}, {"id": "{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "?:CodeBlockInfo\\"}, {"id": "metagpt/roles/researcher.py"}, {"id": "metagpt/roles/researcher.py:Report"}, {"id": "{\"name\":\"Report\",\"package\":\"metagpt/roles/researcher.py:Report\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"links\":{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]},\"summaries\":{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"tuple\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/researcher.py:Report:content"}, {"id": "metagpt/roles/researcher.py:Report:links"}, {"id": "{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]}"}, {"id": "metagpt/roles/researcher.py:Report:summaries"}, {"id": "{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]}"}, {"id": "metagpt/roles/researcher.py:Report:topic"}, {"id": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/researcher.py:Researcher"}, {"id": "{\"name\":\"Researcher\",\"package\":\"metagpt/roles/researcher.py:Researcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"research_system_text\":{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]},\"write_report\":{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Message\",\"Action\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:constraints"}, {"id": "metagpt/roles/researcher.py:Researcher:goal"}, {"id": "metagpt/roles/researcher.py:Researcher:language"}, {"id": "metagpt/roles/researcher.py:Researcher:name"}, {"id": "metagpt/roles/researcher.py:Researcher:profile"}, {"id": "metagpt/roles/researcher.py:Researcher:react"}, {"id": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:research_system_text"}, {"id": "{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/researcher.py:Researcher:write_report"}, {"id": "{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}"}, {"id": "?:Action"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories"}, {"id": "{\"name\":\"ResourceFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:ResourceFileRepositories\",\"attributes\":{\"api_spec_and_task\":{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"competitive_analysis\":{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]},\"data_api_design\":{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"sd_output\":{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]},\"seq_flow\":{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task"}, {"id": "{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis"}, {"id": "{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design"}, {"id": "{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output"}, {"id": "{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow"}, {"id": "{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]}"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"id": "{\"name\":\"ResultEmbedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"usage\":{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Embedding\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data"}, {"id": "{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_"}, {"id": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"id": "{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}"}, {"id": "?:Embedding"}, {"id": "metagpt/learn/skill_loader.py:Returns"}, {"id": "{\"name\":\"Returns\",\"package\":\"metagpt/learn/skill_loader.py:Returns\",\"attributes\":{\"format\":{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Returns:format"}, {"id": "{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Returns:type"}, {"id": "metagpt/actions/action_node.py:ReviewMode"}, {"id": "{\"name\":\"ReviewMode\",\"package\":\"metagpt/actions/action_node.py:ReviewMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ReviewMode:name"}, {"id": "metagpt/actions/action_node.py:ReviseMode"}, {"id": "{\"name\":\"ReviseMode\",\"package\":\"metagpt/actions/action_node.py:ReviseMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ReviseMode:name"}, {"id": "metagpt/roles/role.py"}, {"id": "metagpt/roles/role.py:Role"}, {"id": "{\"name\":\"Role\",\"package\":\"metagpt/roles/role.py:Role\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"actions\":{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]},\"addresses\":{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"is_human\":{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"latest_observed_msg\":{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"project_repo\":{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]},\"recovered\":{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"states\":{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]},\"check_addresses\":{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]},\"get_memories\":{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]},\"is_watch\":{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]},\"put_message\":{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]},\"pydantic_rebuild_model\":{\"name\":\"pydantic_rebuild_model\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pydantic_rebuild_model()\",\"aggregations\":[]},\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"set_action\":{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]},\"set_actions\":{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]},\"set_env\":{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]},\"set_todo\":{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}},\"compositions\":[\"Action\",\"SerializeAsAny\",\"Message\"],\"aggregations\":[\"ActionOutput\",\"Message\\\\\",\"Type\",\"Environment\"]}"}, {"id": "metagpt/roles/role.py:Role:action_description"}, {"id": "metagpt/roles/role.py:Role:actions"}, {"id": "{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]}"}, {"id": "metagpt/roles/role.py:Role:addresses"}, {"id": "{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:constraints"}, {"id": "metagpt/roles/role.py:Role:desc"}, {"id": "metagpt/roles/role.py:Role:git_repo"}, {"id": "metagpt/roles/role.py:Role:goal"}, {"id": "metagpt/roles/role.py:Role:is_human"}, {"id": "{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:is_idle"}, {"id": "metagpt/roles/role.py:Role:latest_observed_msg"}, {"id": "{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"id": "metagpt/roles/role.py:Role:llm"}, {"id": "metagpt/roles/role.py:Role:model_config"}, {"id": "metagpt/roles/role.py:Role:name"}, {"id": "metagpt/roles/role.py:Role:profile"}, {"id": "metagpt/roles/role.py:Role:project_name"}, {"id": "metagpt/roles/role.py:Role:project_path"}, {"id": "metagpt/roles/role.py:Role:project_repo"}, {"id": "{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:prompt_schema"}, {"id": "metagpt/roles/role.py:Role:rc"}, {"id": "{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:recovered"}, {"id": "{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:role_id"}, {"id": "{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:src_workspace"}, {"id": "metagpt/roles/role.py:Role:states"}, {"id": "{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:todo"}, {"id": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:Role:act"}, {"id": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]}"}, {"id": "metagpt/roles/role.py:Role:check_addresses"}, {"id": "{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:get_memories"}, {"id": "{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/role.py:Role:is_watch"}, {"id": "{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:publish_message"}, {"id": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:put_message"}, {"id": "{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:pydantic_rebuild_model"}, {"id": "{\"name\":\"pydantic_rebuild_model\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pydantic_rebuild_model()\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:react"}, {"id": "metagpt/roles/role.py:Role:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"id": "metagpt/roles/role.py:Role:set_action"}, {"id": "{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/role.py:Role:set_actions"}, {"id": "{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]}"}, {"id": "metagpt/roles/role.py:Role:set_addresses"}, {"id": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:Role:set_env"}, {"id": "{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]}"}, {"id": "metagpt/roles/role.py:Role:set_todo"}, {"id": "{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]}"}, {"id": "metagpt/roles/role.py:Role:think"}, {"id": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}"}, {"id": "?:Environment"}, {"id": "metagpt/roles/role.py:RoleContext"}, {"id": "{\"name\":\"RoleContext\",\"package\":\"metagpt/roles/role.py:RoleContext\",\"attributes\":{\"env\":{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]},\"important_memory\":{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]},\"max_react_loop\":{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_buffer\":{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]},\"news\":{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]},\"react_mode\":{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]},\"state\":{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]},\"watch\":{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}},\"methods\":{\"check\":{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check (role_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"Type\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:env"}, {"id": "{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:history"}, {"id": "{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:important_memory"}, {"id": "{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:max_react_loop"}, {"id": "{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:memory"}, {"id": "metagpt/roles/role.py:RoleContext:model_config"}, {"id": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"id": "{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:news"}, {"id": "{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]}"}, {"id": "metagpt/roles/role.py:RoleContext:react_mode"}, {"id": "{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:state"}, {"id": "{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:todo"}, {"id": "metagpt/roles/role.py:RoleContext:watch"}, {"id": "{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}"}, {"id": "metagpt/roles/role.py:RoleContext:check"}, {"id": "{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check (role_id: str)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleReactMode"}, {"id": "{\"name\":\"RoleReactMode\",\"package\":\"metagpt/roles/role.py:RoleReactMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"values\":{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/role.py:RoleReactMode:name"}, {"id": "metagpt/roles/role.py:RoleReactMode:values"}, {"id": "{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}"}, {"id": "metagpt/actions/run_code.py"}, {"id": "metagpt/actions/run_code.py:RunCode"}, {"id": "{\"name\":\"RunCode\",\"package\":\"metagpt/actions/run_code.py:RunCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]},\"run_script\":{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]},\"run_text\":{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"RunCodeResult\"]}"}, {"id": "metagpt/actions/run_code.py:RunCode:i_context"}, {"id": "metagpt/actions/run_code.py:RunCode:name"}, {"id": "metagpt/actions/run_code.py:RunCode:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]}"}, {"id": "metagpt/actions/run_code.py:RunCode:run_script"}, {"id": "{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/actions/run_code.py:RunCode:run_text"}, {"id": "{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}"}, {"id": "?:RunCodeResult"}, {"id": "metagpt/schema.py:RunCodeContext"}, {"id": "{\"name\":\"RunCodeContext\",\"package\":\"metagpt/schema.py:RunCodeContext\",\"attributes\":{\"additional_python_paths\":{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]},\"code\":{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]},\"code_filename\":{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]},\"command\":{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]},\"mode\":{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]},\"output\":{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]},\"output_filename\":{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]},\"test_code\":{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]},\"test_filename\":{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]},\"working_directory\":{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:additional_python_paths"}, {"id": "{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:code"}, {"id": "{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:code_filename"}, {"id": "{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:command"}, {"id": "{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:mode"}, {"id": "{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:output"}, {"id": "{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:output_filename"}, {"id": "{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:test_code"}, {"id": "{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:test_filename"}, {"id": "{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeContext:working_directory"}, {"id": "{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult"}, {"id": "{\"name\":\"RunCodeResult\",\"package\":\"metagpt/schema.py:RunCodeResult\",\"attributes\":{\"stderr\":{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]},\"stdout\":{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]},\"summary\":{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:stderr"}, {"id": "{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:stdout"}, {"id": "{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:RunCodeResult:summary"}, {"id": "{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/s3.py"}, {"id": "metagpt/utils/s3.py:S3"}, {"id": "{\"name\":\"S3\",\"package\":\"metagpt/utils/s3.py:S3\",\"attributes\":{\"auth_config\":{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"session\":{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}},\"methods\":{\"cache\":{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]},\"download_file\":{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]},\"get_object\":{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]},\"get_object_url\":{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]},\"upload_file\":{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}},\"compositions\":[\"Session\"],\"aggregations\":[\"bytes\"]}"}, {"id": "metagpt/utils/s3.py:S3:auth_config"}, {"id": "{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]}"}, {"id": "metagpt/utils/s3.py:S3:config"}, {"id": "metagpt/utils/s3.py:S3:session"}, {"id": "{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}"}, {"id": "metagpt/utils/s3.py:S3:cache"}, {"id": "{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:download_file"}, {"id": "{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:get_object"}, {"id": "{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]}"}, {"id": "metagpt/utils/s3.py:S3:get_object_url"}, {"id": "{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/s3.py:S3:upload_file"}, {"id": "{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}"}, {"id": "?:Session"}, {"id": "metagpt/configs/s3_config.py"}, {"id": "metagpt/configs/s3_config.py:S3Config"}, {"id": "{\"name\":\"S3Config\",\"package\":\"metagpt/configs/s3_config.py:S3Config\",\"attributes\":{\"access_key\":{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]},\"bucket\":{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]},\"endpoint\":{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]},\"secret_key\":{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:access_key"}, {"id": "{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:bucket"}, {"id": "{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:endpoint"}, {"id": "{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/s3_config.py:S3Config:secret_key"}, {"id": "{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO"}, {"id": "{\"name\":\"SPO\",\"package\":\"metagpt/utils/graph_repository.py:SPO\",\"attributes\":{\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"predicate\":{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]},\"subject\":{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO:object_"}, {"id": "metagpt/utils/graph_repository.py:SPO:predicate"}, {"id": "{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/graph_repository.py:SPO:subject"}, {"id": "{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase"}, {"id": "{\"name\":\"SQVUseCase\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:SQVUseCase\",\"attributes\":{\"actors\":{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"inputs\":{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]},\"outputs\":{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"steps\":{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:actors"}, {"id": "{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:description"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:inputs"}, {"id": "{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:outputs"}, {"id": "{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:reason"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:steps"}, {"id": "{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails"}, {"id": "{\"name\":\"SQVUseCaseDetails\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]},\"use_cases\":{\"name\":\"use_cases\",\"type_\":\"List[SQVUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[SQVUseCase]\",\"compositions\":[\"SQVUseCase\"]}},\"methods\":{},\"compositions\":[\"SQVUseCase\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:description"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:relationship"}, {"id": "{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:use_cases"}, {"id": "{\"name\":\"use_cases\",\"type_\":\"List[SQVUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[SQVUseCase]\",\"compositions\":[\"SQVUseCase\"]}"}, {"id": "?:SQVUseCase"}, {"id": "metagpt/roles/sales.py"}, {"id": "metagpt/roles/sales.py:Sales"}, {"id": "{\"name\":\"Sales\",\"package\":\"metagpt/roles/sales.py:Sales\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/sales.py:Sales:desc"}, {"id": "metagpt/roles/sales.py:Sales:name"}, {"id": "metagpt/roles/sales.py:Sales:profile"}, {"id": "metagpt/roles/sales.py:Sales:store"}, {"id": "metagpt/actions/search_and_summarize.py"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"id": "{\"name\":\"SearchAndSummarize\",\"package\":\"metagpt/actions/search_and_summarize.py:SearchAndSummarize\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]},\"search_func\":{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]},\"validate_engine_and_run_func\":{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}},\"compositions\":[\"SearchEngineType\",\"SearchEngine\"],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content"}, {"id": "{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine"}, {"id": "{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result"}, {"id": "{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"id": "{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func"}, {"id": "{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func"}, {"id": "{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}"}, {"id": "?:SearchEngineType"}, {"id": "?:SearchEngine"}, {"id": "metagpt/configs/search_config.py"}, {"id": "metagpt/configs/search_config.py:SearchConfig"}, {"id": "{\"name\":\"SearchConfig\",\"package\":\"metagpt/configs/search_config.py:SearchConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"cse_id\":{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/configs/search_config.py:SearchConfig:api_key"}, {"id": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"id": "metagpt/configs/search_config.py:SearchConfig:cse_id"}, {"id": "{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine.py"}, {"id": "metagpt/tools/search_engine.py:SearchEngine"}, {"id": "{\"name\":\"SearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SearchEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}},\"compositions\":[\"SearchEngineType\",\"Callable\",\"Coroutine\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:run_func"}, {"id": "{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}"}, {"id": "?:Coroutine"}, {"id": "metagpt/tools"}, {"id": "metagpt/tools:SearchEngineType"}, {"id": "{\"name\":\"SearchEngineType\",\"package\":\"metagpt/tools:SearchEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools:SearchEngineType:name"}, {"id": "metagpt/roles/searcher.py"}, {"id": "metagpt/roles/searcher.py:Searcher"}, {"id": "{\"name\":\"Searcher\",\"package\":\"metagpt/roles/searcher.py:Searcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"set_search_func\":{\"name\":\"set_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_func\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_search_func(search_func)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/searcher.py:Searcher:constraints"}, {"id": "metagpt/roles/searcher.py:Searcher:engine"}, {"id": "metagpt/roles/searcher.py:Searcher:goal"}, {"id": "metagpt/roles/searcher.py:Searcher:name"}, {"id": "metagpt/roles/searcher.py:Searcher:profile"}, {"id": "metagpt/roles/searcher.py:Searcher:set_search_func"}, {"id": "{\"name\":\"set_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_func\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_search_func(search_func)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper"}, {"id": "{\"name\":\"SeleniumWrapper\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"executable_path\":{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]},\"launch_args\":{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}},\"compositions\":[],\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type"}, {"id": "{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path"}, {"id": "{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args"}, {"id": "{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run"}, {"id": "metagpt/schema.py:SerializationMixin"}, {"id": "{\"name\":\"SerializationMixin\",\"package\":\"metagpt/schema.py:SerializationMixin\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper"}, {"id": "{\"name\":\"SerpAPIWrapper\",\"package\":\"metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"params\":{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]},\"serpapi_api_key\":{\"name\":\"serpapi_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serpapi_api_key : Optional[str]\",\"compositions\":[]}},\"methods\":{\"check_serpapi_api_key\":{\"name\":\"check_serpapi_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serpapi_api_key(val: str)\",\"aggregations\":[]},\"get_params\":{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession"}, {"id": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params"}, {"id": "{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine"}, {"id": "{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key"}, {"id": "{\"name\":\"serpapi_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serpapi_api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key"}, {"id": "{\"name\":\"check_serpapi_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serpapi_api_key(val: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params"}, {"id": "{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results"}, {"id": "{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"id": "?:aiohttp.ClientSession"}, {"id": "metagpt/tools/search_engine_serper.py"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper"}, {"id": "{\"name\":\"SerperWrapper\",\"package\":\"metagpt/tools/search_engine_serper.py:SerperWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"payload\":{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]},\"serper_api_key\":{\"name\":\"serper_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serper_api_key : Optional[str]\",\"compositions\":[]}},\"methods\":{\"check_serper_api_key\":{\"name\":\"check_serper_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serper_api_key(val: str)\",\"aggregations\":[]},\"get_headers\":{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]},\"get_payloads\":{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload"}, {"id": "{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key"}, {"id": "{\"name\":\"serper_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serper_api_key : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key"}, {"id": "{\"name\":\"check_serper_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serper_api_key(val: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers"}, {"id": "{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads"}, {"id": "{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:results"}, {"id": "{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SimpleMessage"}, {"id": "{\"name\":\"SimpleMessage\",\"package\":\"metagpt/schema.py:SimpleMessage\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SimpleMessage:content"}, {"id": "metagpt/schema.py:SimpleMessage:role"}, {"id": "metagpt/utils/singleton.py"}, {"id": "metagpt/utils/singleton.py:Singleton"}, {"id": "{\"name\":\"Singleton\",\"package\":\"metagpt/utils/singleton.py:Singleton\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/sk_agent.py"}, {"id": "metagpt/roles/sk_agent.py:SkAgent"}, {"id": "{\"name\":\"SkAgent\",\"package\":\"metagpt/roles/sk_agent.py:SkAgent\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"import_semantic_skill_from_directory\":{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]},\"import_skill\":{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]},\"kernel\":{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"plan\":{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]},\"planner\":{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]},\"planner_cls\":{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Callable\",\"Kernel\",\"Plan\",\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"],\"aggregations\":[]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:constraints"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:goal"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory"}, {"id": "{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:import_skill"}, {"id": "{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:kernel"}, {"id": "{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:name"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:plan"}, {"id": "{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:planner"}, {"id": "{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:planner_cls"}, {"id": "{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:profile"}, {"id": "?:Kernel"}, {"id": "?:Plan"}, {"id": "?:ActionPlanner"}, {"id": "?:BasicPlanner"}, {"id": "?:SequentialPlanner"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"id": "{\"name\":\"SkSearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SkSearchEngine\",\"attributes\":{\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill"}, {"id": "{\"name\":\"Skill\",\"package\":\"metagpt/learn/skill_loader.py:Skill\",\"attributes\":{\"arguments\":{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"examples\":{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]},\"id\":{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]},\"returns\":{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]},\"x_prerequisite\":{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Example\",\"Parameter\"],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:arguments"}, {"id": "{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:description"}, {"id": "metagpt/learn/skill_loader.py:Skill:examples"}, {"id": "{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:id"}, {"id": "{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:name"}, {"id": "metagpt/learn/skill_loader.py:Skill:parameters"}, {"id": "{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:returns"}, {"id": "{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:Skill:x_prerequisite"}, {"id": "{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}"}, {"id": "?:Example"}, {"id": "?:Parameter"}, {"id": "metagpt/actions/skill_action.py:SkillAction"}, {"id": "{\"name\":\"SkillAction\",\"package\":\"metagpt/actions/skill_action.py:SkillAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"find_and_call_function\":{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:args"}, {"id": "{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"id": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"id": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function"}, {"id": "{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/skill_action.py:SkillAction:run"}, {"id": "metagpt/management/skill_manager.py"}, {"id": "metagpt/management/skill_manager.py:SkillManager"}, {"id": "{\"name\":\"SkillManager\",\"package\":\"metagpt/management/skill_manager.py:SkillManager\",\"attributes\":{},\"methods\":{\"add_skill\":{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]},\"del_skill\":{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]},\"generate_skill_desc\":{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]},\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"retrieve_skill\":{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]},\"retrieve_skill_scored\":{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:add_skill"}, {"id": "{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:del_skill"}, {"id": "{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc"}, {"id": "{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:get_skill"}, {"id": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill"}, {"id": "{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored"}, {"id": "{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"id": "{\"name\":\"SkillsDeclaration\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration\",\"attributes\":{\"components\":{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]},\"entities\":{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]},\"skillapi\":{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}},\"methods\":{\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"get_skill_list\":{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}},\"compositions\":[\"Components\",\"Entity\"],\"aggregations\":[\"Skill\",\"Context\",\"SkillsDeclaration\",\"Path\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:components"}, {"id": "{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities"}, {"id": "{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi"}, {"id": "{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill"}, {"id": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list"}, {"id": "{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:load"}, {"id": "{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}"}, {"id": "?:Components"}, {"id": "?:Entity"}, {"id": "metagpt/provider/spark_api.py:SparkLLM"}, {"id": "{\"name\":\"SparkLLM\",\"package\":\"metagpt/provider/spark_api.py:SparkLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:acompletion"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text"}, {"id": "metagpt/strategy/tot_schema.py:Strategy"}, {"id": "{\"name\":\"Strategy\",\"package\":\"metagpt/strategy/tot_schema.py:Strategy\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:Strategy:name"}, {"id": "metagpt/subscription.py"}, {"id": "metagpt/subscription.py:SubscriptionRunner"}, {"id": "{\"name\":\"SubscriptionRunner\",\"package\":\"metagpt/subscription.py:SubscriptionRunner\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"tasks\":{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]},\"subscribe\":{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Awaitable\",\"Message\",\"Role\",\"Callable\",\"AsyncGenerator\"]},\"unsubscribe\":{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}},\"compositions\":[\"Role\",\"asyncio.Task\"],\"aggregations\":[\"Awaitable\",\"Message\",\"Callable\",\"AsyncGenerator\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:model_config"}, {"id": "metagpt/subscription.py:SubscriptionRunner:tasks"}, {"id": "{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:subscribe"}, {"id": "{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Awaitable\",\"Message\",\"Role\",\"Callable\",\"AsyncGenerator\"]}"}, {"id": "metagpt/subscription.py:SubscriptionRunner:unsubscribe"}, {"id": "{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"id": "?:asyncio.Task"}, {"id": "?:Awaitable"}, {"id": "metagpt/actions/summarize_code.py"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"id": "{\"name\":\"SummarizeCode\",\"package\":\"metagpt/actions/summarize_code.py:SummarizeCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"summarize_code\":{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:name"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:run"}, {"id": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code"}, {"id": "{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:SystemMessage"}, {"id": "{\"name\":\"SystemMessage\",\"package\":\"metagpt/schema.py:SystemMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/talk_action.py"}, {"id": "metagpt/actions/talk_action.py:TalkAction"}, {"id": "{\"name\":\"TalkAction\",\"package\":\"metagpt/actions/talk_action.py:TalkAction\",\"attributes\":{\"aask_args\":{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]},\"agent_description\":{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]},\"history_summary\":{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"prompt_gpt4\":{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:aask_args"}, {"id": "{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:agent_description"}, {"id": "{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:history_summary"}, {"id": "{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:knowledge"}, {"id": "{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:language"}, {"id": "{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:prompt"}, {"id": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4"}, {"id": "{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"id": "metagpt/actions/talk_action.py:TalkAction:run"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt"}, {"id": "{\"name\":\"TalkActionPrompt\",\"package\":\"metagpt/actions/talk_action.py:TalkActionPrompt\",\"attributes\":{\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"FORMATION_LOOSE\":{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION"}, {"id": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE"}, {"id": "{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:Task"}, {"id": "{\"name\":\"Task\",\"package\":\"metagpt/actions/action_node.py:Task\",\"attributes\":{\"dependent_task_ids\":{\"name\":\"dependent_task_ids\",\"type_\":\"List[int]\",\"default_\":\"\",\"description\":\"dependent_task_ids : List[int]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"task_id\":{\"name\":\"task_id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"task_id : int\",\"compositions\":[]},\"tool\":{\"name\":\"tool\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:Task:dependent_task_ids"}, {"id": "{\"name\":\"dependent_task_ids\",\"type_\":\"List[int]\",\"default_\":\"\",\"description\":\"dependent_task_ids : List[int]\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:Task:name"}, {"id": "metagpt/actions/action_node.py:Task:task_id"}, {"id": "{\"name\":\"task_id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"task_id : int\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:Task:tool"}, {"id": "{\"name\":\"tool\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool\",\"compositions\":[]}"}, {"id": "metagpt/actions/action_node.py:Tasks"}, {"id": "{\"name\":\"Tasks\",\"package\":\"metagpt/actions/action_node.py:Tasks\",\"attributes\":{\"tasks\":{\"name\":\"tasks\",\"type_\":\"List[Task]\",\"default_\":\"\",\"description\":\"tasks : List[Task]\",\"compositions\":[\"Task\"]}},\"methods\":{},\"compositions\":[\"Task\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:Tasks:tasks"}, {"id": "{\"name\":\"tasks\",\"type_\":\"List[Task]\",\"default_\":\"\",\"description\":\"tasks : List[Task]\",\"compositions\":[\"Task\"]}"}, {"id": "?:Task"}, {"id": "metagpt/roles/teacher.py"}, {"id": "metagpt/roles/teacher.py:Teacher"}, {"id": "{\"name\":\"Teacher\",\"package\":\"metagpt/roles/teacher.py:Teacher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"course_title\":{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"new_file_name\":{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:constraints"}, {"id": "metagpt/roles/teacher.py:Teacher:course_title"}, {"id": "{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:desc"}, {"id": "metagpt/roles/teacher.py:Teacher:goal"}, {"id": "metagpt/roles/teacher.py:Teacher:name"}, {"id": "metagpt/roles/teacher.py:Teacher:profile"}, {"id": "metagpt/roles/teacher.py:Teacher:new_file_name"}, {"id": "{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]}"}, {"id": "metagpt/roles/teacher.py:Teacher:save"}, {"id": "{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock"}, {"id": "{\"name\":\"TeachingPlanBlock\",\"package\":\"metagpt/actions/write_teaching_plan.py:TeachingPlanBlock\",\"attributes\":{\"COURSE_TITLE\":{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]},\"DATA_BEGIN_TAG\":{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]},\"DATA_END_TAG\":{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]},\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"PROMPT_TEMPLATE\":{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]},\"PROMPT_TITLE_TEMPLATE\":{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]},\"TOPICS\":{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]},\"TOPIC_STATEMENTS\":{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE"}, {"id": "{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG"}, {"id": "{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG"}, {"id": "{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE"}, {"id": "{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE"}, {"id": "{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS"}, {"id": "{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS"}, {"id": "{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}"}, {"id": "metagpt/team.py"}, {"id": "metagpt/team.py:Team"}, {"id": "{\"name\":\"Team\",\"package\":\"metagpt/team.py:Team\",\"attributes\":{\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"env\":{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]},\"idea\":{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]},\"investment\":{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"deserialize\":{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]},\"hire\":{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]},\"invest\":{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]},\"run_project\":{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]},\"serialize\":{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]},\"start_project\":{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}},\"compositions\":[\"Environment\"],\"aggregations\":[\"Team\",\"Context\",\"Path\",\"Role\"]}"}, {"id": "metagpt/team.py:Team:cost_manager"}, {"id": "metagpt/team.py:Team:env"}, {"id": "{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]}"}, {"id": "metagpt/team.py:Team:idea"}, {"id": "{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]}"}, {"id": "metagpt/team.py:Team:investment"}, {"id": "{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]}"}, {"id": "metagpt/team.py:Team:model_config"}, {"id": "metagpt/team.py:Team:deserialize"}, {"id": "{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]}"}, {"id": "metagpt/team.py:Team:hire"}, {"id": "{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]}"}, {"id": "metagpt/team.py:Team:invest"}, {"id": "{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:run_project"}, {"id": "{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"id": "metagpt/team.py:Team:serialize"}, {"id": "{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/team.py:Team:start_project"}, {"id": "{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"id": "?:Team"}, {"id": "metagpt/schema.py:TestingContext"}, {"id": "{\"name\":\"TestingContext\",\"package\":\"metagpt/schema.py:TestingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"test_doc\":{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:TestingContext:code_doc"}, {"id": "{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:TestingContext:filename"}, {"id": "metagpt/schema.py:TestingContext:test_doc"}, {"id": "{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode"}, {"id": "{\"name\":\"ThoughtNode\",\"package\":\"metagpt/strategy/base.py:ThoughtNode\",\"attributes\":{\"id\":{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"valid_status\":{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]},\"value\":{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}},\"methods\":{\"update_valid_status\":{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]},\"update_value\":{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:id"}, {"id": "{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:name"}, {"id": "metagpt/strategy/base.py:ThoughtNode:valid_status"}, {"id": "{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:value"}, {"id": "{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:update_valid_status"}, {"id": "{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtNode:update_value"}, {"id": "{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"id": "{\"name\":\"ThoughtSolverBase\",\"package\":\"metagpt/strategy/tot.py:ThoughtSolverBase\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}},\"methods\":{\"evaluate_node\":{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]},\"generate_thoughts\":{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"select_nodes\":{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]},\"update_solution\":{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}},\"compositions\":[\"ThoughtTree\"],\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree"}, {"id": "{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node"}, {"id": "{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts"}, {"id": "{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes"}, {"id": "{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:solve"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution"}, {"id": "{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}"}, {"id": "?:ThoughtTree"}, {"id": "?:ThoughtNode"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"id": "{\"name\":\"ThoughtSolverConfig\",\"package\":\"metagpt/strategy/tot_schema.py:ThoughtSolverConfig\",\"attributes\":{\"evaluator\":{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]},\"max_steps\":{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]},\"method_select\":{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]},\"n_generate_sample\":{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]},\"n_select_sample\":{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]},\"n_solution_sample\":{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]},\"parser\":{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"id": "{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps"}, {"id": "{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select"}, {"id": "{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample"}, {"id": "{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample"}, {"id": "{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample"}, {"id": "{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"id": "{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree"}, {"id": "{\"name\":\"ThoughtTree\",\"package\":\"metagpt/strategy/base.py:ThoughtTree\",\"attributes\":{\"all_nodes\":{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}},\"methods\":{\"parse_node_path\":{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]},\"show\":{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]},\"update_node\":{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}},\"compositions\":[],\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:all_nodes"}, {"id": "{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:parse_node_path"}, {"id": "{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:show"}, {"id": "{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/base.py:ThoughtTree:update_node"}, {"id": "{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager"}, {"id": "{\"name\":\"TokenCostManager\",\"package\":\"metagpt/utils/cost_manager.py:TokenCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}},\"methods\":{\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens"}, {"id": "{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens"}, {"id": "{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}"}, {"id": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost"}, {"id": "metagpt/actions/action_node.py:ToolUse"}, {"id": "{\"name\":\"ToolUse\",\"package\":\"metagpt/actions/action_node.py:ToolUse\",\"attributes\":{\"tool_name\":{\"name\":\"tool_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tool_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/action_node.py:ToolUse:tool_name"}, {"id": "{\"name\":\"tool_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tool_name : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/translator.py"}, {"id": "metagpt/tools/translator.py:Translator"}, {"id": "{\"name\":\"Translator\",\"package\":\"metagpt/tools/translator.py:Translator\",\"attributes\":{},\"methods\":{\"translate_prompt\":{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/translator.py:Translator:translate_prompt"}, {"id": "{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought"}, {"id": "{\"name\":\"TreeofThought\",\"package\":\"metagpt/strategy/tot.py:TreeofThought\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"solver\":{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]},\"strategy\":{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:config"}, {"id": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"id": "{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"id": "{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}"}, {"id": "metagpt/strategy/tot.py:TreeofThought:solve"}, {"id": "metagpt/roles/tutorial_assistant.py"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant"}, {"id": "{\"name\":\"TutorialAssistant\",\"package\":\"metagpt/roles/tutorial_assistant.py:TutorialAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"main_title\":{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]},\"total_content\":{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title"}, {"id": "{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content"}, {"id": "{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react"}, {"id": "metagpt/schema.py:UMLClassAttribute"}, {"id": "{\"name\":\"UMLClassAttribute\",\"package\":\"metagpt/schema.py:UMLClassAttribute\",\"attributes\":{\"default_value\":{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]},\"value_type\":{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:default_value"}, {"id": "{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:value_type"}, {"id": "{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassAttribute:get_mermaid"}, {"id": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta"}, {"id": "{\"name\":\"UMLClassMeta\",\"package\":\"metagpt/schema.py:UMLClassMeta\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"visibility\":{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}},\"methods\":{\"name_to_visibility\":{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta:name"}, {"id": "metagpt/schema.py:UMLClassMeta:visibility"}, {"id": "{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassMeta:name_to_visibility"}, {"id": "{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod"}, {"id": "{\"name\":\"UMLClassMethod\",\"package\":\"metagpt/schema.py:UMLClassMethod\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"return_type\":{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[\"UMLClassAttribute\"],\"aggregations\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod:args"}, {"id": "{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"id": "metagpt/schema.py:UMLClassMethod:return_type"}, {"id": "{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UMLClassMethod:get_mermaid"}, {"id": "?:UMLClassAttribute"}, {"id": "metagpt/schema.py:UMLClassView"}, {"id": "{\"name\":\"UMLClassView\",\"package\":\"metagpt/schema.py:UMLClassView\",\"attributes\":{\"attributes\":{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"methods\":{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]},\"load_dot_class_info\":{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}},\"compositions\":[\"UMLClassAttribute\",\"UMLClassMethod\"],\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"id": "metagpt/schema.py:UMLClassView:attributes"}, {"id": "{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"id": "metagpt/schema.py:UMLClassView:methods"}, {"id": "{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}"}, {"id": "metagpt/schema.py:UMLClassView:get_mermaid"}, {"id": "metagpt/schema.py:UMLClassView:load_dot_class_info"}, {"id": "{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"id": "?:UMLClassMethod"}, {"id": "?:UMLClassView"}, {"id": "metagpt/tools/ut_writer.py"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator"}, {"id": "{\"name\":\"UTGenerator\",\"package\":\"metagpt/tools/ut_writer.py:UTGenerator\",\"attributes\":{\"chatgpt_method\":{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]},\"icl_sample\":{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]},\"questions_path\":{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]},\"swagger_file\":{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]},\"template_prefix\":{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]},\"ut_py_path\":{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}},\"methods\":{\"ask_gpt_and_save\":{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]},\"build_api_doc\":{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]},\"build_object_properties\":{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]},\"generate_ut\":{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]},\"get_swagger_json\":{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]},\"get_tags_mapping\":{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]},\"gpt_msgs_to_code\":{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]},\"para_to_str\":{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method"}, {"id": "{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample"}, {"id": "{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:questions_path"}, {"id": "{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file"}, {"id": "{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix"}, {"id": "{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path"}, {"id": "{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save"}, {"id": "{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc"}, {"id": "{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties"}, {"id": "{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut"}, {"id": "{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json"}, {"id": "{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping"}, {"id": "{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code"}, {"id": "{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str"}, {"id": "{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage"}, {"id": "{\"name\":\"Usage\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Usage\",\"attributes\":{\"prompt_tokens\":{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]},\"total_tokens\":{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens"}, {"id": "{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens"}, {"id": "{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}"}, {"id": "metagpt/schema.py:UserMessage"}, {"id": "{\"name\":\"UserMessage\",\"package\":\"metagpt/schema.py:UserMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/add_requirement.py"}, {"id": "metagpt/actions/add_requirement.py:UserRequirement"}, {"id": "{\"name\":\"UserRequirement\",\"package\":\"metagpt/actions/add_requirement.py:UserRequirement\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo"}, {"id": "{\"name\":\"VisualDiGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo\",\"attributes\":{},\"methods\":{\"get_mermaid_class_view\":{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]},\"get_mermaid_sequence_views\":{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view"}, {"id": "{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views"}, {"id": "{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from"}, {"id": "{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"id": "{\"name\":\"VisualGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualGraphRepo\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"id": "{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient"}, {"id": "{\"name\":\"WDMHttpProxyClient\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient\",\"attributes\":{},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get"}, {"id": "{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"id": "{\"name\":\"WebBrowseAndSummarize\",\"package\":\"metagpt/actions/research.py:WebBrowseAndSummarize\",\"attributes\":{\"browse_func\":{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"web_browser_engine\":{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"WebBrowserEngine\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func"}, {"id": "{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:desc"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:name"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"id": "{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}"}, {"id": "?:WebBrowserEngine"}, {"id": "metagpt/tools/web_browser_engine.py"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"id": "{\"name\":\"WebBrowserEngine\",\"package\":\"metagpt/tools/web_browser_engine.py:WebBrowserEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_\":\"\",\"description\":\"run_func : Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}},\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"],\"aggregations\":[]}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func"}, {"id": "{\"name\":\"run_func\",\"type_\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_\":\"\",\"description\":\"run_func : Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"]}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}"}, {"id": "metagpt/tools:WebBrowserEngineType"}, {"id": "{\"name\":\"WebBrowserEngineType\",\"package\":\"metagpt/tools:WebBrowserEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools:WebBrowserEngineType:name"}, {"id": "metagpt/utils/parse_html.py"}, {"id": "metagpt/utils/parse_html.py:WebPage"}, {"id": "{\"name\":\"WebPage\",\"package\":\"metagpt/utils/parse_html.py:WebPage\",\"attributes\":{\"html\":{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]},\"inner_text\":{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]},\"soup\":{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]},\"title\":{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{\"get_links\":{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}},\"compositions\":[],\"aggregations\":[\"Generator\"]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:html"}, {"id": "{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:inner_text"}, {"id": "{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:soup"}, {"id": "{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:title"}, {"id": "{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]}"}, {"id": "metagpt/utils/parse_html.py:WebPage:url"}, {"id": "metagpt/utils/parse_html.py:WebPage:get_links"}, {"id": "{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}"}, {"id": "?:Generator"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate"}, {"id": "{\"name\":\"WikiHowTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:WikiHowTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen"}, {"id": "{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig"}, {"id": "{\"name\":\"WorkspaceConfig\",\"package\":\"metagpt/configs/workspace_config.py:WorkspaceConfig\",\"attributes\":{\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"uid\":{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]},\"use_uid\":{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}},\"methods\":{\"check_uid_and_update_path\":{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]},\"check_workspace_path\":{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:path"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid"}, {"id": "{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid"}, {"id": "{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path"}, {"id": "{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]}"}, {"id": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path"}, {"id": "{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code.py"}, {"id": "metagpt/actions/write_code.py:WriteCode"}, {"id": "{\"name\":\"WriteCode\",\"package\":\"metagpt/actions/write_code.py:WriteCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_codes\":{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"ProjectRepo\",\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"ProjectRepo\",\"Document\",\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"id": "metagpt/actions/write_code.py:WriteCode:name"}, {"id": "metagpt/actions/write_code.py:WriteCode:get_codes"}, {"id": "{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"ProjectRepo\",\"Document\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code.py:WriteCode:write_code"}, {"id": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_an_draft.py"}, {"id": "metagpt/actions/write_code_an_draft.py:WriteCodeAN"}, {"id": "{\"name\":\"WriteCodeAN\",\"package\":\"metagpt/actions/write_code_an_draft.py:WriteCodeAN\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"id": "{\"name\":\"WriteCodePlanAndChange\",\"package\":\"metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_old_codes\":{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes"}, {"id": "{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run"}, {"id": "metagpt/actions/write_code_review.py"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"id": "{\"name\":\"WriteCodeReview\",\"package\":\"metagpt/actions/write_code_review.py:WriteCodeReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code_review_and_rewrite\":{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"CodingContext\"]}"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:name"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:run"}, {"id": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite"}, {"id": "{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent"}, {"id": "{\"name\":\"WriteContent\",\"package\":\"metagpt/actions/write_tutorial.py:WriteContent\",\"attributes\":{\"directory\":{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:directory"}, {"id": "{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:language"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:name"}, {"id": "metagpt/actions/write_tutorial.py:WriteContent:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/design_api.py"}, {"id": "metagpt/actions/design_api.py:WriteDesign"}, {"id": "{\"name\":\"WriteDesign\",\"package\":\"metagpt/actions/design_api.py:WriteDesign\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/design_api.py:WriteDesign:desc"}, {"id": "metagpt/actions/design_api.py:WriteDesign:i_context"}, {"id": "metagpt/actions/design_api.py:WriteDesign:name"}, {"id": "metagpt/actions/design_api.py:WriteDesign:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory"}, {"id": "{\"name\":\"WriteDirectory\",\"package\":\"metagpt/actions/write_tutorial.py:WriteDirectory\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:language"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:name"}, {"id": "metagpt/actions/write_tutorial.py:WriteDirectory:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_docstring.py"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring"}, {"id": "{\"name\":\"WriteDocstring\",\"package\":\"metagpt/actions/write_docstring.py:WriteDocstring\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]},\"write_docstring\":{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:desc"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:i_context"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring"}, {"id": "{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"id": "metagpt/actions/write_prd.py"}, {"id": "metagpt/actions/write_prd.py:WritePRD"}, {"id": "{\"name\":\"WritePRD\",\"package\":\"metagpt/actions/write_prd.py:WritePRD\",\"attributes\":{\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}},\"methods\":{\"get_related_docs\":{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Document\",\"Message\",\"ActionOutput\\\\\"]}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:project_name"}, {"id": "metagpt/actions/write_prd.py:WritePRD:get_related_docs"}, {"id": "{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}"}, {"id": "?:ActionOutput\\"}, {"id": "metagpt/actions/write_prd_review.py"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview"}, {"id": "{\"name\":\"WritePRDReview\",\"package\":\"metagpt/actions/write_prd_review.py:WritePRDReview\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]},\"prd_review_prompt_template\":{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:desc"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:name"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:prd"}, {"id": "{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template"}, {"id": "{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_prd_review.py:WritePRDReview:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_review.py"}, {"id": "metagpt/actions/write_review.py:WriteReview"}, {"id": "{\"name\":\"WriteReview\",\"package\":\"metagpt/actions/write_review.py:WriteReview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_review.py:WriteReview:name"}, {"id": "metagpt/actions/write_review.py:WriteReview:run"}, {"id": "metagpt/actions/project_management.py"}, {"id": "metagpt/actions/project_management.py:WriteTasks"}, {"id": "{\"name\":\"WriteTasks\",\"package\":\"metagpt/actions/project_management.py:WriteTasks\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/actions/project_management.py:WriteTasks:i_context"}, {"id": "metagpt/actions/project_management.py:WriteTasks:name"}, {"id": "metagpt/actions/project_management.py:WriteTasks:run"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart"}, {"id": "{\"name\":\"WriteTeachingPlanPart\",\"package\":\"metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{\"format_value\":{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp"}, {"id": "{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value"}, {"id": "{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run"}, {"id": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}"}, {"id": "metagpt/actions/write_test.py"}, {"id": "metagpt/actions/write_test.py:WriteTest"}, {"id": "{\"name\":\"WriteTest\",\"package\":\"metagpt/actions/write_test.py:WriteTest\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}},\"compositions\":[\"TestingContext\"],\"aggregations\":[]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:i_context"}, {"id": "{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:name"}, {"id": "metagpt/actions/write_test.py:WriteTest:run"}, {"id": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]}"}, {"id": "metagpt/actions/write_test.py:WriteTest:write_code"}, {"id": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam"}, {"id": "{\"name\":\"WsParam\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}},\"methods\":{\"create_url\":{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key"}, {"id": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret"}, {"id": "{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id"}, {"id": "{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host"}, {"id": "{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message"}, {"id": "{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path"}, {"id": "{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url"}, {"id": "{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}"}, {"id": "metagpt/utils/yaml_model.py"}, {"id": "metagpt/utils/yaml_model.py:YamlModel"}, {"id": "{\"name\":\"YamlModel\",\"package\":\"metagpt/utils/yaml_model.py:YamlModel\",\"attributes\":{\"extra_fields\":{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}},\"methods\":{\"from_yaml_file\":{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]},\"read_yaml\":{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]},\"to_yaml_file\":{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:extra_fields"}, {"id": "{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file"}, {"id": "{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:read_yaml"}, {"id": "{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file"}, {"id": "{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}"}, {"id": "?:YamlModel"}, {"id": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"id": "{\"name\":\"YamlModelWithoutDefault\",\"package\":\"metagpt/utils/yaml_model.py:YamlModelWithoutDefault\",\"attributes\":{},\"methods\":{\"check_not_default_config\":{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config"}, {"id": "{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"id": "{\"name\":\"ZhiPuAILLM\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuAILLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion"}, {"id": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuEvent"}, {"id": "{\"name\":\"ZhiPuEvent\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuEvent\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI"}, {"id": "{\"name\":\"ZhiPuModelAPI\",\"package\":\"metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI\",\"attributes\":{},\"methods\":{\"acreate\":{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]},\"acreate_stream\":{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]},\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]},\"split_zhipu_api_url\":{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"AsyncSSEClient\"]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate"}, {"id": "{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream"}, {"id": "{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest"}, {"id": "{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url"}, {"id": "{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}"}, {"id": "?:AsyncSSEClient"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill"}, {"id": "{\"name\":\"_AgentSkill\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"id": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView"}, {"id": "{\"name\":\"_VisualClassView\",\"package\":\"metagpt/utils/visual_graph_repo.py:_VisualClassView\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"generalizations\":{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]},\"uml\":{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_mermaid(align: int)\",\"aggregations\":[]}},\"compositions\":[\"UMLClassView\"],\"aggregations\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations"}, {"id": "{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package"}, {"id": "{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml"}, {"id": "{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}"}, {"id": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid"}, {"id": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_mermaid(align: int)\",\"aggregations\":[]}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:_store"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_cost_manager"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_cost_manager"}, {"id": "metagpt/utils/git_repository.py:GitRepository:_dependency"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:_git_repo"}, {"id": "metagpt/repo_parser.py:DotClassAttribute:_split_literal"}, {"id": "metagpt/repo_parser.py:DotClassMethod:_parse_name"}, {"id": "metagpt/repo_parser.py:DotClassMethod:_parse_args"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_file"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_expr"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_name"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_if"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_if_compare"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_variable"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_assign"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_classes"}, {"id": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships"}, {"id": "metagpt/repo_parser.py:RepoParser:_split_class_line"}, {"id": "metagpt/repo_parser.py:RepoParser:_split_relationship_line"}, {"id": "metagpt/repo_parser.py:RepoParser:_get_label"}, {"id": "metagpt/repo_parser.py:RepoParser:_create_path_mapping"}, {"id": "metagpt/repo_parser.py:RepoParser:_repair_namespaces"}, {"id": "metagpt/repo_parser.py:RepoParser:_repair_ns"}, {"id": "metagpt/repo_parser.py:RepoParser:_find_root"}, {"id": "metagpt/repo_parser.py:is_func"}, {"id": "function"}, {"id": "metagpt/repo_parser.py:ast.Constant:\n@Time : 2023/11/17 17:58\n@Author : alexanderwu\n@File : repo_parser.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/17 17:58\\n@Author : alexanderwu\\n@File : repo_parser.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:__future__"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/repo_parser.py:names:['annotations']"}, {"id": "metagpt/repo_parser.py:ast"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:json"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:re"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:subprocess"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:pathlib"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/repo_parser.py:names:['Path']"}, {"id": "metagpt/repo_parser.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/repo_parser.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/repo_parser.py:pandas as pd"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/repo_parser.py:module:pydantic"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/repo_parser.py:names:['BaseModel', 'Field', 'field_validator']"}, {"id": "metagpt/repo_parser.py:module:metagpt.const"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"id": "metagpt/repo_parser.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']"}, {"id": "metagpt/repo_parser.py:module:metagpt.logs"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/repo_parser.py:names:['logger']"}, {"id": "metagpt/repo_parser.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"id": "metagpt/repo_parser.py:names:['any_to_str', 'aread']"}, {"id": "metagpt/repo_parser.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/repo_parser.py:names:['handle_exception']"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoFileInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeBlockInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":157,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassAttribute\"],\"properties\":{}}"}, {"id": "{\"lineno\":160,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassInfo\"],\"properties\":{}}"}, {"id": "{\"lineno\":175,\"end_lineno\":179,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassRelationship\"],\"properties\":{}}"}, {"id": "{\"lineno\":182,\"end_lineno\":199,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotReturn\"],\"properties\":{}}"}, {"id": "{\"lineno\":202,\"end_lineno\":264,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassMethod\"],\"properties\":{}}"}, {"id": "{\"lineno\":267,\"end_lineno\":634,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":637,\"end_lineno\":638,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_func\"],\"properties\":{}}"}, {"id": "metagpt/startup.py"}, {"id": "metagpt/startup.py:generate_repo"}, {"id": "metagpt/startup.py:startup"}, {"id": "metagpt/startup.py:copy_config_to"}, {"id": "metagpt/startup.py:app"}, {"id": "global_variable"}, {"id": "metagpt/startup.py:asyncio"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:shutil"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:module:pathlib"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/startup.py:names:['Path']"}, {"id": "metagpt/startup.py:typer"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"typer\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:module:metagpt.config2"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/startup.py:names:['config']"}, {"id": "metagpt/startup.py:module:metagpt.const"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/startup.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']"}, {"id": "metagpt/startup.py:module:metagpt.context"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/startup.py:names:['Context']"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"app\"],\"properties\":{}}"}, {"id": "{\"lineno\":16,\"end_lineno\":68,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_repo\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"startup\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":136,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"copy_config_to\"],\"properties\":{}}"}, {"id": "metagpt/startup.py:__name__:__main__"}, {"id": "{\"lineno\":139,\"end_lineno\":140,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/subscription.py:asyncio"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/subscription.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"id": "metagpt/subscription.py:names:['AsyncGenerator', 'Awaitable', 'Callable']"}, {"id": "metagpt/subscription.py:module:pydantic"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/subscription.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/subscription.py:module:metagpt.logs"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/subscription.py:names:['logger']"}, {"id": "metagpt/subscription.py:module:metagpt.roles"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/subscription.py:names:['Role']"}, {"id": "metagpt/subscription.py:module:metagpt.schema"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/subscription.py:names:['Message']"}, {"id": "{\"lineno\":11,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubscriptionRunner\"],\"properties\":{}}"}, {"id": "metagpt/__init__.py"}, {"id": "metagpt/__init__.py:module:metagpt"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"id": "metagpt/__init__.py:names:['_compat as _']"}, {"id": "metagpt/llm.py"}, {"id": "metagpt/llm.py:LLM"}, {"id": "metagpt/llm.py:ast.Constant:\n@Time : 2023/5/11 14:45\n@Author : alexanderwu\n@File : llm.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:45\\n@Author : alexanderwu\\n@File : llm.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/llm.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/llm.py:names:['Optional']"}, {"id": "metagpt/llm.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/llm.py:names:['LLMConfig']"}, {"id": "metagpt/llm.py:module:metagpt.context"}, {"id": "metagpt/llm.py:names:['Context']"}, {"id": "metagpt/llm.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/llm.py:names:['BaseLLM']"}, {"id": "{\"lineno\":15,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"LLM\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:merge_dict"}, {"id": "metagpt/config2.py:config"}, {"id": "metagpt/config2.py:ast.Constant:\n@Time : 2024/1/4 01:25\n@Author : alexanderwu\n@File : config2.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 01:25\\n@Author : alexanderwu\\n@File : config2.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:os"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/config2.py:module:pathlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/config2.py:names:['Path']"}, {"id": "metagpt/config2.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/config2.py:names:['Dict', 'Iterable', 'List', 'Literal', 'Optional']"}, {"id": "metagpt/config2.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"id": "metagpt/config2.py:names:['BaseModel', 'model_validator']"}, {"id": "metagpt/config2.py:module:metagpt.configs.browser_config"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"id": "metagpt/config2.py:names:['BrowserConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/config2.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/config2.py:module:metagpt.configs.mermaid_config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"id": "metagpt/config2.py:names:['MermaidConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.redis_config"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"id": "metagpt/config2.py:names:['RedisConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.s3_config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"id": "metagpt/config2.py:names:['S3Config']"}, {"id": "metagpt/config2.py:module:metagpt.configs.search_config"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"id": "metagpt/config2.py:names:['SearchConfig']"}, {"id": "metagpt/config2.py:module:metagpt.configs.workspace_config"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"id": "metagpt/config2.py:names:['WorkspaceConfig']"}, {"id": "metagpt/config2.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/config2.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']"}, {"id": "metagpt/config2.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/config2.py:names:['YamlModel']"}, {"id": "{\"lineno\":25,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CLIParams\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":132,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Config\"],\"properties\":{}}"}, {"id": "{\"lineno\":135,\"end_lineno\":140,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_dict\"],\"properties\":{}}"}, {"id": "{\"lineno\":143,\"end_lineno\":143,\"type_name\":\"ast.Assign\",\"tokens\":[\"config\"],\"properties\":{}}"}, {"id": "metagpt/team.py:Team:__init__"}, {"id": "metagpt/team.py:Team:_check_balance"}, {"id": "metagpt/team.py:Team:_save"}, {"id": "metagpt/team.py:ast.Constant:\n@Time : 2023/5/12 00:30\n@Author : alexanderwu\n@File : team.py\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\n Section 2.2.3.3 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/12 00:30\\n@Author : alexanderwu\\n@File : team.py\\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\\n Section 2.2.3.3 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/team.py:warnings"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/team.py:module:pathlib"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/team.py:names:['Path']"}, {"id": "metagpt/team.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/team.py:names:['Any', 'Optional']"}, {"id": "metagpt/team.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/team.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/team.py:module:metagpt.actions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/team.py:names:['UserRequirement']"}, {"id": "metagpt/team.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"id": "metagpt/team.py:names:['MESSAGE_ROUTE_TO_ALL', 'SERDESER_PATH']"}, {"id": "metagpt/team.py:module:metagpt.context"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/team.py:names:['Context']"}, {"id": "metagpt/team.py:module:metagpt.environment"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"id": "metagpt/team.py:names:['Environment']"}, {"id": "metagpt/team.py:module:metagpt.logs"}, {"id": "metagpt/team.py:names:['logger']"}, {"id": "metagpt/team.py:module:metagpt.roles"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/team.py:names:['Role']"}, {"id": "metagpt/team.py:module:metagpt.schema"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/team.py:names:['Message']"}, {"id": "metagpt/team.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"id": "metagpt/team.py:names:['NoMoneyException', 'read_json_file', 'serialize_decorator', 'write_json_file']"}, {"id": "{\"lineno\":32,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Team\"],\"properties\":{}}"}, {"id": "metagpt/context.py:AttrDict:__init__"}, {"id": "metagpt/context.py:AttrDict:__getattr__"}, {"id": "metagpt/context.py:AttrDict:__setattr__"}, {"id": "metagpt/context.py:AttrDict:__delattr__"}, {"id": "metagpt/context.py:ast.Constant:\n@Time : 2024/1/4 16:32\n@Author : alexanderwu\n@File : context.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:32\\n@Author : alexanderwu\\n@File : context.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/context.py:os"}, {"id": "metagpt/context.py:module:pathlib"}, {"id": "metagpt/context.py:names:['Path']"}, {"id": "metagpt/context.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/context.py:names:['Any', 'Optional']"}, {"id": "metagpt/context.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"id": "metagpt/context.py:names:['BaseModel', 'ConfigDict']"}, {"id": "metagpt/context.py:module:metagpt.config2"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/context.py:names:['Config']"}, {"id": "metagpt/context.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/context.py:names:['LLMConfig']"}, {"id": "metagpt/context.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/context.py:names:['BaseLLM']"}, {"id": "metagpt/context.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"id": "metagpt/context.py:names:['create_llm_instance']"}, {"id": "metagpt/context.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"id": "metagpt/context.py:names:['CostManager']"}, {"id": "metagpt/context.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/context.py:names:['GitRepository']"}, {"id": "metagpt/context.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/context.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":23,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AttrDict\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Context\"],\"properties\":{}}"}, {"id": "metagpt/logs.py"}, {"id": "metagpt/logs.py:define_log_level"}, {"id": "metagpt/logs.py:log_llm_stream"}, {"id": "metagpt/logs.py:set_llm_stream_logfunc"}, {"id": "metagpt/logs.py:logger"}, {"id": "metagpt/logs.py:_llm_stream_log"}, {"id": "metagpt/logs.py:ast.Constant:\n@Time : 2023/6/1 12:41\n@Author : alexanderwu\n@File : logs.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/1 12:41\\n@Author : alexanderwu\\n@File : logs.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/logs.py:sys"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/logs.py:module:datetime"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/logs.py:names:['datetime']"}, {"id": "metagpt/logs.py:module:functools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"id": "metagpt/logs.py:names:['partial']"}, {"id": "metagpt/logs.py:module:loguru"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"id": "metagpt/logs.py:names:['logger as _logger']"}, {"id": "metagpt/logs.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"id": "metagpt/logs.py:names:['METAGPT_ROOT']"}, {"id": "{\"lineno\":18,\"end_lineno\":26,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"define_log_level\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":33,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_llm_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":38,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"set_llm_stream_logfunc\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"_llm_stream_log\"],\"properties\":{}}"}, {"id": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df"}, {"id": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain"}, {"id": "metagpt/document.py:Repo:_path"}, {"id": "metagpt/document.py:Repo:_set"}, {"id": "metagpt/document.py:validate_cols"}, {"id": "metagpt/document.py:read_data"}, {"id": "metagpt/document.py:ast.Constant:\n@Time : 2023/6/8 14:03\n@Author : alexanderwu\n@File : document.py\n@Desc : Classes and Operations Related to Files in the File System.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/8 14:03\\n@Author : alexanderwu\\n@File : document.py\\n@Desc : Classes and Operations Related to Files in the File System.\\n\"],\"properties\":{}}"}, {"id": "metagpt/document.py:module:enum"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/document.py:names:['Enum']"}, {"id": "metagpt/document.py:module:pathlib"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/document.py:names:['Path']"}, {"id": "metagpt/document.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"id": "metagpt/document.py:names:['Optional', 'Union']"}, {"id": "metagpt/document.py:pandas as pd"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/document.py:module:langchain.document_loaders"}, {"id": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"id": "metagpt/document.py:names:['TextLoader', 'UnstructuredPDFLoader', 'UnstructuredWordDocumentLoader']"}, {"id": "metagpt/document.py:module:langchain.text_splitter"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"id": "metagpt/document.py:names:['CharacterTextSplitter']"}, {"id": "metagpt/document.py:module:pydantic"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/document.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/document.py:module:tqdm"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"id": "metagpt/document.py:names:['tqdm']"}, {"id": "metagpt/document.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"id": "metagpt/document.py:names:['RepoParser']"}, {"id": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_cols\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_data\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocumentStatus\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":161,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IndexableDocument\"],\"properties\":{}}"}, {"id": "{\"lineno\":164,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoMetadata\"],\"properties\":{}}"}, {"id": "{\"lineno\":171,\"end_lineno\":235,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Repo\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : environment.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n 1. Remove the functionality of `Environment` class as a public message buffer.\n 2. Standardize the message forwarding behavior of the `Environment` class.\n 3. Add the `is_idle` property.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":13,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : environment.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n 1. Remove the functionality of `Environment` class as a public message buffer.\\n 2. Standardize the message forwarding behavior of the `Environment` class.\\n 3. Add the `is_idle` property.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:asyncio"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/environment.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"id": "metagpt/environment.py:names:['Iterable', 'Set']"}, {"id": "metagpt/environment.py:module:pydantic"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"id": "metagpt/environment.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']"}, {"id": "metagpt/environment.py:module:metagpt.context"}, {"id": "metagpt/environment.py:names:['Context']"}, {"id": "metagpt/environment.py:module:metagpt.logs"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/environment.py:names:['logger']"}, {"id": "metagpt/environment.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/environment.py:names:['Role']"}, {"id": "metagpt/environment.py:module:metagpt.schema"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/environment.py:names:['Message']"}, {"id": "metagpt/environment.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_send_to\"]}}"}, {"id": "metagpt/environment.py:names:['is_send_to']"}, {"id": "{\"lineno\":26,\"end_lineno\":131,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Environment\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py"}, {"id": "metagpt/_compat.py:platform"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:sys"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:warnings"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"id": "metagpt/_compat.py:n:a:m:e:p:l:a:t:f:o:r:m:.:s:y:s:t:e:m"}, {"id": "{\"lineno\":5,\"end_lineno\":23,\"type_name\":\"ast.If\",\"tokens\":[\"n\",\"a\",\"m\",\"e\",\"p\",\"l\",\"a\",\"t\",\"f\",\"o\",\"r\",\"m\",\".\",\"s\",\"y\",\"s\",\"t\",\"e\",\"m\"],\"properties\":{}}"}, {"id": "metagpt/context_mixin.py:ContextMixin:__init__"}, {"id": "metagpt/context_mixin.py:ast.Constant:\n@Time : 2024/1/11 17:25\n@Author : alexanderwu\n@File : context_mixin.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/11 17:25\\n@Author : alexanderwu\\n@File : context_mixin.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/context_mixin.py:module:typing"}, {"id": "metagpt/context_mixin.py:names:['Optional']"}, {"id": "metagpt/context_mixin.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/context_mixin.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/context_mixin.py:module:metagpt.config2"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/context_mixin.py:names:['Config']"}, {"id": "metagpt/context_mixin.py:module:metagpt.context"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/context_mixin.py:names:['Context']"}, {"id": "metagpt/context_mixin.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/context_mixin.py:names:['BaseLLM']"}, {"id": "{\"lineno\":17,\"end_lineno\":102,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ContextMixin\"],\"properties\":{}}"}, {"id": "metagpt/const.py"}, {"id": "metagpt/const.py:get_metagpt_package_root"}, {"id": "metagpt/const.py:get_metagpt_root"}, {"id": "metagpt/const.py:CONFIG_ROOT"}, {"id": "metagpt/const.py:METAGPT_ROOT"}, {"id": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT"}, {"id": "metagpt/const.py:EXAMPLE_PATH"}, {"id": "metagpt/const.py:DATA_PATH"}, {"id": "metagpt/const.py:TEST_DATA_PATH"}, {"id": "metagpt/const.py:RESEARCH_PATH"}, {"id": "metagpt/const.py:TUTORIAL_PATH"}, {"id": "metagpt/const.py:INVOICE_OCR_TABLE_PATH"}, {"id": "metagpt/const.py:UT_PATH"}, {"id": "metagpt/const.py:SWAGGER_PATH"}, {"id": "metagpt/const.py:UT_PY_PATH"}, {"id": "metagpt/const.py:API_QUESTIONS_PATH"}, {"id": "metagpt/const.py:SERDESER_PATH"}, {"id": "metagpt/const.py:TMP"}, {"id": "metagpt/const.py:SOURCE_ROOT"}, {"id": "metagpt/const.py:PROMPT_PATH"}, {"id": "metagpt/const.py:SKILL_DIRECTORY"}, {"id": "metagpt/const.py:MEM_TTL"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_FROM"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY"}, {"id": "metagpt/const.py:MESSAGE_META_ROLE"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL"}, {"id": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE"}, {"id": "metagpt/const.py:REQUIREMENT_FILENAME"}, {"id": "metagpt/const.py:BUGFIX_FILENAME"}, {"id": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME"}, {"id": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILENAME"}, {"id": "metagpt/const.py:DOCS_FILE_REPO"}, {"id": "metagpt/const.py:PRDS_FILE_REPO"}, {"id": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO"}, {"id": "metagpt/const.py:TASK_FILE_REPO"}, {"id": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO"}, {"id": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO"}, {"id": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO"}, {"id": "metagpt/const.py:SEQ_FLOW_FILE_REPO"}, {"id": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO"}, {"id": "metagpt/const.py:PRD_PDF_FILE_REPO"}, {"id": "metagpt/const.py:TASK_PDF_FILE_REPO"}, {"id": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO"}, {"id": "metagpt/const.py:TEST_CODES_FILE_REPO"}, {"id": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO"}, {"id": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO"}, {"id": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO"}, {"id": "metagpt/const.py:RESOURCES_FILE_REPO"}, {"id": "metagpt/const.py:SD_OUTPUT_FILE_REPO"}, {"id": "metagpt/const.py:GRAPH_REPO_FILE_REPO"}, {"id": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO"}, {"id": "metagpt/const.py:CLASS_VIEW_FILE_REPO"}, {"id": "metagpt/const.py:YAPI_URL"}, {"id": "metagpt/const.py:DEFAULT_LANGUAGE"}, {"id": "metagpt/const.py:DEFAULT_MAX_TOKENS"}, {"id": "metagpt/const.py:COMMAND_TOKENS"}, {"id": "metagpt/const.py:BRAIN_MEMORY"}, {"id": "metagpt/const.py:SKILL_PATH"}, {"id": "metagpt/const.py:SERPER_API_KEY"}, {"id": "metagpt/const.py:DEFAULT_TOKEN_SIZE"}, {"id": "metagpt/const.py:BASE64_FORMAT"}, {"id": "metagpt/const.py:REDIS_KEY"}, {"id": "metagpt/const.py:LLM_API_TIMEOUT"}, {"id": "metagpt/const.py:IGNORED_MESSAGE_ID"}, {"id": "metagpt/const.py:GENERALIZATION"}, {"id": "metagpt/const.py:COMPOSITION"}, {"id": "metagpt/const.py:AGGREGATION"}, {"id": "metagpt/const.py:ast.Constant:\n@Time : 2023/5/1 11:59\n@Author : alexanderwu\n@File : const.py\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\n common properties in the Message.\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/1 11:59\\n@Author : alexanderwu\\n@File : const.py\\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\\n common properties in the Message.\\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\\n\"],\"properties\":{}}"}, {"id": "metagpt/const.py:os"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/const.py:module:pathlib"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/const.py:names:['Path']"}, {"id": "metagpt/const.py:module:loguru"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/const.py:names:['logger']"}, {"id": "metagpt/const.py:metagpt"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_package_root\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":43,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_root\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONFIG_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_WORKSPACE_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_DATA_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"TUTORIAL_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":56,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_TABLE_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"SWAGGER_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PY_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"API_QUESTIONS_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":63,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERDESER_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":65,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"TMP\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":67,\"type_name\":\"ast.Assign\",\"tokens\":[\"SOURCE_ROOT\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":69,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_DIRECTORY\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"MEM_TTL\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_FROM\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_CAUSE_BY\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_META_ROLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":79,\"end_lineno\":79,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_ALL\"],\"properties\":{}}"}, {"id": "{\"lineno\":80,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_NONE\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":82,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":83,\"type_name\":\"ast.Assign\",\"tokens\":[\"BUGFIX_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":84,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PACKAGE_REQUIREMENTS_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILENAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"DOCS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRDS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":89,\"end_lineno\":89,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_API_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEQ_FLOW_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":96,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRD_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":97,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":99,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_CODES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_OUTPUTS_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_PDF_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":103,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESOURCES_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":104,\"type_name\":\"ast.Assign\",\"tokens\":[\"SD_OUTPUT_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":106,\"end_lineno\":106,\"type_name\":\"ast.Assign\",\"tokens\":[\"VISUAL_GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":107,\"end_lineno\":107,\"type_name\":\"ast.Assign\",\"tokens\":[\"CLASS_VIEW_FILE_REPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":109,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"YAPI_URL\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":112,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_MAX_TOKENS\"],\"properties\":{}}"}, {"id": "{\"lineno\":113,\"end_lineno\":113,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMAND_TOKENS\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":114,\"type_name\":\"ast.Assign\",\"tokens\":[\"BRAIN_MEMORY\"],\"properties\":{}}"}, {"id": "{\"lineno\":115,\"end_lineno\":115,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_PATH\"],\"properties\":{}}"}, {"id": "{\"lineno\":116,\"end_lineno\":116,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERPER_API_KEY\"],\"properties\":{}}"}, {"id": "{\"lineno\":117,\"end_lineno\":117,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_TOKEN_SIZE\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"BASE64_FORMAT\"],\"properties\":{}}"}, {"id": "{\"lineno\":123,\"end_lineno\":123,\"type_name\":\"ast.Assign\",\"tokens\":[\"REDIS_KEY\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_API_TIMEOUT\"],\"properties\":{}}"}, {"id": "{\"lineno\":127,\"end_lineno\":127,\"type_name\":\"ast.Assign\",\"tokens\":[\"IGNORED_MESSAGE_ID\"],\"properties\":{}}"}, {"id": "{\"lineno\":130,\"end_lineno\":130,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERALIZATION\"],\"properties\":{}}"}, {"id": "{\"lineno\":131,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPOSITION\"],\"properties\":{}}"}, {"id": "{\"lineno\":132,\"end_lineno\":132,\"type_name\":\"ast.Assign\",\"tokens\":[\"AGGREGATION\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__"}, {"id": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__"}, {"id": "metagpt/schema.py:SerializationMixin:__init_subclass__"}, {"id": "metagpt/schema.py:Document:__str__"}, {"id": "metagpt/schema.py:Document:__repr__"}, {"id": "metagpt/schema.py:Message:__init__"}, {"id": "metagpt/schema.py:Message:__setattr__"}, {"id": "metagpt/schema.py:Message:__str__"}, {"id": "metagpt/schema.py:Message:__repr__"}, {"id": "metagpt/schema.py:UserMessage:__init__"}, {"id": "metagpt/schema.py:SystemMessage:__init__"}, {"id": "metagpt/schema.py:AIMessage:__init__"}, {"id": "metagpt/schema.py:CodeSummarizeContext:__hash__"}, {"id": "metagpt/schema.py:T"}, {"id": "metagpt/schema.py:ast.Constant:\n@Time : 2023/5/8 22:12\n@Author : alexanderwu\n@File : schema.py\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\n@Modified By: mashenquan, 2023/11/22.\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\n between actions.\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 22:12\\n@Author : alexanderwu\\n@File : schema.py\\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\\n@Modified By: mashenquan, 2023/11/22.\\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\\n between actions.\\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:module:__future__"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/schema.py:names:['annotations']"}, {"id": "metagpt/schema.py:asyncio"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:json"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:os.path"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:uuid"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/schema.py:module:abc"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/schema.py:names:['ABC']"}, {"id": "metagpt/schema.py:module:asyncio"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"id": "metagpt/schema.py:names:['Queue', 'QueueEmpty', 'wait_for']"}, {"id": "metagpt/schema.py:module:json"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"id": "metagpt/schema.py:names:['JSONDecodeError']"}, {"id": "metagpt/schema.py:module:pathlib"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/schema.py:names:['Path']"}, {"id": "metagpt/schema.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"id": "metagpt/schema.py:names:['Any', 'Dict', 'Iterable', 'List', 'Optional', 'Type', 'TypeVar', 'Union']"}, {"id": "metagpt/schema.py:module:pydantic"}, {"id": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"id": "metagpt/schema.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr', 'field_serializer', 'field_validator', 'model_serializer', 'model_validator']"}, {"id": "metagpt/schema.py:module:metagpt.const"}, {"id": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/schema.py:names:['CODE_PLAN_AND_CHANGE_FILENAME', 'MESSAGE_ROUTE_CAUSE_BY', 'MESSAGE_ROUTE_FROM', 'MESSAGE_ROUTE_TO', 'MESSAGE_ROUTE_TO_ALL', 'PRDS_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/schema.py:module:metagpt.logs"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/schema.py:names:['logger']"}, {"id": "metagpt/schema.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"id": "metagpt/schema.py:names:['DotClassInfo']"}, {"id": "metagpt/schema.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"id": "metagpt/schema.py:names:['any_to_str', 'any_to_str_set', 'import_class']"}, {"id": "metagpt/schema.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/schema.py:names:['handle_exception']"}, {"id": "metagpt/schema.py:module:metagpt.utils.serialize"}, {"id": "{\"lineno\":53,\"end_lineno\":57,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"id": "metagpt/schema.py:names:['actionoutout_schema_to_mapping', 'actionoutput_mapping_to_str', 'actionoutput_str_to_mapping']"}, {"id": "{\"lineno\":60,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerializationMixin\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SimpleMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":127,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"id": "{\"lineno\":159,\"end_lineno\":186,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Documents\"],\"properties\":{}}"}, {"id": "{\"lineno\":189,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Message\"],\"properties\":{}}"}, {"id": "{\"lineno\":307,\"end_lineno\":313,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":316,\"end_lineno\":322,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SystemMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":325,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AIMessage\"],\"properties\":{}}"}, {"id": "{\"lineno\":334,\"end_lineno\":403,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageQueue\"],\"properties\":{}}"}, {"id": "{\"lineno\":407,\"end_lineno\":407,\"type_name\":\"ast.Assign\",\"tokens\":[\"T\"],\"properties\":{}}"}, {"id": "{\"lineno\":410,\"end_lineno\":415,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":418,\"end_lineno\":422,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodingContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":425,\"end_lineno\":428,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TestingContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":431,\"end_lineno\":441,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":444,\"end_lineno\":447,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeResult\"],\"properties\":{}}"}, {"id": "{\"lineno\":450,\"end_lineno\":469,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeSummarizeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":472,\"end_lineno\":473,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BugFixContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":476,\"end_lineno\":497,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodePlanAndChangeContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":501,\"end_lineno\":513,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMeta\"],\"properties\":{}}"}, {"id": "{\"lineno\":516,\"end_lineno\":536,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassAttribute\"],\"properties\":{}}"}, {"id": "{\"lineno\":539,\"end_lineno\":553,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMethod\"],\"properties\":{}}"}, {"id": "{\"lineno\":556,\"end_lineno\":583,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassView\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py"}, {"id": "metagpt/learn/text_to_image.py:text_to_image"}, {"id": "metagpt/learn/text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_image.py\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_image.py\\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:base64"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.config2"}, {"id": "metagpt/learn/text_to_image.py:names:['Config']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.llm"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['LLM']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.tools.metagpt_text_to_image"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['oas3_metagpt_text_to_image']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.tools.openai_text_to_image"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['oas3_openai_text_to_image']"}, {"id": "metagpt/learn/text_to_image.py:module:metagpt.utils.s3"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"id": "metagpt/learn/text_to_image.py:names:['S3']"}, {"id": "{\"lineno\":20,\"end_lineno\":44,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/learn/__init__.py"}, {"id": "metagpt/learn/__init__.py:__all__"}, {"id": "metagpt/learn/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_image"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['text_to_image']"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_speech"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['text_to_speech']"}, {"id": "metagpt/learn/__init__.py:module:metagpt.learn.google_search"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"id": "metagpt/learn/__init__.py:names:['google_search']"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/learn/google_search.py"}, {"id": "metagpt/learn/google_search.py:google_search"}, {"id": "metagpt/learn/google_search.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/learn/google_search.py:names:['SearchEngine']"}, {"id": "{\"lineno\":4,\"end_lineno\":12,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"google_search\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py"}, {"id": "metagpt/learn/text_to_speech.py:text_to_speech"}, {"id": "metagpt/learn/text_to_speech.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : text_to_speech.py\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : text_to_speech.py\\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py:metagpt.config2"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.config2"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['Config']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.const"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.tools.azure_tts"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['oas3_azsure_tts']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.tools.iflytek_tts"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['oas3_iflytek_tts']"}, {"id": "metagpt/learn/text_to_speech.py:module:metagpt.utils.s3"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"id": "metagpt/learn/text_to_speech.py:names:['S3']"}, {"id": "{\"lineno\":17,\"end_lineno\":69,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_speech\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_embedding.py"}, {"id": "metagpt/learn/text_to_embedding.py:text_to_embedding"}, {"id": "metagpt/learn/text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_embedding.py\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_embedding.py\\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/text_to_embedding.py:metagpt.config2"}, {"id": "metagpt/learn/text_to_embedding.py:module:metagpt.config2"}, {"id": "metagpt/learn/text_to_embedding.py:names:['Config']"}, {"id": "metagpt/learn/text_to_embedding.py:module:metagpt.tools.openai_text_to_embedding"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"id": "metagpt/learn/text_to_embedding.py:names:['oas3_openai_text_to_embedding']"}, {"id": "{\"lineno\":14,\"end_lineno\":24,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_embedding\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : skill_loader.py\n@Desc : Skill YAML Configuration Loader.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : skill_loader.py\\n@Desc : Skill YAML Configuration Loader.\\n\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:module:pathlib"}, {"id": "metagpt/learn/skill_loader.py:names:['Path']"}, {"id": "metagpt/learn/skill_loader.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/learn/skill_loader.py:aiofiles"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:yaml"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/learn/skill_loader.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/learn/skill_loader.py:module:metagpt.context"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"id": "metagpt/learn/skill_loader.py:names:['Context']"}, {"id": "{\"lineno\":19,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Example\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Returns\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Parameter\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Entity\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Components\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillsDeclaration\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__"}, {"id": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs"}, {"id": "metagpt/tools/search_engine_ddg.py:module:__future__"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['annotations']"}, {"id": "metagpt/tools/search_engine_ddg.py:asyncio"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:json"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:module:concurrent"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['futures']"}, {"id": "metagpt/tools/search_engine_ddg.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['Literal', 'overload']"}, {"id": "metagpt/tools/search_engine_ddg.py:module:metagpt.config2"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/search_engine_ddg.py:names:['config']"}, {"id": "{\"lineno\":21,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DDGAPIWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_ddg.py:__name__:__main__"}, {"id": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : metagpt_oas3_api_svc.py\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\n\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : metagpt_oas3_api_svc.py\\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\\n\\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:module:pathlib"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:names:['Path']"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:connexion"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"oas_http_svc\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_oas3_api_svc.py:__name__:__main__"}, {"id": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__"}, {"id": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__"}, {"id": "metagpt/tools/search_engine_meilisearch.py:ast.Constant:\n@Time : 2023/5/22 21:33\n@Author : alexanderwu\n@File : search_engine_meilisearch.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/22 21:33\\n@Author : alexanderwu\\n@File : search_engine_meilisearch.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['List']"}, {"id": "metagpt/tools/search_engine_meilisearch.py:meilisearch"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"meilisearch\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:meilisearch.index"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['Index']"}, {"id": "metagpt/tools/search_engine_meilisearch.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/tools/search_engine_meilisearch.py:names:['handle_exception']"}, {"id": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataSource\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MeilisearchEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__"}, {"id": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding"}, {"id": "metagpt/tools/openai_text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : openai_text_to_embedding.py\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : openai_text_to_embedding.py\\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['List']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:aiohttp"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:requests"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:pydantic"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.logs"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/openai_text_to_embedding.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Embedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Usage\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResultEmbedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":71,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Embedding\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":85,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_embedding\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response"}, {"id": "metagpt/tools/search_engine_serpapi.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['Any', 'Dict', 'Optional', 'Tuple']"}, {"id": "metagpt/tools/search_engine_serpapi.py:aiohttp"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_serpapi.py:module:metagpt.config2"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:names:['config']"}, {"id": "{\"lineno\":16,\"end_lineno\":110,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerpAPIWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serpapi.py:__name__:__main__"}, {"id": "{\"lineno\":113,\"end_lineno\":116,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_log_stream"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_lock"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:_install_cache"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:__future__"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:asyncio"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:sys"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:pathlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['Path']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['Literal']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:playwright.async_api"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['async_playwright']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.config2"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['config']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.logs"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['logger']"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine_playwright.py:names:['WebPage']"}, {"id": "{\"lineno\":18,\"end_lineno\":95,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PlaywrightWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":98,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_install_lock\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_install_browsers\"],\"properties\":{}}"}, {"id": "{\"lineno\":131,\"end_lineno\":136,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_log_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":139,\"end_lineno\":139,\"type_name\":\"ast.AnnAssign\",\"tokens\":[\"_install_lock\"],\"properties\":{}}"}, {"id": "{\"lineno\":140,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"_install_cache\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:SkSearchEngine:__init__"}, {"id": "metagpt/tools/search_engine.py:SearchEngine:__init__"}, {"id": "metagpt/tools/search_engine.py:ast.Constant:\n@Time : 2023/5/6 20:15\n@Author : alexanderwu\n@File : search_engine.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/6 20:15\\n@Author : alexanderwu\\n@File : search_engine.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:importlib"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['Callable', 'Coroutine', 'Literal', 'Optional', 'Union', 'overload']"}, {"id": "metagpt/tools/search_engine.py:module:semantic_kernel.skill_definition"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['sk_function']"}, {"id": "metagpt/tools/search_engine.py:module:metagpt.tools"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/tools/search_engine.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":16,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkSearchEngine\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__"}, {"id": "metagpt/tools/web_browser_engine.py:module:__future__"}, {"id": "metagpt/tools/web_browser_engine.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine.py:importlib"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['Any', 'Callable', 'Coroutine', 'overload']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.tools"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['WebBrowserEngineType']"}, {"id": "metagpt/tools/web_browser_engine.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine.py:names:['WebPage']"}, {"id": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngine\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response"}, {"id": "metagpt/tools/search_engine_serper.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n"}, {"id": "metagpt/tools/search_engine_serper.py:json"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['Any', 'Dict', 'Optional', 'Tuple']"}, {"id": "metagpt/tools/search_engine_serper.py:aiohttp"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_serper.py:module:metagpt.config2"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/search_engine_serper.py:names:['config']"}, {"id": "{\"lineno\":17,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerperWrapper\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_serper.py:__name__:__main__"}, {"id": "{\"lineno\":115,\"end_lineno\":118,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/moderation.py:Moderation:__init__"}, {"id": "metagpt/tools/moderation.py:ast.Constant:\n@Time : 2023/9/26 14:27\n@Author : zhanglei\n@File : moderation.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/26 14:27\\n@Author : zhanglei\\n@File : moderation.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/moderation.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/tools/moderation.py:names:['Union']"}, {"id": "metagpt/tools/moderation.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/tools/moderation.py:names:['BaseLLM']"}, {"id": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Moderation\"],\"properties\":{}}"}, {"id": "metagpt/tools/__init__.py"}, {"id": "metagpt/tools/__init__.py:SearchEngineType"}, {"id": "metagpt/tools/__init__.py:WebBrowserEngineType"}, {"id": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__"}, {"id": "metagpt/tools/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:35\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:35\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/__init__.py:module:enum"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/tools/__init__.py:names:['Enum']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngineType\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngineType\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:safe_google_results"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:__future__"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['annotations']"}, {"id": "metagpt/tools/search_engine_googleapi.py:asyncio"}, {"id": "metagpt/tools/search_engine_googleapi.py:json"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:concurrent"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['futures']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:typing"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['Optional']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:urllib.parse"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['urlparse']"}, {"id": "metagpt/tools/search_engine_googleapi.py:httplib2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"httplib2\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:pydantic"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:metagpt.config2"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['config']"}, {"id": "metagpt/tools/search_engine_googleapi.py:module:metagpt.logs"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:names:['logger']"}, {"id": "{\"lineno\":27,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleAPIWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":133,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"safe_google_results\"],\"properties\":{}}"}, {"id": "metagpt/tools/search_engine_googleapi.py:__name__:__main__"}, {"id": "{\"lineno\":136,\"end_lineno\":139,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:__future__"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['annotations']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:asyncio"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:importlib"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:concurrent"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['futures']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:copy"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['deepcopy']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['Literal']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.common.by"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['By']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['expected_conditions as EC']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support.wait"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WebDriverWait']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.download_manager"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMDownloadManager']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.http"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMHttpClient']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.config2"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['config']"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.utils.parse_html"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"id": "metagpt/tools/web_browser_engine_selenium.py:names:['WebPage']"}, {"id": "{\"lineno\":22,\"end_lineno\":83,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SeleniumWrapper\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"_webdriver_manager_types\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WDMHttpProxyClient\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":125,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_gen_get_driver_func\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py"}, {"id": "metagpt/tools/openapi_v3_hello.py:post_greeting"}, {"id": "metagpt/tools/openapi_v3_hello.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : mashenquan\n@File : openapi_v3_hello.py\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\n\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n"}, {"id": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : mashenquan\\n@File : openapi_v3_hello.py\\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\\n\\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:module:pathlib"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:names:['Path']"}, {"id": "metagpt/tools/openapi_v3_hello.py:connexion"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"post_greeting\"],\"properties\":{}}"}, {"id": "metagpt/tools/openapi_v3_hello.py:__name__:__main__"}, {"id": "{\"lineno\":25,\"end_lineno\":29,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:AzureTTS:__init__"}, {"id": "metagpt/tools/azure_tts.py:oas3_azsure_tts"}, {"id": "metagpt/tools/azure_tts.py:ast.Constant:\n@Time : 2023/6/9 22:22\n@Author : Leo Xiao\n@File : azure_tts.py\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/9 22:22\\n@Author : Leo Xiao\\n@File : azure_tts.py\\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:base64"}, {"id": "metagpt/tools/azure_tts.py:module:pathlib"}, {"id": "metagpt/tools/azure_tts.py:names:['Path']"}, {"id": "metagpt/tools/azure_tts.py:module:uuid"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"id": "metagpt/tools/azure_tts.py:names:['uuid4']"}, {"id": "metagpt/tools/azure_tts.py:aiofiles"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/tools/azure_tts.py:module:azure.cognitiveservices.speech"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"id": "metagpt/tools/azure_tts.py:names:['AudioConfig', 'SpeechConfig', 'SpeechSynthesizer']"}, {"id": "metagpt/tools/azure_tts.py:module:metagpt.logs"}, {"id": "metagpt/tools/azure_tts.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureTTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":100,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_azsure_tts\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__"}, {"id": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image"}, {"id": "metagpt/tools/openai_text_to_image.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : openai_text_to_image.py\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : openai_text_to_image.py\\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:aiohttp"}, {"id": "metagpt/tools/openai_text_to_image.py:requests"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/tools/openai_text_to_image.py:module:metagpt.logs"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/openai_text_to_image.py:names:['logger']"}, {"id": "metagpt/tools/openai_text_to_image.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/tools/openai_text_to_image.py:names:['BaseLLM']"}, {"id": "{\"lineno\":17,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Image\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":67,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:__init__"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str"}, {"id": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut"}, {"id": "metagpt/tools/ut_writer.py:ICL_SAMPLE"}, {"id": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX"}, {"id": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX"}, {"id": "metagpt/tools/ut_writer.py:OCR_API_DOC"}, {"id": "metagpt/tools/ut_writer.py:json"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/ut_writer.py:module:pathlib"}, {"id": "metagpt/tools/ut_writer.py:names:['Path']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.config2"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['config']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['OpenAILLM as GPTAPI']"}, {"id": "metagpt/tools/ut_writer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"id": "metagpt/tools/ut_writer.py:names:['awrite']"}, {"id": "{\"lineno\":11,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"ICL_SAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"YFT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"OCR_API_DOC\"],\"properties\":{}}"}, {"id": "{\"lineno\":104,\"end_lineno\":287,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UTGenerator\"],\"properties\":{}}"}, {"id": "metagpt/tools/translator.py:prompt"}, {"id": "metagpt/tools/translator.py:ast.Constant:\n@Time : 2023/4/29 15:36\n@Author : alexanderwu\n@File : translator.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:36\\n@Author : alexanderwu\\n@File : translator.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"prompt\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Translator\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__"}, {"id": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image"}, {"id": "metagpt/tools/metagpt_text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : metagpt_text_to_image.py\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : metagpt_text_to_image.py\\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:base64"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['Dict', 'List']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:aiohttp"}, {"id": "metagpt/tools/metagpt_text_to_image.py:requests"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:pydantic"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['BaseModel']"}, {"id": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.logs"}, {"id": "metagpt/tools/metagpt_text_to_image.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":81,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTText2Image\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":95,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_metagpt_text_to_image\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__"}, {"id": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url"}, {"id": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts"}, {"id": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE"}, {"id": "metagpt/tools/iflytek_tts.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : iflytek_tts.py\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : iflytek_tts.py\\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:base64"}, {"id": "metagpt/tools/iflytek_tts.py:hashlib"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:hmac"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:json"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:uuid"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:module:datetime"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['datetime']"}, {"id": "metagpt/tools/iflytek_tts.py:module:enum"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Enum']"}, {"id": "metagpt/tools/iflytek_tts.py:module:pathlib"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Path']"}, {"id": "metagpt/tools/iflytek_tts.py:module:time"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['mktime']"}, {"id": "metagpt/tools/iflytek_tts.py:module:typing"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['Optional']"}, {"id": "metagpt/tools/iflytek_tts.py:module:urllib.parse"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['urlencode']"}, {"id": "metagpt/tools/iflytek_tts.py:module:wsgiref.handlers"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['format_date_time']"}, {"id": "metagpt/tools/iflytek_tts.py:aiofiles"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:websockets as websockets"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"websockets as websockets\"],\"properties\":{}}"}, {"id": "metagpt/tools/iflytek_tts.py:module:pydantic"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['BaseModel']"}, {"id": "metagpt/tools/iflytek_tts.py:module:metagpt.logs"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/tools/iflytek_tts.py:names:['logger']"}, {"id": "{\"lineno\":29,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSStatus\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AudioData\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSResponse\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_IFLYTEK_VOICE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":113,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":117,\"end_lineno\":143,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_iflytek_tts\"],\"properties\":{}}"}, {"id": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__"}, {"id": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__"}, {"id": "metagpt/tools/prompt_writer.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : alexanderwu\n@File : prompt_writer.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : alexanderwu\\n@File : prompt_writer.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/tools/prompt_writer.py:module:typing"}, {"id": "metagpt/tools/prompt_writer.py:names:['Union']"}, {"id": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTPromptGenerator\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WikiHowTemplate\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnronTemplate\"],\"properties\":{}}"}, {"id": "{\"lineno\":95,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BEAGECTemplate\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory.py:ast.Constant:\n@Time : 2023/5/20 12:15\n@Author : alexanderwu\n@File : memory.py\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 12:15\\n@Author : alexanderwu\\n@File : memory.py\\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory.py:module:collections"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/memory/memory.py:names:['defaultdict']"}, {"id": "metagpt/memory/memory.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"id": "metagpt/memory/memory.py:names:['DefaultDict', 'Iterable', 'Set']"}, {"id": "metagpt/memory/memory.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"id": "metagpt/memory/memory.py:names:['BaseModel', 'Field', 'SerializeAsAny']"}, {"id": "metagpt/memory/memory.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"id": "metagpt/memory/memory.py:names:['IGNORED_MESSAGE_ID']"}, {"id": "metagpt/memory/memory.py:module:metagpt.schema"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/memory/memory.py:names:['Message']"}, {"id": "metagpt/memory/memory.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"id": "metagpt/memory/memory.py:names:['any_to_str', 'any_to_str_set']"}, {"id": "{\"lineno\":19,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Memory\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_summarize"}, {"id": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary"}, {"id": "metagpt/memory/brain_memory.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : brain_memory.py\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : brain_memory.py\\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/brain_memory.py:json"}, {"id": "metagpt/memory/brain_memory.py:re"}, {"id": "metagpt/memory/brain_memory.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Dict', 'List', 'Optional']"}, {"id": "metagpt/memory/brain_memory.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.config2"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['config']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['DEFAULT_MAX_TOKENS', 'DEFAULT_TOKEN_SIZE']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.logs"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['logger']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.provider"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['MetaGPTLLM']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['BaseLLM']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.schema"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Message', 'SimpleMessage']"}, {"id": "metagpt/memory/brain_memory.py:module:metagpt.utils.redis"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"id": "metagpt/memory/brain_memory.py:names:['Redis']"}, {"id": "{\"lineno\":26,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrainMemory\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:__init__"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:_load"}, {"id": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname"}, {"id": "metagpt/memory/memory_storage.py:ast.Constant:\n@Desc : the implement of memory storage\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of memory storage\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/memory_storage.py:module:pathlib"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Path']"}, {"id": "metagpt/memory/memory_storage.py:module:typing"}, {"id": "metagpt/memory/memory_storage.py:names:['Optional']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain.embeddings"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain.vectorstores.faiss"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['FAISS']"}, {"id": "metagpt/memory/memory_storage.py:module:langchain_core.embeddings"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Embeddings']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['DATA_PATH', 'MEM_TTL']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.document_store.faiss_store"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['FaissStore']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.logs"}, {"id": "metagpt/memory/memory_storage.py:names:['logger']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['Message']"}, {"id": "metagpt/memory/memory_storage.py:module:metagpt.utils.serialize"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"id": "metagpt/memory/memory_storage.py:names:['deserialize_message', 'serialize_message']"}, {"id": "{\"lineno\":21,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MemoryStorage\"],\"properties\":{}}"}, {"id": "metagpt/memory/__init__.py"}, {"id": "metagpt/memory/__init__.py:__all__"}, {"id": "metagpt/memory/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "metagpt/memory/__init__.py:module:metagpt.memory.memory"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/memory/__init__.py:names:['Memory']"}, {"id": "{\"lineno\":14,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/memory/longterm_memory.py:ast.Constant:\n@Desc : the implement of Long-term memory\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of Long-term memory\\n\"],\"properties\":{}}"}, {"id": "metagpt/memory/longterm_memory.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['Optional']"}, {"id": "metagpt/memory/longterm_memory.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['ConfigDict', 'Field']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.logs"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['logger']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.memory"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['Memory']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.memory.memory_storage"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['MemoryStorage']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"id": "metagpt/memory/longterm_memory.py:names:['RoleContext']"}, {"id": "metagpt/memory/longterm_memory.py:module:metagpt.schema"}, {"id": "metagpt/memory/longterm_memory.py:names:['Message']"}, {"id": "{\"lineno\":18,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LongTermMemory\"],\"properties\":{}}"}, {"id": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__"}, {"id": "metagpt/document_store/qdrant_store.py:module:dataclasses"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['dataclass']"}, {"id": "metagpt/document_store/qdrant_store.py:module:typing"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['List']"}, {"id": "metagpt/document_store/qdrant_store.py:module:qdrant_client"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['QdrantClient']"}, {"id": "metagpt/document_store/qdrant_store.py:module:qdrant_client.models"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['Filter', 'PointStruct', 'VectorParams']"}, {"id": "metagpt/document_store/qdrant_store.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/document_store/qdrant_store.py:names:['BaseStore']"}, {"id": "{\"lineno\":11,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantConnection\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__"}, {"id": "metagpt/document_store/chromadb_store.py:ast.Constant:\n@Time : 2023/5/29 14:46\n@Author : alexanderwu\n@File : chromadb_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/29 14:46\\n@Author : alexanderwu\\n@File : chromadb_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/chromadb_store.py:chromadb"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"chromadb\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChromaStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:LanceStore:__init__"}, {"id": "metagpt/document_store/lancedb_store.py:ast.Constant:\n@Time : 2023/8/9 15:42\n@Author : unkn-wn (Leon Yee)\n@File : lancedb_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/9 15:42\\n@Author : unkn-wn (Leon Yee)\\n@File : lancedb_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:os"}, {"id": "metagpt/document_store/lancedb_store.py:shutil"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/document_store/lancedb_store.py:lancedb"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"lancedb\"],\"properties\":{}}"}, {"id": "{\"lineno\":14,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LanceStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/__init__.py"}, {"id": "metagpt/document_store/__init__.py:__all__"}, {"id": "metagpt/document_store/__init__.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/__init__.py:module:metagpt.document_store.faiss_store"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"id": "metagpt/document_store/__init__.py:names:['FaissStore']"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:__init__"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:_load"}, {"id": "metagpt/document_store/faiss_store.py:FaissStore:_write"}, {"id": "metagpt/document_store/faiss_store.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : faiss_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : faiss_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:asyncio"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/document_store/faiss_store.py:module:pathlib"}, {"id": "metagpt/document_store/faiss_store.py:names:['Path']"}, {"id": "metagpt/document_store/faiss_store.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['Optional']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain.vectorstores"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['FAISS']"}, {"id": "metagpt/document_store/faiss_store.py:module:langchain_core.embeddings"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['Embeddings']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.document"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['IndexableDocument']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['LocalStore']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.logs"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['logger']"}, {"id": "metagpt/document_store/faiss_store.py:module:metagpt.utils.embedding"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"id": "metagpt/document_store/faiss_store.py:names:['get_embedding']"}, {"id": "{\"lineno\":21,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FaissStore\"],\"properties\":{}}"}, {"id": "metagpt/document_store/base_store.py:LocalStore:__init__"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_load"}, {"id": "metagpt/document_store/base_store.py:LocalStore:_write"}, {"id": "metagpt/document_store/base_store.py:ast.Constant:\n@Time : 2023/5/28 00:01\n@Author : alexanderwu\n@File : base_store.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/28 00:01\\n@Author : alexanderwu\\n@File : base_store.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/document_store/base_store.py:module:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"id": "metagpt/document_store/base_store.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/document_store/base_store.py:module:pathlib"}, {"id": "metagpt/document_store/base_store.py:names:['Path']"}, {"id": "{\"lineno\":12,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseStore\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LocalStore\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:Claude2:__init__"}, {"id": "metagpt/provider/anthropic_api.py:ast.Constant:\n@Time : 2023/7/21 11:15\n@Author : Leo Xiao\n@File : anthropic_api.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/21 11:15\\n@Author : Leo Xiao\\n@File : anthropic_api.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:anthropic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"anthropic\"],\"properties\":{}}"}, {"id": "metagpt/provider/anthropic_api.py:module:anthropic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"id": "metagpt/provider/anthropic_api.py:names:['Anthropic', 'AsyncAnthropic']"}, {"id": "metagpt/provider/anthropic_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/provider/anthropic_api.py:names:['LLMConfig']"}, {"id": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Claude2\"],\"properties\":{}}"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion"}, {"id": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream"}, {"id": "metagpt/provider/google_gemini_api.py:google.generativeai as genai"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"google.generativeai as genai\"],\"properties\":{}}"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.ai"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['generativelanguage as glm']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.generative_models"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['GenerativeModel']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['content_types']"}, {"id": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types.generation_types"}, {"id": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['AsyncGenerateContentResponse', 'GenerateContentResponse', 'GenerationConfig']"}, {"id": "metagpt/provider/google_gemini_api.py:module:tenacity"}, {"id": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['register_provider']"}, {"id": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/google_gemini_api.py:names:['log_and_reraise']"}, {"id": "{\"lineno\":29,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiGenerativeModel\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":143,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client"}, {"id": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs"}, {"id": "metagpt/provider/azure_openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/azure_openai_api.py:module:openai"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['AsyncAzureOpenAI']"}, {"id": "metagpt/provider/azure_openai_api.py:module:openai._base_client"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['AsyncHttpxClientWrapper']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['LLMType']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/azure_openai_api.py:names:['OpenAILLM']"}, {"id": "{\"lineno\":20,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureOpenAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs"}, {"id": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream"}, {"id": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS"}, {"id": "metagpt/provider/fireworks_api.py:re"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/provider/fireworks_api.py:module:openai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['APIConnectionError', 'AsyncStream']"}, {"id": "metagpt/provider/fireworks_api.py:module:openai.types"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/fireworks_api.py:module:openai.types.chat"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['ChatCompletionChunk']"}, {"id": "metagpt/provider/fireworks_api.py:module:tenacity"}, {"id": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.logs"}, {"id": "metagpt/provider/fireworks_api.py:names:['logger']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['register_provider']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['OpenAILLM', 'log_and_reraise']"}, {"id": "metagpt/provider/fireworks_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"id": "metagpt/provider/fireworks_api.py:names:['CostManager', 'Costs']"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_GRADE_TOKEN_COSTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksCostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":131,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:__init__"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion"}, {"id": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream"}, {"id": "metagpt/provider/ollama_api.py:json"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/ollama_api.py:module:requests"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['ConnectionError']"}, {"id": "metagpt/provider/ollama_api.py:module:tenacity"}, {"id": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.const"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['LLM_API_TIMEOUT']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.general_api_requestor"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['GeneralAPIRequestor']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['register_provider']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['log_and_reraise']"}, {"id": "metagpt/provider/ollama_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"id": "metagpt/provider/ollama_api.py:names:['TokenCostManager']"}, {"id": "{\"lineno\":27,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/__init__.py"}, {"id": "metagpt/provider/__init__.py:__all__"}, {"id": "metagpt/provider/__init__.py:ast.Constant:\n@Time : 2023/5/5 22:59\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 22:59\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.fireworks_api"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['FireworksLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.google_gemini_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['GeminiLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.ollama_api"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OllamaLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.open_llm_api"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OpenLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.zhipuai_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['ZhiPuAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.azure_openai_api"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['AzureOpenAILLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.metagpt_api"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['MetaGPTLLM']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.human_provider"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['HumanProvider']"}, {"id": "metagpt/provider/__init__.py:module:metagpt.provider.spark_api"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"id": "metagpt/provider/__init__.py:names:['SparkLLM']"}, {"id": "{\"lineno\":20,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:__init__"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_init_model"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_init_client"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_process_message"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs"}, {"id": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens"}, {"id": "metagpt/provider/openai_api.py:log_and_reraise"}, {"id": "metagpt/provider/openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n"}, {"id": "metagpt/provider/openai_api.py:json"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/openai_api.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['AsyncIterator', 'Optional', 'Union']"}, {"id": "metagpt/provider/openai_api.py:module:openai"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['APIConnectionError', 'AsyncOpenAI', 'AsyncStream']"}, {"id": "metagpt/provider/openai_api.py:module:openai._base_client"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['AsyncHttpxClientWrapper']"}, {"id": "metagpt/provider/openai_api.py:module:openai.types"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/openai_api.py:module:openai.types.chat"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['ChatCompletion', 'ChatCompletionChunk']"}, {"id": "metagpt/provider/openai_api.py:module:tenacity"}, {"id": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.constant"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['GENERAL_FUNCTION_SCHEMA', 'GENERAL_TOOL_CHOICE']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.schema"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['Message']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['CostManager', 'Costs']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['handle_exception']"}, {"id": "metagpt/provider/openai_api.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":33,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"id": "metagpt/provider/openai_api.py:names:['count_message_tokens', 'count_string_tokens', 'get_max_completion_tokens']"}, {"id": "{\"lineno\":40,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_and_reraise\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":245,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:SparkLLM:__init__"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__"}, {"id": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run"}, {"id": "metagpt/provider/spark_api.py:ast.Constant:\n@File : spark_api.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : spark_api.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:_thread as thread"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"_thread as thread\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:base64"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:datetime"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:hashlib"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:hmac"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:json"}, {"id": "metagpt/provider/spark_api.py:ssl"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"ssl\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:module:time"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['mktime']"}, {"id": "metagpt/provider/spark_api.py:module:urllib.parse"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['urlencode', 'urlparse']"}, {"id": "metagpt/provider/spark_api.py:module:wsgiref.handlers"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['format_date_time']"}, {"id": "metagpt/provider/spark_api.py:websocket"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"websocket\"],\"properties\":{}}"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.logs"}, {"id": "metagpt/provider/spark_api.py:names:['logger']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/spark_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/spark_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/spark_api.py:names:['register_provider']"}, {"id": "{\"lineno\":26,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SparkLLM\"],\"properties\":{}}"}, {"id": "{\"lineno\":46,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GetMessageFromWeb\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response"}, {"id": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response"}, {"id": "metagpt/provider/general_api_requestor.py:parse_stream_helper"}, {"id": "metagpt/provider/general_api_requestor.py:parse_stream"}, {"id": "metagpt/provider/general_api_requestor.py:asyncio"}, {"id": "metagpt/provider/general_api_requestor.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['AsyncGenerator', 'Generator', 'Iterator', 'Tuple', 'Union']"}, {"id": "metagpt/provider/general_api_requestor.py:aiohttp"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:requests"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_requestor.py:module:metagpt.logs"}, {"id": "metagpt/provider/general_api_requestor.py:names:['logger']"}, {"id": "metagpt/provider/general_api_requestor.py:module:metagpt.provider.general_api_base"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"id": "metagpt/provider/general_api_requestor.py:names:['APIRequestor']"}, {"id": "{\"lineno\":15,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":35,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":104,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralAPIRequestor\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:__init__"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_user_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_system_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg"}, {"id": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp"}, {"id": "metagpt/provider/base_llm.py:ast.Constant:\n@Time : 2023/5/5 23:04\n@Author : alexanderwu\n@File : base_llm.py\n@Desc : mashenquan, 2023/8/22. + try catch\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:04\\n@Author : alexanderwu\\n@File : base_llm.py\\n@Desc : mashenquan, 2023/8/22. + try catch\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:json"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/provider/base_llm.py:module:abc"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/provider/base_llm.py:module:typing"}, {"id": "metagpt/provider/base_llm.py:names:['Optional', 'Union']"}, {"id": "metagpt/provider/base_llm.py:module:openai"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"id": "metagpt/provider/base_llm.py:names:['AsyncOpenAI']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.configs.llm_config"}, {"id": "metagpt/provider/base_llm.py:names:['LLMConfig']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.logs"}, {"id": "metagpt/provider/base_llm.py:names:['logger']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.schema"}, {"id": "metagpt/provider/base_llm.py:names:['Message']"}, {"id": "metagpt/provider/base_llm.py:module:metagpt.utils.cost_manager"}, {"id": "metagpt/provider/base_llm.py:names:['CostManager']"}, {"id": "{\"lineno\":21,\"end_lineno\":151,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/constant.py"}, {"id": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA"}, {"id": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE"}, {"id": "{\"lineno\":3,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_FUNCTION_SCHEMA\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_TOOL_CHOICE\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion"}, {"id": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream"}, {"id": "metagpt/provider/zhipuai_api.py:module:enum"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['Enum']"}, {"id": "metagpt/provider/zhipuai_api.py:openai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:zhipuai"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai_api.py:module:requests"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['ConnectionError']"}, {"id": "metagpt/provider/zhipuai_api.py:module:tenacity"}, {"id": "metagpt/provider/zhipuai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.configs.llm_config"}, {"id": "metagpt/provider/zhipuai_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['log_llm_stream', 'logger']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['BaseLLM']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "metagpt/provider/zhipuai_api.py:names:['register_provider']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.openai_api"}, {"id": "metagpt/provider/zhipuai_api.py:names:['log_and_reraise']"}, {"id": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.zhipuai.zhipu_model_api"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"id": "metagpt/provider/zhipuai_api.py:names:['ZhiPuModelAPI']"}, {"id": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuEvent\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuAILLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:__init__"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response"}, {"id": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line"}, {"id": "metagpt/provider/general_api_base.py:_console_log_level"}, {"id": "metagpt/provider/general_api_base.py:log_debug"}, {"id": "metagpt/provider/general_api_base.py:log_info"}, {"id": "metagpt/provider/general_api_base.py:log_warn"}, {"id": "metagpt/provider/general_api_base.py:logfmt"}, {"id": "metagpt/provider/general_api_base.py:_build_api_url"}, {"id": "metagpt/provider/general_api_base.py:_requests_proxies_arg"}, {"id": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg"}, {"id": "metagpt/provider/general_api_base.py:_make_session"}, {"id": "metagpt/provider/general_api_base.py:parse_stream_helper"}, {"id": "metagpt/provider/general_api_base.py:parse_stream"}, {"id": "metagpt/provider/general_api_base.py:parse_stream_async"}, {"id": "metagpt/provider/general_api_base.py:aiohttp_session"}, {"id": "metagpt/provider/general_api_base.py:logger"}, {"id": "metagpt/provider/general_api_base.py:TIMEOUT_SECS"}, {"id": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS"}, {"id": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES"}, {"id": "metagpt/provider/general_api_base.py:_thread_context"}, {"id": "metagpt/provider/general_api_base.py:LLM_LOG"}, {"id": "metagpt/provider/general_api_base.py:api_key_to_header"}, {"id": "metagpt/provider/general_api_base.py:asyncio"}, {"id": "metagpt/provider/general_api_base.py:json"}, {"id": "metagpt/provider/general_api_base.py:os"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:platform"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:re"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:sys"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:threading"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:time"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:module:contextlib"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['asynccontextmanager']"}, {"id": "metagpt/provider/general_api_base.py:module:enum"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['Enum']"}, {"id": "metagpt/provider/general_api_base.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['AsyncGenerator', 'AsyncIterator', 'Dict', 'Iterator', 'Optional', 'Tuple', 'Union', 'overload']"}, {"id": "metagpt/provider/general_api_base.py:module:urllib.parse"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['urlencode', 'urlsplit', 'urlunsplit']"}, {"id": "metagpt/provider/general_api_base.py:aiohttp"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:requests"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:sys.version_info"}, {"id": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.If\",\"tokens\":[\"sys.version_info\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:logging"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.Import\",\"tokens\":[\"logging\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:openai"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"id": "metagpt/provider/general_api_base.py:module:openai"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"id": "metagpt/provider/general_api_base.py:names:['version']"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TIMEOUT_SECS\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_SESSION_LIFETIME_SECS\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_CONNECTION_RETRIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"_thread_context\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_LOG\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":68,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ApiType\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"api_key_to_header\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":82,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_console_log_level\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":89,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_debug\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_info\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_warn\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":120,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"logfmt\"],\"properties\":{}}"}, {"id": "{\"lineno\":123,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIResponse\"],\"properties\":{}}"}, {"id": "{\"lineno\":153,\"end_lineno\":159,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_build_api_url\"],\"properties\":{}}"}, {"id": "{\"lineno\":162,\"end_lineno\":173,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_requests_proxies_arg\"],\"properties\":{}}"}, {"id": "{\"lineno\":176,\"end_lineno\":187,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_aiohttp_proxies_arg\"],\"properties\":{}}"}, {"id": "{\"lineno\":190,\"end_lineno\":196,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_make_session\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":210,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"id": "{\"lineno\":213,\"end_lineno\":217,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"id": "{\"lineno\":220,\"end_lineno\":224,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"parse_stream_async\"],\"properties\":{}}"}, {"id": "{\"lineno\":227,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"APIRequestor\"],\"properties\":{}}"}, {"id": "{\"lineno\":620,\"end_lineno\":622,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aiohttp_session\"],\"properties\":{}}"}, {"id": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__"}, {"id": "metagpt/provider/llm_provider_registry.py:register_provider"}, {"id": "metagpt/provider/llm_provider_registry.py:create_llm_instance"}, {"id": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY"}, {"id": "metagpt/provider/llm_provider_registry.py:ast.Constant:\n@Time : 2023/12/19 17:26\n@Author : alexanderwu\n@File : llm_provider_registry.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 17:26\\n@Author : alexanderwu\\n@File : llm_provider_registry.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/llm_provider_registry.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/llm_provider_registry.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/llm_provider_registry.py:module:metagpt.provider.base_llm"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/provider/llm_provider_registry.py:names:['BaseLLM']"}, {"id": "{\"lineno\":12,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderRegistry\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_provider\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":36,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"create_llm_instance\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_REGISTRY\"],\"properties\":{}}"}, {"id": "metagpt/provider/metagpt_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : metagpt_api.py\n@Desc : MetaGPT LLM provider.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : metagpt_api.py\\n@Desc : MetaGPT LLM provider.\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['LLMType']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.provider"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/metagpt_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/metagpt_api.py:names:['register_provider']"}, {"id": "{\"lineno\":14,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:__init__"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage"}, {"id": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs"}, {"id": "metagpt/provider/open_llm_api.py:module:openai.types"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['CompletionUsage']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['LLMConfig', 'LLMType']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.logs"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['logger']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.provider.llm_provider_registry"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['register_provider']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.provider.openai_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['OpenAILLM']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.utils.cost_manager"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['Costs', 'TokenCostManager']"}, {"id": "metagpt/provider/open_llm_api.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"id": "metagpt/provider/open_llm_api.py:names:['count_message_tokens', 'count_string_tokens']"}, {"id": "{\"lineno\":16,\"end_lineno\":47,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLM\"],\"properties\":{}}"}, {"id": "metagpt/provider/human_provider.py:HumanProvider:__init__"}, {"id": "metagpt/provider/human_provider.py:ast.Constant:\nFilename: MetaGPT/metagpt/provider/human_provider.py\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\nAuthor: garylin2099\n"}, {"id": "{\"lineno\":1,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nFilename: MetaGPT/metagpt/provider/human_provider.py\\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\\nAuthor: garylin2099\\n\"],\"properties\":{}}"}, {"id": "metagpt/provider/human_provider.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['Optional']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.configs.llm_config"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['LLMConfig']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.logs"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/provider/human_provider.py:names:['logger']"}, {"id": "metagpt/provider/human_provider.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/provider/human_provider.py:names:['BaseLLM']"}, {"id": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanProvider\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:json"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"id": "metagpt/provider/zhipuai/async_sse_client.py:names:['Any', 'Iterator']"}, {"id": "{\"lineno\":10,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AsyncSSEClient\"],\"properties\":{}}"}, {"id": "metagpt/provider/zhipuai/__init__.py"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:json"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZhipuAI']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.core._http_client"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZHIPUAI_DEFAULT_TIMEOUT']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.general_api_requestor"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['GeneralAPIRequestor']"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.zhipuai.async_sse_client"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"id": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['AsyncSSEClient']"}, {"id": "{\"lineno\":14,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuModelAPI\"],\"properties\":{}}"}, {"id": "metagpt/provider/postprocess/__init__.py"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['Union']"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:metagpt.utils.repair_llm_raw_output"}, {"id": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"id": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['RepairType', 'extract_content_from_output', 'repair_llm_raw_output', 'retry_parse_json_text']"}, {"id": "{\"lineno\":15,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BasePostProcessPlugin\"],\"properties\":{}}"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:module:typing"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['Union']"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:module:metagpt.provider.postprocess.base_postprocess_plugin"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"id": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['BasePostProcessPlugin']"}, {"id": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"llm_output_postprocess\"],\"properties\":{}}"}, {"id": "metagpt/management/__init__.py"}, {"id": "metagpt/management/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:58\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:58\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:SkillManager:__init__"}, {"id": "metagpt/management/skill_manager.py:Skill"}, {"id": "metagpt/management/skill_manager.py:ast.Constant:\n@Time : 2023/6/5 01:44\n@Author : alexanderwu\n@File : skill_manager.py\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/5 01:44\\n@Author : alexanderwu\\n@File : skill_manager.py\\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\\n\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['Action']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.const"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['PROMPT_PATH']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.document_store.chromadb_store"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['ChromaStore']"}, {"id": "metagpt/management/skill_manager.py:module:metagpt.logs"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/management/skill_manager.py:names:['logger']"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Assign\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"id": "{\"lineno\":17,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillManager\"],\"properties\":{}}"}, {"id": "metagpt/management/skill_manager.py:__name__:__main__"}, {"id": "{\"lineno\":77,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:Engineer:__init__"}, {"id": "metagpt/roles/engineer.py:Engineer:_parse_tasks"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr"}, {"id": "metagpt/roles/engineer.py:Engineer:_act"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_write_code"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_summarize"}, {"id": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change"}, {"id": "metagpt/roles/engineer.py:Engineer:_is_pass"}, {"id": "metagpt/roles/engineer.py:Engineer:_think"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_coding_context"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_coding_doc"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_code_actions"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions"}, {"id": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action"}, {"id": "metagpt/roles/engineer.py:IS_PASS_PROMPT"}, {"id": "metagpt/roles/engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\n distribution feature for message filtering.\n 2. Consolidate message reception and processing logic within `_observe`.\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\n 4. Supplemented the external transmission of internal messages.\n@Modified By: mashenquan, 2023-11-27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":18,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\\n distribution feature for message filtering.\\n 2. Consolidate message reception and processing logic within `_observe`.\\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\\n 4. Supplemented the external transmission of internal messages.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:module:__future__"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['annotations']"}, {"id": "metagpt/roles/engineer.py:json"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:os"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/roles/engineer.py:module:collections"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['defaultdict']"}, {"id": "metagpt/roles/engineer.py:module:pathlib"}, {"id": "metagpt/roles/engineer.py:names:['Path']"}, {"id": "metagpt/roles/engineer.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Set']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Action', 'WriteCode', 'WriteCodeReview', 'WriteTasks']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.fix_bug"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['FixBug']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['REFINED_TASK_LIST', 'TASK_LIST']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.summarize_code"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['SummarizeCode']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.actions.write_code_plan_and_change_an"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['WriteCodePlanAndChange']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.const"}, {"id": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.logs"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['logger']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.roles"}, {"id": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['Role']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.schema"}, {"id": "{\"lineno\":42,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'Document', 'Documents', 'Message']"}, {"id": "metagpt/roles/engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"id": "metagpt/roles/engineer.py:names:['any_to_name', 'any_to_str', 'any_to_str_set']"}, {"id": "{\"lineno\":52,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_PASS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":360,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Engineer\"],\"properties\":{}}"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:__init__"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_act"}, {"id": "metagpt/roles/qa_engineer.py:QaEngineer:_observe"}, {"id": "metagpt/roles/qa_engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : qa_engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\n@Modified By: mashenquan, 2023-11-27.\n 1. Following the think-act principle, solidify the task parameters when creating the\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\n to using file references.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : qa_engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\\n to using file references.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.actions"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['DebugError', 'RunCode', 'WriteTest']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.actions.summarize_code"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['SummarizeCode']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.const"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['MESSAGE_ROUTE_TO_NONE']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.logs"}, {"id": "metagpt/roles/qa_engineer.py:names:['logger']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.roles"}, {"id": "metagpt/roles/qa_engineer.py:names:['Role']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.schema"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['Document', 'Message', 'RunCodeContext', 'TestingContext']"}, {"id": "metagpt/roles/qa_engineer.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"id": "metagpt/roles/qa_engineer.py:names:['any_to_str_set', 'parse_recipient']"}, {"id": "{\"lineno\":27,\"end_lineno\":181,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QaEngineer\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:Teacher:__init__"}, {"id": "metagpt/roles/teacher.py:Teacher:_think"}, {"id": "metagpt/roles/teacher.py:Teacher:_react"}, {"id": "metagpt/roles/teacher.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : teacher.py\n@Desc : Used by Agent Store\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : teacher.py\\n@Desc : Used by Agent Store\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/teacher.py:re"}, {"id": "metagpt/roles/teacher.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['UserRequirement']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.actions.write_teaching_plan"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['TeachingPlanBlock', 'WriteTeachingPlanPart']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.logs"}, {"id": "metagpt/roles/teacher.py:names:['logger']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.roles"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['Role']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['Message']"}, {"id": "metagpt/roles/teacher.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"id": "metagpt/roles/teacher.py:names:['any_to_str', 'awrite']"}, {"id": "{\"lineno\":22,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Teacher\"],\"properties\":{}}"}, {"id": "metagpt/roles/product_manager.py:ProductManager:__init__"}, {"id": "metagpt/roles/product_manager.py:ProductManager:_think"}, {"id": "metagpt/roles/product_manager.py:ProductManager:_observe"}, {"id": "metagpt/roles/product_manager.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : product_manager.py\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : product_manager.py\\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['UserRequirement', 'WritePRD']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.actions.prepare_documents"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['PrepareDocuments']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['Role']"}, {"id": "metagpt/roles/product_manager.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"id": "metagpt/roles/product_manager.py:names:['any_to_name']"}, {"id": "{\"lineno\":16,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProductManager\"],\"properties\":{}}"}, {"id": "metagpt/roles/sales.py:Sales:__init__"}, {"id": "metagpt/roles/sales.py:Sales:_set_store"}, {"id": "metagpt/roles/sales.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/sales.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Optional']"}, {"id": "metagpt/roles/sales.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Field']"}, {"id": "metagpt/roles/sales.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"id": "metagpt/roles/sales.py:names:['SearchAndSummarize', 'UserRequirement']"}, {"id": "metagpt/roles/sales.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/roles/sales.py:names:['BaseStore']"}, {"id": "metagpt/roles/sales.py:module:metagpt.roles"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/sales.py:names:['Role']"}, {"id": "metagpt/roles/sales.py:module:metagpt.tools"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/roles/sales.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":19,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Sales\"],\"properties\":{}}"}, {"id": "metagpt/roles/searcher.py:Searcher:__init__"}, {"id": "metagpt/roles/searcher.py:Searcher:_act_sp"}, {"id": "metagpt/roles/searcher.py:Searcher:_act"}, {"id": "metagpt/roles/searcher.py:ast.Constant:\n@Time : 2023/5/23 17:25\n@Author : alexanderwu\n@File : searcher.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:25\\n@Author : alexanderwu\\n@File : searcher.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/searcher.py:module:pydantic"}, {"id": "metagpt/roles/searcher.py:names:['Field']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['SearchAndSummarize']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['ActionNode']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['ActionOutput']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.logs"}, {"id": "metagpt/roles/searcher.py:names:['logger']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.roles"}, {"id": "metagpt/roles/searcher.py:names:['Role']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.schema"}, {"id": "metagpt/roles/searcher.py:names:['Message']"}, {"id": "metagpt/roles/searcher.py:module:metagpt.tools"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/roles/searcher.py:names:['SearchEngineType']"}, {"id": "{\"lineno\":22,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Searcher\"],\"properties\":{}}"}, {"id": "metagpt/roles/assistant.py:Assistant:__init__"}, {"id": "metagpt/roles/assistant.py:Assistant:_plan"}, {"id": "metagpt/roles/assistant.py:ast.Constant:\n@Time : 2023/8/7\n@Author : mashenquan\n@File : assistant.py\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\n make these symbols configurable and standardized, making the process of building flows more convenient.\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\n configuration file.\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\n indicates that further reasoning cannot continue.\n\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/7\\n@Author : mashenquan\\n@File : assistant.py\\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\\n make these symbols configurable and standardized, making the process of building flows more convenient.\\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\\n configuration file.\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\\n indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/assistant.py:module:enum"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Enum']"}, {"id": "metagpt/roles/assistant.py:module:pathlib"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Path']"}, {"id": "metagpt/roles/assistant.py:module:typing"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Optional']"}, {"id": "metagpt/roles/assistant.py:module:pydantic"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Field']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.actions.skill_action"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['ArgumentsParingAction', 'SkillAction']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.actions.talk_action"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['TalkAction']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.learn.skill_loader"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['SkillsDeclaration']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.logs"}, {"id": "metagpt/roles/assistant.py:names:['logger']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.memory.brain_memory"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['BrainMemory']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.roles"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Role']"}, {"id": "metagpt/roles/assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/assistant.py:names:['Message']"}, {"id": "{\"lineno\":32,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageType\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Assistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/__init__.py"}, {"id": "metagpt/roles/__init__.py:__all__"}, {"id": "metagpt/roles/__init__.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Role']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.architect"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Architect']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.project_manager"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['ProjectManager']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.product_manager"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['ProductManager']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.engineer"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Engineer']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.qa_engineer"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['QaEngineer']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.searcher"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Searcher']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.sales"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['Sales']"}, {"id": "metagpt/roles/__init__.py:module:metagpt.roles.customer_service"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"id": "metagpt/roles/__init__.py:names:['CustomerService']"}, {"id": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:Role:__init__"}, {"id": "metagpt/roles/role.py:Role:_reset"}, {"id": "metagpt/roles/role.py:Role:_setting"}, {"id": "metagpt/roles/role.py:Role:_check_actions"}, {"id": "metagpt/roles/role.py:Role:_init_action"}, {"id": "metagpt/roles/role.py:Role:_set_react_mode"}, {"id": "metagpt/roles/role.py:Role:_watch"}, {"id": "metagpt/roles/role.py:Role:_set_state"}, {"id": "metagpt/roles/role.py:Role:_get_prefix"}, {"id": "metagpt/roles/role.py:Role:_think"}, {"id": "metagpt/roles/role.py:Role:_act"}, {"id": "metagpt/roles/role.py:Role:_observe"}, {"id": "metagpt/roles/role.py:Role:_react"}, {"id": "metagpt/roles/role.py:Role:_act_by_order"}, {"id": "metagpt/roles/role.py:Role:_plan_and_act"}, {"id": "metagpt/roles/role.py:PREFIX_TEMPLATE"}, {"id": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE"}, {"id": "metagpt/roles/role.py:STATE_TEMPLATE"}, {"id": "metagpt/roles/role.py:ROLE_TEMPLATE"}, {"id": "metagpt/roles/role.py:ast.Constant:\n@Time : 2023/5/11 14:42\n@Author : alexanderwu\n@File : role.py\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\n consolidated within the `_observe` function.\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\n they've subscribed to through the `subscribed_tags` property.\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":21,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:42\\n@Author : alexanderwu\\n@File : role.py\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\\n consolidated within the `_observe` function.\\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\\n they've subscribed to through the `subscribed_tags` property.\\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/role.py:module:__future__"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/roles/role.py:names:['annotations']"}, {"id": "metagpt/roles/role.py:module:enum"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/role.py:names:['Enum']"}, {"id": "metagpt/roles/role.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"id": "metagpt/roles/role.py:names:['Any', 'Iterable', 'Optional', 'Set', 'Type', 'Union']"}, {"id": "metagpt/roles/role.py:module:pydantic"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"id": "metagpt/roles/role.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/roles/role.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/roles/role.py:names:['ActionNode']"}, {"id": "metagpt/roles/role.py:module:metagpt.actions.add_requirement"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/role.py:names:['UserRequirement']"}, {"id": "metagpt/roles/role.py:module:metagpt.context_mixin"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"id": "metagpt/roles/role.py:names:['ContextMixin']"}, {"id": "metagpt/roles/role.py:module:metagpt.logs"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/roles/role.py:names:['logger']"}, {"id": "metagpt/roles/role.py:module:metagpt.memory"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"id": "metagpt/roles/role.py:names:['Memory']"}, {"id": "metagpt/roles/role.py:module:metagpt.provider"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"id": "metagpt/roles/role.py:names:['HumanProvider']"}, {"id": "metagpt/roles/role.py:module:metagpt.schema"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"id": "metagpt/roles/role.py:names:['Message', 'MessageQueue', 'SerializationMixin']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"id": "metagpt/roles/role.py:names:['any_to_name', 'any_to_str', 'role_raise_decorator']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/roles/role.py:names:['ProjectRepo']"}, {"id": "metagpt/roles/role.py:module:metagpt.utils.repair_llm_raw_output"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"id": "metagpt/roles/role.py:names:['extract_state_value_from_output']"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONSTRAINT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":45,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"STATE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ROLE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":80,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleReactMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleContext\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":556,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Role\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:ast.Constant:\n@Time : 2023/9/21 14:10:05\n@Author : Stitch-z\n@File : invoice_ocr_assistant.py\n"}, {"id": "{\"lineno\":4,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 14:10:05\\n@Author : Stitch-z\\n@File : invoice_ocr_assistant.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:json"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:pathlib"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Path']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:typing"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Optional']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:pandas as pd"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['BaseModel']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.actions.invoice_ocr"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['GenerateTable', 'InvoiceOCR', 'ReplyQuestion']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.prompts.invoice_ocr"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['INVOICE_OCR_SUCCESS']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/invoice_ocr_assistant.py:names:['Message']"}, {"id": "{\"lineno\":23,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoicePath\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OCRResults\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceData\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyData\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCRAssistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/architect.py:Architect:__init__"}, {"id": "metagpt/roles/architect.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : architect.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : architect.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/architect.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"id": "metagpt/roles/architect.py:names:['WritePRD']"}, {"id": "metagpt/roles/architect.py:module:metagpt.actions.design_api"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"id": "metagpt/roles/architect.py:names:['WriteDesign']"}, {"id": "metagpt/roles/architect.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/architect.py:names:['Role']"}, {"id": "{\"lineno\":14,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Architect\"],\"properties\":{}}"}, {"id": "metagpt/roles/customer_service.py:DESC"}, {"id": "metagpt/roles/customer_service.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "metagpt/roles/customer_service.py:module:typing"}, {"id": "metagpt/roles/customer_service.py:names:['Optional']"}, {"id": "metagpt/roles/customer_service.py:module:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['Field']"}, {"id": "metagpt/roles/customer_service.py:module:metagpt.document_store.base_store"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['BaseStore']"}, {"id": "metagpt/roles/customer_service.py:module:metagpt.roles"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"id": "metagpt/roles/customer_service.py:names:['Sales']"}, {"id": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESC\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomerService\"],\"properties\":{}}"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:__init__"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:_think"}, {"id": "metagpt/roles/sk_agent.py:SkAgent:_act"}, {"id": "metagpt/roles/sk_agent.py:ast.Constant:\n@Time : 2023/9/13 12:23\n@Author : femto Zheng\n@File : sk_agent.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\n distribution feature for message filtering.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:23\\n@Author : femto Zheng\\n@File : sk_agent.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\\n distribution feature for message filtering.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/sk_agent.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Any', 'Callable', 'Union']"}, {"id": "metagpt/roles/sk_agent.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Field']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Kernel']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['SequentialPlanner']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.action_planner.action_planner"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['ActionPlanner']"}, {"id": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.basic_planner"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['BasicPlanner', 'Plan']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.actions"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['UserRequirement']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.actions.execute_task"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['ExecuteTask']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.logs"}, {"id": "metagpt/roles/sk_agent.py:names:['logger']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.roles"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['Role']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.schema"}, {"id": "metagpt/roles/sk_agent.py:names:['Message']"}, {"id": "metagpt/roles/sk_agent.py:module:metagpt.utils.make_sk_kernel"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"id": "metagpt/roles/sk_agent.py:names:['make_sk_kernel']"}, {"id": "{\"lineno\":26,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkAgent\"],\"properties\":{}}"}, {"id": "metagpt/roles/prompt.py:PREFIX"}, {"id": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS"}, {"id": "metagpt/roles/prompt.py:SUFFIX"}, {"id": "metagpt/roles/prompt.py:ast.Constant:\n@Time : 2023/5/18 22:43\n@Author : alexanderwu\n@File : prompt.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 22:43\\n@Author : alexanderwu\\n@File : prompt.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/prompt.py:module:enum"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/roles/prompt.py:names:['Enum']"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_INSTRUCTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUFFIX\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PromptString\"],\"properties\":{}}"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory"}, {"id": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act"}, {"id": "metagpt/roles/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/tutorial_assistant.py:module:datetime"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['datetime']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:typing"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Dict']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.actions.write_tutorial"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['WriteContent', 'WriteDirectory']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.const"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['TUTORIAL_PATH']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.logs"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['logger']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['Message']"}, {"id": "metagpt/roles/tutorial_assistant.py:module:metagpt.utils.file"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"id": "metagpt/roles/tutorial_assistant.py:names:['File']"}, {"id": "{\"lineno\":20,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TutorialAssistant\"],\"properties\":{}}"}, {"id": "metagpt/roles/project_manager.py:ProjectManager:__init__"}, {"id": "metagpt/roles/project_manager.py:ast.Constant:\n@Time : 2023/5/11 15:04\n@Author : alexanderwu\n@File : project_manager.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 15:04\\n@Author : alexanderwu\\n@File : project_manager.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.actions"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"id": "metagpt/roles/project_manager.py:names:['WriteTasks']"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.actions.design_api"}, {"id": "metagpt/roles/project_manager.py:names:['WriteDesign']"}, {"id": "metagpt/roles/project_manager.py:module:metagpt.roles.role"}, {"id": "metagpt/roles/project_manager.py:names:['Role']"}, {"id": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectManager\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:Researcher:__init__"}, {"id": "metagpt/roles/researcher.py:Researcher:_think"}, {"id": "metagpt/roles/researcher.py:Researcher:_act"}, {"id": "metagpt/roles/researcher.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:asyncio"}, {"id": "metagpt/roles/researcher.py:re"}, {"id": "metagpt/roles/researcher.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['BaseModel']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['Action', 'CollectLinks', 'ConductResearch', 'WebBrowseAndSummarize']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.actions.research"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['get_research_system_text']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['RESEARCH_PATH']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.logs"}, {"id": "metagpt/roles/researcher.py:names:['logger']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.roles.role"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"id": "metagpt/roles/researcher.py:names:['Role', 'RoleReactMode']"}, {"id": "metagpt/roles/researcher.py:module:metagpt.schema"}, {"id": "metagpt/roles/researcher.py:names:['Message']"}, {"id": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Report\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Researcher\"],\"properties\":{}}"}, {"id": "metagpt/roles/researcher.py:__name__:__main__"}, {"id": "{\"lineno\":119,\"end_lineno\":126,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py"}, {"id": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping"}, {"id": "metagpt/utils/serialize.py:actionoutput_mapping_to_str"}, {"id": "metagpt/utils/serialize.py:actionoutput_str_to_mapping"}, {"id": "metagpt/utils/serialize.py:serialize_message"}, {"id": "metagpt/utils/serialize.py:deserialize_message"}, {"id": "metagpt/utils/serialize.py:copy"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py:pickle"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pickle\"],\"properties\":{}}"}, {"id": "metagpt/utils/serialize.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"id": "metagpt/utils/serialize.py:names:['import_class']"}, {"id": "{\"lineno\":11,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutout_schema_to_mapping\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":47,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_mapping_to_str\"],\"properties\":{}}"}, {"id": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_str_to_mapping\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":71,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_message\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"deserialize_message\"],\"properties\":{}}"}, {"id": "metagpt/utils/project_repo.py:DocFileRepositories:__init__"}, {"id": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__"}, {"id": "metagpt/utils/project_repo.py:ProjectRepo:__init__"}, {"id": "metagpt/utils/project_repo.py:ast.Constant:\n@Time : 2024/1/8\n@Author : mashenquan\n@File : project_repo.py\n@Desc : Wrapper for GitRepository and FileRepository of project.\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/8\\n@Author : mashenquan\\n@File : project_repo.py\\n@Desc : Wrapper for GitRepository and FileRepository of project.\\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/project_repo.py:module:__future__"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['annotations']"}, {"id": "metagpt/utils/project_repo.py:module:pathlib"}, {"id": "metagpt/utils/project_repo.py:names:['Path']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['CLASS_VIEW_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_PDF_FILE_REPO', 'CODE_SUMMARIES_FILE_REPO', 'CODE_SUMMARIES_PDF_FILE_REPO', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'DATA_API_DESIGN_FILE_REPO', 'DOCS_FILE_REPO', 'GRAPH_REPO_FILE_REPO', 'PRD_PDF_FILE_REPO', 'PRDS_FILE_REPO', 'REQUIREMENT_FILENAME', 'RESOURCES_FILE_REPO', 'SD_OUTPUT_FILE_REPO', 'SEQ_FLOW_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'SYSTEM_DESIGN_PDF_FILE_REPO', 'TASK_FILE_REPO', 'TASK_PDF_FILE_REPO', 'TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO', 'VISUAL_GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['FileRepository']"}, {"id": "metagpt/utils/project_repo.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/utils/project_repo.py:names:['GitRepository']"}, {"id": "{\"lineno\":42,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocFileRepositories\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResourceFileRepositories\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":142,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectRepo\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py"}, {"id": "metagpt/utils/mmdc_playwright.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_playwright.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : Steven Lee\n@File : mmdc_playwright.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : Steven Lee\\n@File : mmdc_playwright.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py:os"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_playwright.py:module:urllib.parse"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['urljoin']"}, {"id": "metagpt/utils/mmdc_playwright.py:module:playwright.async_api"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['async_playwright']"}, {"id": "metagpt/utils/mmdc_playwright.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_playwright.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":121,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:DependencyFile:__init__"}, {"id": "metagpt/utils/dependency_file.py:ast.Constant:\n@Time : 2023/11/22\n@Author : mashenquan\n@File : dependency_file.py\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/22\\n@Author : mashenquan\\n@File : dependency_file.py\\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:module:__future__"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['annotations']"}, {"id": "metagpt/utils/dependency_file.py:json"}, {"id": "metagpt/utils/dependency_file.py:re"}, {"id": "metagpt/utils/dependency_file.py:module:pathlib"}, {"id": "metagpt/utils/dependency_file.py:names:['Path']"}, {"id": "metagpt/utils/dependency_file.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['Set']"}, {"id": "metagpt/utils/dependency_file.py:aiofiles"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/dependency_file.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['aread']"}, {"id": "metagpt/utils/dependency_file.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/utils/dependency_file.py:names:['handle_exception']"}, {"id": "{\"lineno\":22,\"end_lineno\":108,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DependencyFile\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py"}, {"id": "metagpt/utils/make_sk_kernel.py:make_sk_kernel"}, {"id": "metagpt/utils/make_sk_kernel.py:ast.Constant:\n@Time : 2023/9/13 12:29\n@Author : femto Zheng\n@File : make_sk_kernel.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:29\\n@Author : femto Zheng\\n@File : make_sk_kernel.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py:semantic_kernel as sk"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"semantic_kernel as sk\"],\"properties\":{}}"}, {"id": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion"}, {"id": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['AzureChatCompletion']"}, {"id": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion"}, {"id": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['OpenAIChatCompletion']"}, {"id": "metagpt/utils/make_sk_kernel.py:module:metagpt.config2"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/utils/make_sk_kernel.py:names:['config']"}, {"id": "{\"lineno\":19,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_sk_kernel\"],\"properties\":{}}"}, {"id": "metagpt/utils/token_counter.py"}, {"id": "metagpt/utils/token_counter.py:count_message_tokens"}, {"id": "metagpt/utils/token_counter.py:count_string_tokens"}, {"id": "metagpt/utils/token_counter.py:get_max_completion_tokens"}, {"id": "metagpt/utils/token_counter.py:TOKEN_COSTS"}, {"id": "metagpt/utils/token_counter.py:TOKEN_MAX"}, {"id": "metagpt/utils/token_counter.py:ast.Constant:\n@Time : 2023/5/18 00:40\n@Author : alexanderwu\n@File : token_counter.py\nref1: https://openai.com/pricing\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\nref5: https://ai.google.dev/models/gemini\n"}, {"id": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 00:40\\n@Author : alexanderwu\\n@File : token_counter.py\\nref1: https://openai.com/pricing\\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\\nref5: https://ai.google.dev/models/gemini\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/token_counter.py:tiktoken"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"tiktoken\"],\"properties\":{}}"}, {"id": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_COSTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_MAX\"],\"properties\":{}}"}, {"id": "{\"lineno\":64,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_message_tokens\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":138,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_string_tokens\"],\"properties\":{}}"}, {"id": "{\"lineno\":141,\"end_lineno\":153,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_max_completion_tokens\"],\"properties\":{}}"}, {"id": "metagpt/utils/embedding.py"}, {"id": "metagpt/utils/embedding.py:get_embedding"}, {"id": "metagpt/utils/embedding.py:ast.Constant:\n@Time : 2024/1/4 20:58\n@Author : alexanderwu\n@File : embedding.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 20:58\\n@Author : alexanderwu\\n@File : embedding.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/embedding.py:module:langchain_community.embeddings"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"id": "metagpt/utils/embedding.py:names:['OpenAIEmbeddings']"}, {"id": "metagpt/utils/embedding.py:module:metagpt.config2"}, {"id": "metagpt/utils/embedding.py:names:['config']"}, {"id": "{\"lineno\":13,\"end_lineno\":16,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_embedding\"],\"properties\":{}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_json_format"}, {"id": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json"}, {"id": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry"}, {"id": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text"}, {"id": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output"}, {"id": "metagpt/utils/repair_llm_raw_output.py:copy"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:enum"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['Enum']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['Callable', 'Union']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:regex as re"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"regex as re\"],\"properties\":{}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:tenacity"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['RetryCallState', 'retry', 'stop_after_attempt', 'wait_fixed']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.config2"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['config']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.logs"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['logger']"}, {"id": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.utils.custom_decoder"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"id": "metagpt/utils/repair_llm_raw_output.py:names:['CustomDecoder']"}, {"id": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepairType\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":41,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_case_sensitivity\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":64,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_special_character_missing\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":105,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_required_key_pair_missing\"],\"properties\":{}}"}, {"id": "{\"lineno\":108,\"end_lineno\":132,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_json_format\"],\"properties\":{}}"}, {"id": "{\"lineno\":135,\"end_lineno\":146,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_repair_llm_raw_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":170,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_llm_raw_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":173,\"end_lineno\":220,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_invalid_json\"],\"properties\":{}}"}, {"id": "{\"lineno\":223,\"end_lineno\":257,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"run_after_exp_and_passon_next_retry\"],\"properties\":{}}"}, {"id": "{\"lineno\":265,\"end_lineno\":279,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"retry_parse_json_text\"],\"properties\":{}}"}, {"id": "{\"lineno\":282,\"end_lineno\":312,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_content_from_output\"],\"properties\":{}}"}, {"id": "{\"lineno\":315,\"end_lineno\":328,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_state_value_from_output\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py"}, {"id": "metagpt/utils/mermaid.py:mermaid_to_file"}, {"id": "metagpt/utils/mermaid.py:MMC1"}, {"id": "metagpt/utils/mermaid.py:MMC2"}, {"id": "metagpt/utils/mermaid.py:ast.Constant:\n@Time : 2023/7/4 10:53\n@Author : alexanderwu alitrack\n@File : mermaid.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/4 10:53\\n@Author : alexanderwu alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mermaid.py:asyncio"}, {"id": "metagpt/utils/mermaid.py:os"}, {"id": "metagpt/utils/mermaid.py:module:pathlib"}, {"id": "metagpt/utils/mermaid.py:names:['Path']"}, {"id": "metagpt/utils/mermaid.py:aiofiles"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.config2"}, {"id": "metagpt/utils/mermaid.py:names:['config']"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.logs"}, {"id": "metagpt/utils/mermaid.py:names:['logger']"}, {"id": "metagpt/utils/mermaid.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"id": "metagpt/utils/mermaid.py:names:['check_cmd_exists']"}, {"id": "{\"lineno\":19,\"end_lineno\":90,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC1\"],\"properties\":{}}"}, {"id": "{\"lineno\":127,\"end_lineno\":145,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC2\"],\"properties\":{}}"}, {"id": "metagpt/utils/parse_html.py:get_html_content"}, {"id": "metagpt/utils/parse_html.py:_get_soup"}, {"id": "metagpt/utils/parse_html.py:module:__future__"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['annotations']"}, {"id": "metagpt/utils/parse_html.py:module:typing"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['Generator', 'Optional']"}, {"id": "metagpt/utils/parse_html.py:module:urllib.parse"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['urljoin', 'urlparse']"}, {"id": "metagpt/utils/parse_html.py:module:bs4"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['BeautifulSoup']"}, {"id": "metagpt/utils/parse_html.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"id": "metagpt/utils/parse_html.py:names:['BaseModel', 'PrivateAttr']"}, {"id": "{\"lineno\":11,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebPage\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":45,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_html_content\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_soup\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view"}, {"id": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name"}, {"id": "metagpt/utils/visual_graph_repo.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : visualize_graph.py\n@Desc : Visualize the graph.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : visualize_graph.py\\n@Desc : Visualize the graph.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:module:__future__"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['annotations']"}, {"id": "metagpt/utils/visual_graph_repo.py:re"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/visual_graph_repo.py:module:abc"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['ABC']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:pathlib"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['Path']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['List', 'Optional']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:pydantic"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.const"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.schema"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['UMLClassView']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['split_namespace']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['DiGraphRepository']"}, {"id": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/utils/visual_graph_repo.py:names:['GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":25,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"_VisualClassView\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualGraphRepo\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualDiGraphRepo\"],\"properties\":{}}"}, {"id": "metagpt/utils/special_tokens.py"}, {"id": "metagpt/utils/special_tokens.py:MSG_SEP"}, {"id": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Assign\",\"tokens\":[\"MSG_SEP\"],\"properties\":{}}"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILENAME_CODE_SEP\"],\"properties\":{}}"}, {"id": "metagpt/utils/ahttp_client.py"}, {"id": "metagpt/utils/ahttp_client.py:apost"}, {"id": "metagpt/utils/ahttp_client.py:apost_stream"}, {"id": "metagpt/utils/ahttp_client.py:module:typing"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/utils/ahttp_client.py:names:['Any', 'Mapping', 'Optional', 'Union']"}, {"id": "metagpt/utils/ahttp_client.py:aiohttp"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"id": "metagpt/utils/ahttp_client.py:module:aiohttp.client"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"id": "metagpt/utils/ahttp_client.py:names:['DEFAULT_TIMEOUT']"}, {"id": "{\"lineno\":11,\"end_lineno\":28,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":49,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost_stream\"],\"properties\":{}}"}, {"id": "metagpt/utils/__init__.py"}, {"id": "metagpt/utils/__init__.py:__all__"}, {"id": "metagpt/utils/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:50\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:50\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.read_document"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['read_docx']"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.singleton"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['Singleton']"}, {"id": "metagpt/utils/__init__.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"id": "metagpt/utils/__init__.py:names:['TOKEN_COSTS', 'count_message_tokens', 'count_string_tokens']"}, {"id": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py"}, {"id": "metagpt/utils/mmdc_ink.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_ink.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mermaid.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py:base64"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_ink.py:module:aiohttp"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"id": "metagpt/utils/mmdc_ink.py:names:['ClientError', 'ClientSession']"}, {"id": "metagpt/utils/mmdc_ink.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_ink.py:names:['logger']"}, {"id": "{\"lineno\":15,\"end_lineno\":41,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__"}, {"id": "metagpt/utils/di_graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : di_graph_repository.py\n@Desc : Graph repository based on DiGraph\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : di_graph_repository.py\\n@Desc : Graph repository based on DiGraph\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:__future__"}, {"id": "metagpt/utils/di_graph_repository.py:names:['annotations']"}, {"id": "metagpt/utils/di_graph_repository.py:json"}, {"id": "metagpt/utils/di_graph_repository.py:module:pathlib"}, {"id": "metagpt/utils/di_graph_repository.py:names:['Path']"}, {"id": "metagpt/utils/di_graph_repository.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['List']"}, {"id": "metagpt/utils/di_graph_repository.py:networkx"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"networkx\"],\"properties\":{}}"}, {"id": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['aread', 'awrite']"}, {"id": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"id": "metagpt/utils/di_graph_repository.py:names:['SPO', 'GraphRepository']"}, {"id": "{\"lineno\":21,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DiGraphRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:ast.Constant:\n@Time : 2024/1/4 10:18\n@Author : alexanderwu\n@File : YamlModel.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 10:18\\n@Author : alexanderwu\\n@File : YamlModel.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:module:pathlib"}, {"id": "metagpt/utils/yaml_model.py:names:['Path']"}, {"id": "metagpt/utils/yaml_model.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"id": "metagpt/utils/yaml_model.py:names:['Dict', 'Optional']"}, {"id": "metagpt/utils/yaml_model.py:yaml"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"id": "metagpt/utils/yaml_model.py:module:pydantic"}, {"id": "metagpt/utils/yaml_model.py:names:['BaseModel', 'model_validator']"}, {"id": "{\"lineno\":15,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModel\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModelWithoutDefault\"],\"properties\":{}}"}, {"id": "metagpt/utils/cost_manager.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : openai.py\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\n"}, {"id": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : openai.py\\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/cost_manager.py:module:typing"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"id": "metagpt/utils/cost_manager.py:names:['NamedTuple']"}, {"id": "metagpt/utils/cost_manager.py:module:pydantic"}, {"id": "metagpt/utils/cost_manager.py:names:['BaseModel']"}, {"id": "metagpt/utils/cost_manager.py:module:metagpt.logs"}, {"id": "metagpt/utils/cost_manager.py:names:['logger']"}, {"id": "metagpt/utils/cost_manager.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"id": "metagpt/utils/cost_manager.py:names:['TOKEN_COSTS']"}, {"id": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Costs\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CostManager\"],\"properties\":{}}"}, {"id": "{\"lineno\":85,\"end_lineno\":99,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TokenCostManager\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : file.py\n@Describe : General file operations.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : file.py\\n@Describe : General file operations.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:module:pathlib"}, {"id": "metagpt/utils/file.py:names:['Path']"}, {"id": "metagpt/utils/file.py:aiofiles"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/file.py:module:metagpt.logs"}, {"id": "metagpt/utils/file.py:names:['logger']"}, {"id": "metagpt/utils/file.py:module:metagpt.utils.exceptions"}, {"id": "metagpt/utils/file.py:names:['handle_exception']"}, {"id": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"File\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:NoMoneyException:__init__"}, {"id": "metagpt/utils/common.py:NoMoneyException:__str__"}, {"id": "metagpt/utils/common.py:check_cmd_exists"}, {"id": "metagpt/utils/common.py:require_python_version"}, {"id": "metagpt/utils/common.py:print_members"}, {"id": "metagpt/utils/common.py:parse_recipient"}, {"id": "metagpt/utils/common.py:get_class_name"}, {"id": "metagpt/utils/common.py:any_to_str"}, {"id": "metagpt/utils/common.py:any_to_str_set"}, {"id": "metagpt/utils/common.py:is_send_to"}, {"id": "metagpt/utils/common.py:any_to_name"}, {"id": "metagpt/utils/common.py:concat_namespace"}, {"id": "metagpt/utils/common.py:split_namespace"}, {"id": "metagpt/utils/common.py:general_after_log"}, {"id": "metagpt/utils/common.py:read_json_file"}, {"id": "metagpt/utils/common.py:write_json_file"}, {"id": "metagpt/utils/common.py:import_class"}, {"id": "metagpt/utils/common.py:import_class_inst"}, {"id": "metagpt/utils/common.py:format_trackback_info"}, {"id": "metagpt/utils/common.py:serialize_decorator"}, {"id": "metagpt/utils/common.py:role_raise_decorator"}, {"id": "metagpt/utils/common.py:aread"}, {"id": "metagpt/utils/common.py:awrite"}, {"id": "metagpt/utils/common.py:read_file_block"}, {"id": "metagpt/utils/common.py:list_files"}, {"id": "metagpt/utils/common.py:parse_json_code_block"}, {"id": "metagpt/utils/common.py:ast.Constant:\n@Time : 2023/4/29 16:07\n@Author : alexanderwu\n@File : common.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n Add generic class-to-string and object-to-string conversion functionality.\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\n responses.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 16:07\\n@Author : alexanderwu\\n@File : common.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n Add generic class-to-string and object-to-string conversion functionality.\\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\\n responses.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:__future__"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/common.py:names:['annotations']"}, {"id": "metagpt/utils/common.py:ast"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:contextlib"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"contextlib\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:importlib"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:inspect"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:json"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:os"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:platform"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:re"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:sys"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:traceback"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:typing"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:pathlib"}, {"id": "metagpt/utils/common.py:names:['Path']"}, {"id": "metagpt/utils/common.py:module:typing"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"id": "metagpt/utils/common.py:names:['Any', 'List', 'Tuple', 'Union']"}, {"id": "metagpt/utils/common.py:aiofiles"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:loguru"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Import\",\"tokens\":[\"loguru\"],\"properties\":{}}"}, {"id": "metagpt/utils/common.py:module:pydantic_core"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"id": "metagpt/utils/common.py:names:['to_jsonable_python']"}, {"id": "metagpt/utils/common.py:module:tenacity"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"id": "metagpt/utils/common.py:names:['RetryCallState', 'RetryError', '_utils']"}, {"id": "metagpt/utils/common.py:module:metagpt.const"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"id": "metagpt/utils/common.py:names:['MESSAGE_ROUTE_TO_ALL']"}, {"id": "metagpt/utils/common.py:module:metagpt.logs"}, {"id": "metagpt/utils/common.py:names:['logger']"}, {"id": "metagpt/utils/common.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/utils/common.py:names:['handle_exception']"}, {"id": "{\"lineno\":38,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"check_cmd_exists\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"require_python_version\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":231,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OutputParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":234,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":307,\"end_lineno\":316,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NoMoneyException\"],\"properties\":{}}"}, {"id": "{\"lineno\":319,\"end_lineno\":335,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"print_members\"],\"properties\":{}}"}, {"id": "{\"lineno\":338,\"end_lineno\":348,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_recipient\"],\"properties\":{}}"}, {"id": "{\"lineno\":351,\"end_lineno\":353,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_name\"],\"properties\":{}}"}, {"id": "{\"lineno\":356,\"end_lineno\":363,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str\"],\"properties\":{}}"}, {"id": "{\"lineno\":366,\"end_lineno\":381,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str_set\"],\"properties\":{}}"}, {"id": "{\"lineno\":384,\"end_lineno\":392,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_send_to\"],\"properties\":{}}"}, {"id": "{\"lineno\":395,\"end_lineno\":403,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_name\"],\"properties\":{}}"}, {"id": "{\"lineno\":406,\"end_lineno\":407,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"concat_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":410,\"end_lineno\":411,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_namespace\"],\"properties\":{}}"}, {"id": "{\"lineno\":414,\"end_lineno\":444,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"general_after_log\"],\"properties\":{}}"}, {"id": "{\"lineno\":447,\"end_lineno\":456,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_json_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":459,\"end_lineno\":465,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"write_json_file\"],\"properties\":{}}"}, {"id": "{\"lineno\":468,\"end_lineno\":471,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class\"],\"properties\":{}}"}, {"id": "{\"lineno\":474,\"end_lineno\":477,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class_inst\"],\"properties\":{}}"}, {"id": "{\"lineno\":480,\"end_lineno\":481,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"format_trackback_info\"],\"properties\":{}}"}, {"id": "{\"lineno\":484,\"end_lineno\":495,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":498,\"end_lineno\":525,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"role_raise_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":529,\"end_lineno\":533,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread\"],\"properties\":{}}"}, {"id": "{\"lineno\":536,\"end_lineno\":541,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite\"],\"properties\":{}}"}, {"id": "{\"lineno\":544,\"end_lineno\":558,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"read_file_block\"],\"properties\":{}}"}, {"id": "{\"lineno\":561,\"end_lineno\":575,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"list_files\"],\"properties\":{}}"}, {"id": "{\"lineno\":578,\"end_lineno\":580,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_json_code_block\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:Redis:__init__"}, {"id": "metagpt/utils/redis.py:Redis:_connect"}, {"id": "metagpt/utils/redis.py:ast.Constant:\n@Time : 2023/12/27\n@Author : mashenquan\n@File : redis.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/27\\n@Author : mashenquan\\n@File : redis.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:__future__"}, {"id": "metagpt/utils/redis.py:names:['annotations']"}, {"id": "metagpt/utils/redis.py:traceback"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:datetime"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"id": "metagpt/utils/redis.py:names:['timedelta']"}, {"id": "metagpt/utils/redis.py:aioredis"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aioredis\"],\"properties\":{}}"}, {"id": "metagpt/utils/redis.py:module:metagpt.configs.redis_config"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"id": "metagpt/utils/redis.py:names:['RedisConfig']"}, {"id": "metagpt/utils/redis.py:module:metagpt.logs"}, {"id": "metagpt/utils/redis.py:names:['logger']"}, {"id": "{\"lineno\":19,\"end_lineno\":63,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Redis\"],\"properties\":{}}"}, {"id": "metagpt/utils/text.py"}, {"id": "metagpt/utils/text.py:reduce_message_length"}, {"id": "metagpt/utils/text.py:generate_prompt_chunk"}, {"id": "metagpt/utils/text.py:split_paragraph"}, {"id": "metagpt/utils/text.py:decode_unicode_escape"}, {"id": "metagpt/utils/text.py:_split_by_count"}, {"id": "metagpt/utils/text.py:_split_text_with_ends"}, {"id": "metagpt/utils/text.py:module:typing"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"id": "metagpt/utils/text.py:names:['Generator', 'Sequence']"}, {"id": "metagpt/utils/text.py:module:metagpt.utils.token_counter"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"id": "metagpt/utils/text.py:names:['TOKEN_MAX', 'count_string_tokens']"}, {"id": "{\"lineno\":6,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"reduce_message_length\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":76,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_prompt_chunk\"],\"properties\":{}}"}, {"id": "{\"lineno\":79,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_paragraph\"],\"properties\":{}}"}, {"id": "{\"lineno\":99,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_unicode_escape\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_by_count\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_text_with_ends\"],\"properties\":{}}"}, {"id": "metagpt/utils/graph_repository.py:GraphRepository:__init__"}, {"id": "metagpt/utils/graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : graph_repository.py\n@Desc : Superclass for graph repository.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : graph_repository.py\\n@Desc : Superclass for graph repository.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/graph_repository.py:module:abc"}, {"id": "metagpt/utils/graph_repository.py:names:['ABC', 'abstractmethod']"}, {"id": "metagpt/utils/graph_repository.py:module:collections"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['defaultdict']"}, {"id": "metagpt/utils/graph_repository.py:module:pathlib"}, {"id": "metagpt/utils/graph_repository.py:names:['Path']"}, {"id": "metagpt/utils/graph_repository.py:module:typing"}, {"id": "metagpt/utils/graph_repository.py:names:['List']"}, {"id": "metagpt/utils/graph_repository.py:module:pydantic"}, {"id": "metagpt/utils/graph_repository.py:names:['BaseModel']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['DotClassInfo', 'DotClassRelationship', 'RepoFileInfo']"}, {"id": "metagpt/utils/graph_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"id": "metagpt/utils/graph_repository.py:names:['concat_namespace', 'split_namespace']"}, {"id": "{\"lineno\":21,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphKeyword\"],\"properties\":{}}"}, {"id": "{\"lineno\":46,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SPO\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/singleton.py:Singleton:__call__"}, {"id": "metagpt/utils/singleton.py:ast.Constant:\n@Time : 2023/5/11 16:15\n@Author : alexanderwu\n@File : singleton.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 16:15\\n@Author : alexanderwu\\n@File : singleton.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/singleton.py:abc"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"abc\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":22,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Singleton\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:FileRepository:__init__"}, {"id": "metagpt/utils/file_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:__future__"}, {"id": "metagpt/utils/file_repository.py:names:['annotations']"}, {"id": "metagpt/utils/file_repository.py:json"}, {"id": "metagpt/utils/file_repository.py:os"}, {"id": "metagpt/utils/file_repository.py:module:datetime"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['datetime']"}, {"id": "metagpt/utils/file_repository.py:module:pathlib"}, {"id": "metagpt/utils/file_repository.py:names:['Path']"}, {"id": "metagpt/utils/file_repository.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['Dict', 'List', 'Set']"}, {"id": "metagpt/utils/file_repository.py:aiofiles"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/file_repository.py:names:['logger']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.schema"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['Document']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['aread']"}, {"id": "metagpt/utils/file_repository.py:module:metagpt.utils.json_to_markdown"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"id": "metagpt/utils/file_repository.py:names:['json_to_markdown']"}, {"id": "{\"lineno\":25,\"end_lineno\":240,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FileRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:__init__"}, {"id": "metagpt/utils/pycst.py:DocstringCollector:_leave"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:__init__"}, {"id": "metagpt/utils/pycst.py:DocstringTransformer:_leave"}, {"id": "metagpt/utils/pycst.py:get_docstring_statement"}, {"id": "metagpt/utils/pycst.py:has_decorator"}, {"id": "metagpt/utils/pycst.py:merge_docstring"}, {"id": "metagpt/utils/pycst.py:DocstringNode"}, {"id": "metagpt/utils/pycst.py:module:__future__"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['annotations']"}, {"id": "metagpt/utils/pycst.py:module:typing"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['Union']"}, {"id": "metagpt/utils/pycst.py:libcst as cst"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"libcst as cst\"],\"properties\":{}}"}, {"id": "metagpt/utils/pycst.py:module:libcst._nodes.module"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"id": "metagpt/utils/pycst.py:names:['Module']"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"DocstringNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_docstring_statement\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"has_decorator\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringCollector\"],\"properties\":{}}"}, {"id": "{\"lineno\":101,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringTransformer\"],\"properties\":{}}"}, {"id": "{\"lineno\":159,\"end_lineno\":176,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_docstring\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py"}, {"id": "metagpt/utils/exceptions.py:handle_exception"}, {"id": "metagpt/utils/exceptions.py:ReturnType"}, {"id": "metagpt/utils/exceptions.py:ast.Constant:\n@Time : 2023/12/19 14:46\n@Author : alexanderwu\n@File : exceptions.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 14:46\\n@Author : alexanderwu\\n@File : exceptions.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:asyncio"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:functools"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"functools\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:traceback"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/exceptions.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"id": "metagpt/utils/exceptions.py:names:['Any', 'Callable', 'Tuple', 'Type', 'TypeVar', 'Union']"}, {"id": "metagpt/utils/exceptions.py:module:metagpt.logs"}, {"id": "metagpt/utils/exceptions.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"ReturnType\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":61,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"handle_exception\"],\"properties\":{}}"}, {"id": "metagpt/utils/human_interaction.py:json"}, {"id": "metagpt/utils/human_interaction.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['Any', 'Tuple', 'Type']"}, {"id": "metagpt/utils/human_interaction.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['BaseModel']"}, {"id": "metagpt/utils/human_interaction.py:module:metagpt.logs"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['logger']"}, {"id": "metagpt/utils/human_interaction.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"id": "metagpt/utils/human_interaction.py:names:['import_class']"}, {"id": "{\"lineno\":14,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanInteraction\"],\"properties\":{}}"}, {"id": "metagpt/utils/highlight.py"}, {"id": "metagpt/utils/highlight.py:highlight"}, {"id": "metagpt/utils/highlight.py:module:pygments"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['highlight as highlight_']"}, {"id": "metagpt/utils/highlight.py:module:pygments.formatters"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['HtmlFormatter', 'TerminalFormatter']"}, {"id": "metagpt/utils/highlight.py:module:pygments.lexers"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"id": "metagpt/utils/highlight.py:names:['PythonLexer', 'SqlLexer']"}, {"id": "{\"lineno\":7,\"end_lineno\":25,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"highlight\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mmdc_pyppeteer.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mmdc_pyppeteer.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:os"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:urllib.parse"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['urljoin']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:pyppeteer"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['launch']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.config2"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['config']"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.logs"}, {"id": "metagpt/utils/mmdc_pyppeteer.py:names:['logger']"}, {"id": "{\"lineno\":17,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:S3:__init__"}, {"id": "metagpt/utils/s3.py:base64"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:os.path"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:traceback"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:uuid"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:module:pathlib"}, {"id": "metagpt/utils/s3.py:names:['Path']"}, {"id": "metagpt/utils/s3.py:module:typing"}, {"id": "metagpt/utils/s3.py:names:['Optional']"}, {"id": "metagpt/utils/s3.py:aioboto3"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aioboto3\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:aiofiles"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"id": "metagpt/utils/s3.py:module:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"id": "metagpt/utils/s3.py:names:['S3Config']"}, {"id": "metagpt/utils/s3.py:module:metagpt.const"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"id": "metagpt/utils/s3.py:names:['BASE64_FORMAT']"}, {"id": "metagpt/utils/s3.py:module:metagpt.logs"}, {"id": "metagpt/utils/s3.py:names:['logger']"}, {"id": "{\"lineno\":16,\"end_lineno\":154,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3\"],\"properties\":{}}"}, {"id": "metagpt/utils/json_to_markdown.py"}, {"id": "metagpt/utils/json_to_markdown.py:json_to_markdown"}, {"id": "metagpt/utils/json_to_markdown.py:ast.Constant:\n@Time : 2023/9/11 11:50\n@Author : femto Zheng\n@File : json_to_markdown.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/11 11:50\\n@Author : femto Zheng\\n@File : json_to_markdown.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"json_to_markdown\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__"}, {"id": "metagpt/utils/custom_decoder.py:py_make_scanner"}, {"id": "metagpt/utils/custom_decoder.py:JSONObject"}, {"id": "metagpt/utils/custom_decoder.py:py_scanstring"}, {"id": "metagpt/utils/custom_decoder.py:NUMBER_RE"}, {"id": "metagpt/utils/custom_decoder.py:FLAGS"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE"}, {"id": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE"}, {"id": "metagpt/utils/custom_decoder.py:BACKSLASH"}, {"id": "metagpt/utils/custom_decoder.py:WHITESPACE"}, {"id": "metagpt/utils/custom_decoder.py:WHITESPACE_STR"}, {"id": "metagpt/utils/custom_decoder.py:scanstring"}, {"id": "metagpt/utils/custom_decoder.py:json"}, {"id": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:re"}, {"id": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"id": "metagpt/utils/custom_decoder.py:module:json"}, {"id": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"id": "metagpt/utils/custom_decoder.py:names:['JSONDecodeError']"}, {"id": "metagpt/utils/custom_decoder.py:module:json.decoder"}, {"id": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"id": "metagpt/utils/custom_decoder.py:names:['_decode_uXXXX']"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"NUMBER_RE\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":69,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_make_scanner\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"FLAGS\"],\"properties\":{}}"}, {"id": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK\"],\"properties\":{}}"}, {"id": "{\"lineno\":74,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_SINGLEQUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_DOUBLE_QUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_SINGLEQUOTE\"],\"properties\":{}}"}, {"id": "{\"lineno\":77,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"BACKSLASH\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE\"],\"properties\":{}}"}, {"id": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE_STR\"],\"properties\":{}}"}, {"id": "{\"lineno\":91,\"end_lineno\":192,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"JSONObject\"],\"properties\":{}}"}, {"id": "{\"lineno\":195,\"end_lineno\":267,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_scanstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":270,\"end_lineno\":270,\"type_name\":\"ast.Assign\",\"tokens\":[\"scanstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":273,\"end_lineno\":297,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomDecoder\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:GitRepository:__init__"}, {"id": "metagpt/utils/git_repository.py:GitRepository:_init"}, {"id": "metagpt/utils/git_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: Git repository management. RFC 135 2.2.3.3.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: Git repository management. RFC 135 2.2.3.3.\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:module:__future__"}, {"id": "metagpt/utils/git_repository.py:names:['annotations']"}, {"id": "metagpt/utils/git_repository.py:shutil"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/utils/git_repository.py:module:enum"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Enum']"}, {"id": "metagpt/utils/git_repository.py:module:pathlib"}, {"id": "metagpt/utils/git_repository.py:names:['Path']"}, {"id": "metagpt/utils/git_repository.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Dict', 'List']"}, {"id": "metagpt/utils/git_repository.py:module:git.repo"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['Repo']"}, {"id": "metagpt/utils/git_repository.py:module:git.repo.fun"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['is_git_dir']"}, {"id": "metagpt/utils/git_repository.py:module:gitignore_parser"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['parse_gitignore']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.logs"}, {"id": "metagpt/utils/git_repository.py:names:['logger']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.utils.dependency_file"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['DependencyFile']"}, {"id": "metagpt/utils/git_repository.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/utils/git_repository.py:names:['FileRepository']"}, {"id": "{\"lineno\":25,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChangeType\"],\"properties\":{}}"}, {"id": "{\"lineno\":35,\"end_lineno\":285,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GitRepository\"],\"properties\":{}}"}, {"id": "metagpt/utils/read_document.py"}, {"id": "metagpt/utils/read_document.py:read_docx"}, {"id": "metagpt/utils/read_document.py:ast.Constant:\n@Time : 2023/4/29 15:45\n@Author : alexanderwu\n@File : read_document.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:45\\n@Author : alexanderwu\\n@File : read_document.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/utils/read_document.py:docx"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"docx\"],\"properties\":{}}"}, {"id": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_docx\"],\"properties\":{}}"}, {"id": "metagpt/configs/s3_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : s3_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : s3_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/s3_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"id": "metagpt/configs/s3_config.py:names:['YamlModelWithoutDefault']"}, {"id": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3Config\"],\"properties\":{}}"}, {"id": "metagpt/configs/browser_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : browser_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : browser_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/browser_config.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['Literal']"}, {"id": "metagpt/configs/browser_config.py:module:metagpt.tools"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['WebBrowserEngineType']"}, {"id": "metagpt/configs/browser_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/browser_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrowserConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/workspace_config.py:ast.Constant:\n@Time : 2024/1/4 19:09\n@Author : alexanderwu\n@File : workspace_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:09\\n@Author : alexanderwu\\n@File : workspace_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/workspace_config.py:module:datetime"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['datetime']"}, {"id": "metagpt/configs/workspace_config.py:module:pathlib"}, {"id": "metagpt/configs/workspace_config.py:names:['Path']"}, {"id": "metagpt/configs/workspace_config.py:module:uuid"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['uuid4']"}, {"id": "metagpt/configs/workspace_config.py:module:pydantic"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['field_validator', 'model_validator']"}, {"id": "metagpt/configs/workspace_config.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['DEFAULT_WORKSPACE_ROOT']"}, {"id": "metagpt/configs/workspace_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/workspace_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":18,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WorkspaceConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/mermaid_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : mermaid_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : mermaid_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/mermaid_config.py:module:typing"}, {"id": "metagpt/configs/mermaid_config.py:names:['Literal']"}, {"id": "metagpt/configs/mermaid_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/mermaid_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MermaidConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/__init__.py"}, {"id": "metagpt/configs/__init__.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/llm_config.py:LLMType:__missing__"}, {"id": "metagpt/configs/llm_config.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : llm_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : llm_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/llm_config.py:module:enum"}, {"id": "metagpt/configs/llm_config.py:names:['Enum']"}, {"id": "metagpt/configs/llm_config.py:module:typing"}, {"id": "metagpt/configs/llm_config.py:names:['Optional']"}, {"id": "metagpt/configs/llm_config.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"id": "metagpt/configs/llm_config.py:names:['field_validator']"}, {"id": "metagpt/configs/llm_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/llm_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":16,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMType\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/redis_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : redis_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : redis_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/redis_config.py:module:metagpt.utils.yaml_model"}, {"id": "metagpt/configs/redis_config.py:names:['YamlModelWithoutDefault']"}, {"id": "{\"lineno\":11,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RedisConfig\"],\"properties\":{}}"}, {"id": "metagpt/configs/search_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : search_config.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : search_config.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/configs/search_config.py:module:metagpt.tools"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"id": "metagpt/configs/search_config.py:names:['SearchEngineType']"}, {"id": "metagpt/configs/search_config.py:module:metagpt.utils.yaml_model"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"id": "metagpt/configs/search_config.py:names:['YamlModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchConfig\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path"}, {"id": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root"}, {"id": "metagpt/actions/rebuild_class_view.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : rebuild_class_view.py\n@Desc : Rebuild class view info\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : rebuild_class_view.py\\n@Desc : Rebuild class view info\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_class_view.py:module:pathlib"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Path']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:typing"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Optional']"}, {"id": "metagpt/actions/rebuild_class_view.py:aiofiles"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.actions"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['Action']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.config2"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['config']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.const"}, {"id": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['AGGREGATION', 'COMPOSITION', 'DATA_API_DESIGN_FILE_REPO', 'GENERALIZATION', 'GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.logs"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['logger']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['DotClassInfo', 'RepoParser']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.schema"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['UMLClassView']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['concat_namespace', 'split_namespace']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['DiGraphRepository']"}, {"id": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_class_view.py:names:['GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":32,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildClassView\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant"}, {"id": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant"}, {"id": "metagpt/actions/rebuild_sequence_view.py:ast.Constant:\n@Time : 2024/1/4\n@Author : mashenquan\n@File : rebuild_sequence_view.py\n@Desc : Rebuild sequence view info\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4\\n@Author : mashenquan\\n@File : rebuild_sequence_view.py\\n@Desc : Rebuild sequence view info\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:__future__"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['annotations']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:re"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:datetime"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['datetime']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:pathlib"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['Path']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:typing"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['List', 'Optional']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:pydantic"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['BaseModel']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:tenacity"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.actions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['Action']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.config2"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['config']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['GRAPH_REPO_FILE_REPO']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.logs"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['logger']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.repo_parser"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['CodeBlockInfo', 'DotClassInfo']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.schema"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['UMLClassView']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":25,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['aread', 'concat_namespace', 'general_after_log', 'list_files', 'parse_json_code_block', 'read_file_block', 'split_namespace']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.di_graph_repository"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['DiGraphRepository']"}, {"id": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.graph_repository"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"id": "metagpt/actions/rebuild_sequence_view.py:names:['SPO', 'GraphKeyword', 'GraphRepository']"}, {"id": "{\"lineno\":38,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SQVUseCase\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SQVUseCaseDetails\"],\"properties\":{}}"}, {"id": "{\"lineno\":53,\"end_lineno\":397,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildSequenceView\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_code.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\n value of the `Message` object.\n@Modified By: mashenquan, 2023-11-27.\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\n code-block formatting to enhance the understanding for the LLM.\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\n than passing them in when calling the run function.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\\n value of the `Message` object.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\\n code-block formatting to enhance the understanding for the LLM.\\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\\n than passing them in when calling the run function.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code.py:json"}, {"id": "metagpt/actions/write_code.py:module:pydantic"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['Field']"}, {"id": "metagpt/actions/write_code.py:module:tenacity"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['Action']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['REFINED_TASK_LIST', 'TASK_LIST']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.actions.write_code_plan_and_change_an"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['REFINED_TEMPLATE']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.const"}, {"id": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['BUGFIX_FILENAME', 'CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.logs"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['logger']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CodingContext', 'Document', 'RunCodeResult']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['CodeParser']"}, {"id": "metagpt/actions/write_code.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/write_code.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":36,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":87,\"end_lineno\":219,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py"}, {"id": "metagpt/actions/write_prd_an.py:LANGUAGE"}, {"id": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE"}, {"id": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS"}, {"id": "metagpt/actions/write_prd_an.py:PROJECT_NAME"}, {"id": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS"}, {"id": "metagpt/actions/write_prd_an.py:USER_STORIES"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES"}, {"id": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART"}, {"id": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS"}, {"id": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL"}, {"id": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT"}, {"id": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR"}, {"id": "metagpt/actions/write_prd_an.py:ISSUE_TYPE"}, {"id": "metagpt/actions/write_prd_an.py:IS_RELATIVE"}, {"id": "metagpt/actions/write_prd_an.py:REASON"}, {"id": "metagpt/actions/write_prd_an.py:NODES"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_NODES"}, {"id": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE"}, {"id": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE"}, {"id": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE"}, {"id": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE"}, {"id": "metagpt/actions/write_prd_an.py:ast.Constant:\n@Time : 2023/12/14 11:40\n@Author : alexanderwu\n@File : write_prd_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 11:40\\n@Author : alexanderwu\\n@File : write_prd_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_an.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/actions/write_prd_an.py:names:['List']"}, {"id": "metagpt/actions/write_prd_an.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_prd_an.py:names:['ActionNode']"}, {"id": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":19,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAMMING_LANGUAGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"ORIGINAL_REQUIREMENTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENTS\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRODUCT_GOALS\"],\"properties\":{}}"}, {"id": "{\"lineno\":55,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRODUCT_GOALS\"],\"properties\":{}}"}, {"id": "{\"lineno\":67,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"USER_STORIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":80,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_USER_STORIES\"],\"properties\":{}}"}, {"id": "{\"lineno\":94,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_QUADRANT_CHART\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":133,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":142,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_POOL\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":155,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_POOL\"],\"properties\":{}}"}, {"id": "{\"lineno\":157,\"end_lineno\":162,\"type_name\":\"ast.Assign\",\"tokens\":[\"UI_DESIGN_DRAFT\"],\"properties\":{}}"}, {"id": "{\"lineno\":164,\"end_lineno\":169,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"id": "{\"lineno\":171,\"end_lineno\":176,\"type_name\":\"ast.Assign\",\"tokens\":[\"ISSUE_TYPE\"],\"properties\":{}}"}, {"id": "{\"lineno\":178,\"end_lineno\":183,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_RELATIVE\"],\"properties\":{}}"}, {"id": "{\"lineno\":185,\"end_lineno\":187,\"type_name\":\"ast.Assign\",\"tokens\":[\"REASON\"],\"properties\":{}}"}, {"id": "{\"lineno\":190,\"end_lineno\":203,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":205,\"end_lineno\":218,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":220,\"end_lineno\":220,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_PRD_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":221,\"end_lineno\":221,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRD_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":222,\"end_lineno\":222,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_ISSUE_TYPE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":223,\"end_lineno\":223,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_IS_RELATIVE_NODE\"],\"properties\":{}}"}, {"id": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE"}, {"id": "metagpt/actions/summarize_code.py:ast.Constant:\n@Author : alexanderwu\n@File : summarize_code.py\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : summarize_code.py\\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/summarize_code.py:module:pathlib"}, {"id": "metagpt/actions/summarize_code.py:names:['Path']"}, {"id": "metagpt/actions/summarize_code.py:module:pydantic"}, {"id": "metagpt/actions/summarize_code.py:names:['Field']"}, {"id": "metagpt/actions/summarize_code.py:module:tenacity"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['Action']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.logs"}, {"id": "metagpt/actions/summarize_code.py:names:['logger']"}, {"id": "metagpt/actions/summarize_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"id": "metagpt/actions/summarize_code.py:names:['CodeSummarizeContext']"}, {"id": "{\"lineno\":17,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":46,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":90,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SummarizeCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls"}, {"id": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__"}, {"id": "metagpt/actions/research.py:ConductResearch:__init__"}, {"id": "metagpt/actions/research.py:get_research_system_text"}, {"id": "metagpt/actions/research.py:LANG_PROMPT"}, {"id": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM"}, {"id": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM"}, {"id": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT"}, {"id": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT"}, {"id": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT"}, {"id": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT"}, {"id": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT"}, {"id": "metagpt/actions/research.py:module:__future__"}, {"id": "metagpt/actions/research.py:names:['annotations']"}, {"id": "metagpt/actions/research.py:asyncio"}, {"id": "metagpt/actions/research.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"id": "metagpt/actions/research.py:names:['Callable', 'Optional', 'Union']"}, {"id": "metagpt/actions/research.py:module:pydantic"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"id": "metagpt/actions/research.py:names:['Field', 'parse_obj_as']"}, {"id": "metagpt/actions/research.py:module:metagpt.actions"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/research.py:names:['Action']"}, {"id": "metagpt/actions/research.py:module:metagpt.config2"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"id": "metagpt/actions/research.py:names:['config']"}, {"id": "metagpt/actions/research.py:module:metagpt.logs"}, {"id": "metagpt/actions/research.py:names:['logger']"}, {"id": "metagpt/actions/research.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/actions/research.py:names:['SearchEngine']"}, {"id": "metagpt/actions/research.py:module:metagpt.tools.web_browser_engine"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"id": "metagpt/actions/research.py:names:['WebBrowserEngine', 'WebBrowserEngineType']"}, {"id": "metagpt/actions/research.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/research.py:names:['OutputParser']"}, {"id": "metagpt/actions/research.py:module:metagpt.utils.text"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"id": "metagpt/actions/research.py:names:['generate_prompt_chunk', 'reduce_message_length']"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANG_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_BASE_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_TOPIC_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":25,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_TOPIC_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_SEARCH_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"COLLECT_AND_RANKURLS_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"WEB_BROWSE_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONDUCT_RESEARCH_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":171,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CollectLinks\"],\"properties\":{}}"}, {"id": "{\"lineno\":174,\"end_lineno\":237,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowseAndSummarize\"],\"properties\":{}}"}, {"id": "{\"lineno\":240,\"end_lineno\":265,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ConductResearch\"],\"properties\":{}}"}, {"id": "{\"lineno\":268,\"end_lineno\":278,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_research_system_text\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : skill_action.py\n@Desc : Call learned skill\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : skill_action.py\\n@Desc : Call learned skill\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:module:__future__"}, {"id": "metagpt/actions/skill_action.py:names:['annotations']"}, {"id": "metagpt/actions/skill_action.py:ast"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:importlib"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:traceback"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"id": "metagpt/actions/skill_action.py:module:copy"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['deepcopy']"}, {"id": "metagpt/actions/skill_action.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Dict', 'Optional']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.actions"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Action']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.learn.skill_loader"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"id": "metagpt/actions/skill_action.py:names:['Skill']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.logs"}, {"id": "metagpt/actions/skill_action.py:names:['logger']"}, {"id": "metagpt/actions/skill_action.py:module:metagpt.schema"}, {"id": "metagpt/actions/skill_action.py:names:['Message']"}, {"id": "{\"lineno\":24,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ArgumentsParingAction\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillAction\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_test.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_test.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : write_test.py\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\n WriteTest object, rather than passing them in when calling the run function.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : write_test.py\\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_test.py:module:typing"}, {"id": "metagpt/actions/write_test.py:names:['Optional']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/write_test.py:names:['Action']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.const"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['TEST_CODES_FILE_REPO']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_test.py:names:['logger']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['Document', 'TestingContext']"}, {"id": "metagpt/actions/write_test.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_test.py:names:['CodeParser']"}, {"id": "{\"lineno\":19,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTest\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/debug_error.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : debug_error.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : debug_error.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/debug_error.py:re"}, {"id": "metagpt/actions/debug_error.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['Field']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['Action']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.logs"}, {"id": "metagpt/actions/debug_error.py:names:['logger']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['RunCodeContext', 'RunCodeResult']"}, {"id": "metagpt/actions/debug_error.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/debug_error.py:names:['CodeParser']"}, {"id": "{\"lineno\":20,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":48,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugError\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_new_system_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_merge"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_update_system_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow"}, {"id": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file"}, {"id": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/design_api.py:ast.Constant:\n@Time : 2023/5/11 19:26\n@Author : alexanderwu\n@File : design_api.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:26\\n@Author : alexanderwu\\n@File : design_api.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api.py:json"}, {"id": "metagpt/actions/design_api.py:module:pathlib"}, {"id": "metagpt/actions/design_api.py:names:['Path']"}, {"id": "metagpt/actions/design_api.py:module:typing"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Optional']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.actions"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.actions.design_api_an"}, {"id": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['DATA_STRUCTURES_AND_INTERFACES', 'DESIGN_API_NODE', 'PROGRAM_CALL_FLOW', 'REFINED_DATA_STRUCTURES_AND_INTERFACES', 'REFINED_DESIGN_NODE', 'REFINED_PROGRAM_CALL_FLOW']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.const"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['DATA_API_DESIGN_FILE_REPO', 'SEQ_FLOW_FILE_REPO']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.logs"}, {"id": "metagpt/actions/design_api.py:names:['logger']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.schema"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['Document', 'Documents', 'Message']"}, {"id": "metagpt/actions/design_api.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"id": "metagpt/actions/design_api.py:names:['mermaid_to_file']"}, {"id": "{\"lineno\":30,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":120,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDesign\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py"}, {"id": "metagpt/actions/design_api_an.py:main"}, {"id": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH"}, {"id": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH"}, {"id": "metagpt/actions/design_api_an.py:PROJECT_NAME"}, {"id": "metagpt/actions/design_api_an.py:FILE_LIST"}, {"id": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST"}, {"id": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES"}, {"id": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES"}, {"id": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW"}, {"id": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW"}, {"id": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR"}, {"id": "metagpt/actions/design_api_an.py:NODES"}, {"id": "metagpt/actions/design_api_an.py:REFINED_NODES"}, {"id": "metagpt/actions/design_api_an.py:DESIGN_API_NODE"}, {"id": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE"}, {"id": "metagpt/actions/design_api_an.py:ast.Constant:\n@Time : 2023/12/12 22:24\n@Author : alexanderwu\n@File : design_api_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/12 22:24\\n@Author : alexanderwu\\n@File : design_api_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py:module:typing"}, {"id": "metagpt/actions/design_api_an.py:names:['List']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/design_api_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.logs"}, {"id": "metagpt/actions/design_api_an.py:names:['logger']"}, {"id": "metagpt/actions/design_api_an.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"id": "metagpt/actions/design_api_an.py:names:['MMC1', 'MMC2']"}, {"id": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILE_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":41,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_FILE_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":49,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":102,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESIGN_API_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DESIGN_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":114,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_an.py:__name__:__main__"}, {"id": "{\"lineno\":121,\"end_lineno\":122,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_output.py:ActionOutput:__init__"}, {"id": "metagpt/actions/action_output.py:ast.Constant:\n@Time : 2023/7/11 10:03\n@Author : chengmaoyu\n@File : action_output\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/11 10:03\\n@Author : chengmaoyu\\n@File : action_output\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_output.py:module:pydantic"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"id": "metagpt/actions/action_output.py:names:['BaseModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionOutput\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_outcls_registry.py"}, {"id": "metagpt/actions/action_outcls_registry.py:register_action_outcls"}, {"id": "metagpt/actions/action_outcls_registry.py:action_outcls_registry"}, {"id": "metagpt/actions/action_outcls_registry.py:module:functools"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"id": "metagpt/actions/action_outcls_registry.py:names:['wraps']"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"action_outcls_registry\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_action_outcls\"],\"properties\":{}}"}, {"id": "metagpt/actions/add_requirement.py:ast.Constant:\n@Time : 2023/5/20 17:46\n@Author : alexanderwu\n@File : add_requirement.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 17:46\\n@Author : alexanderwu\\n@File : add_requirement.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/add_requirement.py:module:metagpt.actions"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/add_requirement.py:names:['Action']"}, {"id": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserRequirement\"],\"properties\":{}}"}, {"id": "metagpt/actions/__init__.py"}, {"id": "metagpt/actions/__init__.py:ActionType"}, {"id": "metagpt/actions/__init__.py:__all__"}, {"id": "metagpt/actions/__init__.py:ast.Constant:\n@Time : 2023/5/11 17:44\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:44\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/__init__.py:module:enum"}, {"id": "metagpt/actions/__init__.py:names:['Enum']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['Action']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['ActionOutput']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.add_requirement"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['UserRequirement']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.debug_error"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['DebugError']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.design_api"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteDesign']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.design_api_review"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['DesignReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.project_management"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteTasks']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.research"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['CollectLinks', 'WebBrowseAndSummarize', 'ConductResearch']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.run_code"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['RunCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.search_and_summarize"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['SearchAndSummarize']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_code"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCode']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_code_review"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteCodeReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePRD']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd_review"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WritePRDReview']"}, {"id": "metagpt/actions/__init__.py:module:metagpt.actions.write_test"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"id": "metagpt/actions/__init__.py:names:['WriteTest']"}, {"id": "{\"lineno\":27,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionType\"],\"properties\":{}}"}, {"id": "{\"lineno\":47,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_review.py:REVIEW"}, {"id": "metagpt/actions/write_review.py:LGTM"}, {"id": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE"}, {"id": "metagpt/actions/write_review.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_review.py:module:typing"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/actions/write_review.py:names:['List']"}, {"id": "metagpt/actions/write_review.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_review.py:names:['Action']"}, {"id": "metagpt/actions/write_review.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/write_review.py:names:['ActionNode']"}, {"id": "{\"lineno\":12,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"id": "{\"lineno\":22,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_REVIEW_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/action.py:Action:_init_with_instruction"}, {"id": "metagpt/actions/action.py:Action:__str__"}, {"id": "metagpt/actions/action.py:Action:__repr__"}, {"id": "metagpt/actions/action.py:Action:_aask"}, {"id": "metagpt/actions/action.py:Action:_run_action_node"}, {"id": "metagpt/actions/action.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : action.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : action.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action.py:module:__future__"}, {"id": "metagpt/actions/action.py:names:['annotations']"}, {"id": "metagpt/actions/action.py:module:typing"}, {"id": "metagpt/actions/action.py:names:['Optional', 'Union']"}, {"id": "metagpt/actions/action.py:module:pydantic"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"id": "metagpt/actions/action.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']"}, {"id": "metagpt/actions/action.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/action.py:names:['ActionNode']"}, {"id": "metagpt/actions/action.py:module:metagpt.context_mixin"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"id": "metagpt/actions/action.py:names:['ContextMixin']"}, {"id": "metagpt/actions/action.py:module:metagpt.schema"}, {"id": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"id": "metagpt/actions/action.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'RunCodeContext', 'SerializationMixin', 'TestingContext']"}, {"id": "metagpt/actions/action.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/action.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":28,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Action\"],\"properties\":{}}"}, {"id": "metagpt/actions/execute_task.py:ast.Constant:\n@Time : 2023/9/13 12:26\n@Author : femto Zheng\n@File : execute_task.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:26\\n@Author : femto Zheng\\n@File : execute_task.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/execute_task.py:module:metagpt.actions"}, {"id": "metagpt/actions/execute_task.py:names:['Action']"}, {"id": "metagpt/actions/execute_task.py:module:metagpt.schema"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/execute_task.py:names:['Message']"}, {"id": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteTask\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_is_related"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_merge"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_update_prd"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis"}, {"id": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace"}, {"id": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE"}, {"id": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/write_prd.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:module:__future__"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['annotations']"}, {"id": "metagpt/actions/write_prd.py:json"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd.py:module:pathlib"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['Path']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['ActionNode']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.fix_bug"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['FixBug']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.actions.write_prd_an"}, {"id": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['COMPETITIVE_QUADRANT_CHART', 'PROJECT_NAME', 'REFINED_PRD_NODE', 'WP_IS_RELATIVE_NODE', 'WP_ISSUE_TYPE_NODE', 'WRITE_PRD_NODE']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.const"}, {"id": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['BUGFIX_FILENAME', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.logs"}, {"id": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['logger']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.schema"}, {"id": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['BugFixContext', 'Document', 'Documents', 'Message']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['CodeParser']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.file_repository"}, {"id": "metagpt/actions/write_prd.py:names:['FileRepository']"}, {"id": "metagpt/actions/write_prd.py:module:metagpt.utils.mermaid"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"id": "metagpt/actions/write_prd.py:names:['mermaid_to_file']"}, {"id": "{\"lineno\":41,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":61,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRD\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:_simplify_python_code"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY"}, {"id": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX"}, {"id": "metagpt/actions/write_docstring.py:_python_docstring_style"}, {"id": "metagpt/actions/write_docstring.py:ast.Constant:Code Docstring Generator.\n\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\ndocstrings for the given code and system text.\n\nUsage:\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\n\nArguments:\n filename The path to the Python file for which you want to generate docstrings.\n\nOptions:\n --overwrite If specified, overwrite the original file with the code containing docstrings.\n --style= Specify the style of the generated docstrings.\n Valid values: 'google', 'numpy', or 'sphinx'.\n Default: 'google'\n\nExample:\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\n\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\nthe specified docstring style and adds them to the code.\n"}, {"id": "{\"lineno\":1,\"end_lineno\":23,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"Code Docstring Generator.\\n\\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\\ndocstrings for the given code and system text.\\n\\nUsage:\\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\\n\\nArguments:\\n filename The path to the Python file for which you want to generate docstrings.\\n\\nOptions:\\n --overwrite If specified, overwrite the original file with the code containing docstrings.\\n --style= Specify the style of the generated docstrings.\\n Valid values: 'google', 'numpy', or 'sphinx'.\\n Default: 'google'\\n\\nExample:\\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\\n\\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\\nthe specified docstring style and adds them to the code.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:module:__future__"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['annotations']"}, {"id": "metagpt/actions/write_docstring.py:ast"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:module:pathlib"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Path']"}, {"id": "metagpt/actions/write_docstring.py:module:typing"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Literal', 'Optional']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['Action']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['OutputParser', 'aread', 'awrite']"}, {"id": "metagpt/actions/write_docstring.py:module:metagpt.utils.pycst"}, {"id": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"id": "metagpt/actions/write_docstring.py:names:['merge_docstring']"}, {"id": "{\"lineno\":34,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_GOOGLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":86,\"end_lineno\":122,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_NUMPY\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_SPHINX\"],\"properties\":{}}"}, {"id": "{\"lineno\":149,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"_python_docstring_style\"],\"properties\":{}}"}, {"id": "{\"lineno\":156,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDocstring\"],\"properties\":{}}"}, {"id": "{\"lineno\":199,\"end_lineno\":212,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_simplify_python_code\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_docstring.py:__name__:__main__"}, {"id": "{\"lineno\":215,\"end_lineno\":218,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/fix_bug.py:ast.Constant:\n@Time : 2023-12-12\n@Author : mashenquan\n@File : fix_bug.py\n"}, {"id": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023-12-12\\n@Author : mashenquan\\n@File : fix_bug.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/fix_bug.py:module:metagpt.actions"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/fix_bug.py:names:['Action']"}, {"id": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FixBug\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_interview.py:QUESTIONS"}, {"id": "metagpt/actions/prepare_interview.py:ast.Constant:\n@Time : 2023/9/19 15:02\n@Author : DevXiaolan\n@File : prepare_interview.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/19 15:02\\n@Author : DevXiaolan\\n@File : prepare_interview.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_interview.py:module:metagpt.actions"}, {"id": "metagpt/actions/prepare_interview.py:names:['Action']"}, {"id": "metagpt/actions/prepare_interview.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/prepare_interview.py:names:['ActionNode']"}, {"id": "{\"lineno\":11,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareInterview\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_requirements"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_pytest"}, {"id": "metagpt/actions/run_code.py:RunCode:_install_dependencies"}, {"id": "metagpt/actions/run_code.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT"}, {"id": "metagpt/actions/run_code.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : run_code.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\n the understanding for the LLM.\n 2. Fix bug: Add the \"install dependency\" operation.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\n (code files, unit test files, log files) from using the message to using the file name.\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\n class.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":17,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : run_code.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\\n the understanding for the LLM.\\n 2. Fix bug: Add the \\\"install dependency\\\" operation.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\\n (code files, unit test files, log files) from using the message to using the file name.\\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\\n class.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:subprocess"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"id": "metagpt/actions/run_code.py:module:pathlib"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Path']"}, {"id": "metagpt/actions/run_code.py:module:typing"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Tuple']"}, {"id": "metagpt/actions/run_code.py:module:pydantic"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Field']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['Action']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.logs"}, {"id": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['logger']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.schema"}, {"id": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['RunCodeContext', 'RunCodeResult']"}, {"id": "metagpt/actions/run_code.py:module:metagpt.utils.exceptions"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"id": "metagpt/actions/run_code.py:names:['handle_exception']"}, {"id": "{\"lineno\":29,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEMPLATE_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":78,\"end_lineno\":173,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCode\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:main"}, {"id": "metagpt/actions/write_code_an_draft.py:REVIEW"}, {"id": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT"}, {"id": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION"}, {"id": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT"}, {"id": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE"}, {"id": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE"}, {"id": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3"}, {"id": "metagpt/actions/write_code_an_draft.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n"}, {"id": "metagpt/actions/write_code_an_draft.py:asyncio"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['List', 'Literal']"}, {"id": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['Action']"}, {"id": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_code_an_draft.py:names:['ActionNode']"}, {"id": "{\"lineno\":13,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"id": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_RESULT\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEXT_STEPS\"],\"properties\":{}}"}, {"id": "{\"lineno\":63,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_DRAFT\"],\"properties\":{}}"}, {"id": "{\"lineno\":71,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_FUNCTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":97,\"end_lineno\":416,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":419,\"end_lineno\":489,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SMALLEST_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":492,\"end_lineno\":554,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":557,\"end_lineno\":557,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":558,\"end_lineno\":558,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":561,\"end_lineno\":573,\"type_name\":\"ast.Assign\",\"tokens\":[\"CR_FOR_MOVE_FUNCTION_BY_3\"],\"properties\":{}}"}, {"id": "{\"lineno\":576,\"end_lineno\":581,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeAN\"],\"properties\":{}}"}, {"id": "{\"lineno\":584,\"end_lineno\":585,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_an_draft.py:__name__:__main__"}, {"id": "{\"lineno\":588,\"end_lineno\":589,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/talk_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : talk_action.py\n@Desc : Act as it\u2019s a talk\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : talk_action.py\\n@Desc : Act as it\u2019s a talk\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/talk_action.py:module:typing"}, {"id": "metagpt/actions/talk_action.py:names:['Optional']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.actions"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/talk_action.py:names:['Action']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.config2"}, {"id": "metagpt/actions/talk_action.py:names:['config']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.logs"}, {"id": "metagpt/actions/talk_action.py:names:['logger']"}, {"id": "metagpt/actions/talk_action.py:module:metagpt.schema"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"id": "metagpt/actions/talk_action.py:names:['Message']"}, {"id": "{\"lineno\":17,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkAction\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":169,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkActionPrompt\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_tutorial.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_tutorial.py:module:typing"}, {"id": "metagpt/actions/write_tutorial.py:names:['Dict']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.actions"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['Action']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.prompts.tutorial_assistant"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['CONTENT_PROMPT', 'DIRECTORY_PROMPT']"}, {"id": "metagpt/actions/write_tutorial.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/write_tutorial.py:names:['OutputParser']"}, {"id": "{\"lineno\":17,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDirectory\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteContent\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_prd_review.py:module:typing"}, {"id": "metagpt/actions/write_prd_review.py:names:['Optional']"}, {"id": "metagpt/actions/write_prd_review.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_prd_review.py:names:['Action']"}, {"id": "{\"lineno\":14,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRDReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/generate_questions.py:QUESTIONS"}, {"id": "metagpt/actions/generate_questions.py:ast.Constant:\n@File : generate_questions.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : generate_questions.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/generate_questions.py:module:metagpt.actions"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/generate_questions.py:names:['Action']"}, {"id": "metagpt/actions/generate_questions.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/generate_questions.py:names:['ActionNode']"}, {"id": "{\"lineno\":9,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"id": "{\"lineno\":18,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateQuestions\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo"}, {"id": "metagpt/actions/prepare_documents.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : prepare_documents.py\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\n RFC 135 2.2.3.5.1.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : prepare_documents.py\\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\\n RFC 135 2.2.3.5.1.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:shutil"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"id": "metagpt/actions/prepare_documents.py:module:pathlib"}, {"id": "metagpt/actions/prepare_documents.py:names:['Path']"}, {"id": "metagpt/actions/prepare_documents.py:module:typing"}, {"id": "metagpt/actions/prepare_documents.py:names:['Optional']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['Action', 'ActionOutput']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.const"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.file_repository"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['FileRepository']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.git_repository"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['GitRepository']"}, {"id": "metagpt/actions/prepare_documents.py:module:metagpt.utils.project_repo"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"id": "metagpt/actions/prepare_documents.py:names:['ProjectRepo']"}, {"id": "{\"lineno\":21,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareDocuments\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT"}, {"id": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD"}, {"id": "metagpt/actions/search_and_summarize.py:ast.Constant:\n@Time : 2023/5/23 17:26\n@Author : alexanderwu\n@File : search_google.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:26\\n@Author : alexanderwu\\n@File : search_google.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Any', 'Optional']"}, {"id": "metagpt/actions/search_and_summarize.py:pydantic"}, {"id": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"pydantic\"],\"properties\":{}}"}, {"id": "metagpt/actions/search_and_summarize.py:module:pydantic"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['model_validator']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.actions"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Action']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.logs"}, {"id": "metagpt/actions/search_and_summarize.py:names:['logger']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.schema"}, {"id": "metagpt/actions/search_and_summarize.py:names:['Message']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.tools"}, {"id": "metagpt/actions/search_and_summarize.py:names:['SearchEngineType']"}, {"id": "metagpt/actions/search_and_summarize.py:module:metagpt.tools.search_engine"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"id": "metagpt/actions/search_and_summarize.py:names:['SearchEngine']"}, {"id": "{\"lineno\":19,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM_EN_US\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":60,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_SYSTEM\"],\"properties\":{}}"}, {"id": "{\"lineno\":82,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_FOOD\"],\"properties\":{}}"}, {"id": "{\"lineno\":105,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchAndSummarize\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE"}, {"id": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION"}, {"id": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE"}, {"id": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE"}, {"id": "metagpt/actions/write_code_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code_review.py\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\n WriteCode object, rather than passing them in when calling the run function.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code_review.py\\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\\n WriteCode object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_review.py:module:pydantic"}, {"id": "metagpt/actions/write_code_review.py:names:['Field']"}, {"id": "metagpt/actions/write_code_review.py:module:tenacity"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.actions"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['WriteCode']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/write_code_review.py:names:['Action']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.const"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_code_review.py:names:['logger']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.schema"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CodingContext']"}, {"id": "metagpt/actions/write_code_review.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"id": "metagpt/actions/write_code_review.py:names:['CodeParser']"}, {"id": "{\"lineno\":21,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":36,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_AND_INSTRUCTION\"],\"properties\":{}}"}, {"id": "{\"lineno\":58,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":199,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__"}, {"id": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__"}, {"id": "metagpt/actions/write_teaching_plan.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : write_teaching_plan.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : write_teaching_plan.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_teaching_plan.py:module:typing"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Optional']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.actions"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Action']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.context"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['Context']"}, {"id": "metagpt/actions/write_teaching_plan.py:module:metagpt.logs"}, {"id": "metagpt/actions/write_teaching_plan.py:names:['logger']"}, {"id": "{\"lineno\":15,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTeachingPlanPart\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":191,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TeachingPlanBlock\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py"}, {"id": "metagpt/actions/project_management_an.py:main"}, {"id": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES"}, {"id": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES"}, {"id": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS"}, {"id": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS"}, {"id": "metagpt/actions/project_management_an.py:TASK_LIST"}, {"id": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST"}, {"id": "metagpt/actions/project_management_an.py:FULL_API_SPEC"}, {"id": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE"}, {"id": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE"}, {"id": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM"}, {"id": "metagpt/actions/project_management_an.py:NODES"}, {"id": "metagpt/actions/project_management_an.py:REFINED_NODES"}, {"id": "metagpt/actions/project_management_an.py:PM_NODE"}, {"id": "metagpt/actions/project_management_an.py:REFINED_PM_NODE"}, {"id": "metagpt/actions/project_management_an.py:ast.Constant:\n@Time : 2023/12/14 15:28\n@Author : alexanderwu\n@File : project_management_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 15:28\\n@Author : alexanderwu\\n@File : project_management_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py:module:typing"}, {"id": "metagpt/actions/project_management_an.py:names:['List']"}, {"id": "metagpt/actions/project_management_an.py:module:metagpt.actions.action_node"}, {"id": "metagpt/actions/project_management_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/project_management_an.py:module:metagpt.logs"}, {"id": "metagpt/actions/project_management_an.py:names:['logger']"}, {"id": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_PYTHON_PACKAGES\"],\"properties\":{}}"}, {"id": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_OTHER_LANGUAGE_PACKAGES\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":38,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"id": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":59,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TASK_LIST\"],\"properties\":{}}"}, {"id": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"FULL_API_SPEC\"],\"properties\":{}}"}, {"id": "{\"lineno\":76,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":83,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":93,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR_PM\"],\"properties\":{}}"}, {"id": "{\"lineno\":100,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":110,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"id": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"PM_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PM_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":124,\"end_lineno\":128,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management_an.py:__name__:__main__"}, {"id": "{\"lineno\":131,\"end_lineno\":132,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_update_tasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_merge"}, {"id": "metagpt/actions/project_management.py:WriteTasks:_update_requirements"}, {"id": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE"}, {"id": "metagpt/actions/project_management.py:ast.Constant:\n@Time : 2023/5/11 19:12\n@Author : alexanderwu\n@File : project_management.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:12\\n@Author : alexanderwu\\n@File : project_management.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:json"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"id": "metagpt/actions/project_management.py:module:typing"}, {"id": "metagpt/actions/project_management.py:names:['Optional']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['Action']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.action_output"}, {"id": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['ActionOutput']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.actions.project_management_an"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['PM_NODE', 'REFINED_PM_NODE']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.const"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['PACKAGE_REQUIREMENTS_FILENAME']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.logs"}, {"id": "metagpt/actions/project_management.py:names:['logger']"}, {"id": "metagpt/actions/project_management.py:module:metagpt.schema"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"id": "metagpt/actions/project_management.py:names:['Document', 'Documents']"}, {"id": "{\"lineno\":23,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":32,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTasks\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:ActionNode:__init__"}, {"id": "metagpt/actions/action_node.py:ActionNode:__str__"}, {"id": "metagpt/actions/action_node.py:ActionNode:__repr__"}, {"id": "metagpt/actions/action_node.py:ActionNode:_compile_f"}, {"id": "metagpt/actions/action_node.py:ActionNode:_aask_v1"}, {"id": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req"}, {"id": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment"}, {"id": "metagpt/actions/action_node.py:dict_to_markdown"}, {"id": "metagpt/actions/action_node.py:TAG"}, {"id": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT"}, {"id": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT"}, {"id": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:REVIEW_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:REVISE_TEMPLATE"}, {"id": "metagpt/actions/action_node.py:ast.Constant:\n@Time : 2023/12/11 18:45\n@Author : alexanderwu\n@File : action_node.py\n\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/11 18:45\\n@Author : alexanderwu\\n@File : action_node.py\\n\\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:json"}, {"id": "metagpt/actions/action_node.py:module:enum"}, {"id": "metagpt/actions/action_node.py:names:['Enum']"}, {"id": "metagpt/actions/action_node.py:module:typing"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['Any', 'Dict', 'List', 'Optional', 'Tuple', 'Type', 'Union']"}, {"id": "metagpt/actions/action_node.py:module:pydantic"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['BaseModel', 'Field', 'create_model', 'model_validator']"}, {"id": "metagpt/actions/action_node.py:module:tenacity"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.actions.action_outcls_registry"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['register_action_outcls']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.llm"}, {"id": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['BaseLLM']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.logs"}, {"id": "metagpt/actions/action_node.py:names:['logger']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.provider.postprocess.llm_output_postprocess"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['llm_output_postprocess']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['OutputParser', 'general_after_log']"}, {"id": "metagpt/actions/action_node.py:module:metagpt.utils.human_interaction"}, {"id": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"id": "metagpt/actions/action_node.py:names:['HumanInteraction']"}, {"id": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviewMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":31,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviseMode\"],\"properties\":{}}"}, {"id": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"TAG\"],\"properties\":{}}"}, {"id": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE_CONSTRAINT\"],\"properties\":{}}"}, {"id": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_CONSTRAINT\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"SIMPLE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":62,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":92,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVISE_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":115,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"dict_to_markdown\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":666,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":669,\"end_lineno\":670,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolUse\"],\"properties\":{}}"}, {"id": "{\"lineno\":673,\"end_lineno\":677,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Task\"],\"properties\":{}}"}, {"id": "{\"lineno\":680,\"end_lineno\":681,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Tasks\"],\"properties\":{}}"}, {"id": "metagpt/actions/action_node.py:__name__:__main__"}, {"id": "{\"lineno\":684,\"end_lineno\":693,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:ast.Constant:\n@Time : 2023/12/26\n@Author : mannaandpoem\n@File : write_code_plan_and_change_an.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/26\\n@Author : mannaandpoem\\n@File : write_code_plan_and_change_an.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:os"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:pydantic"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['Field']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['Action']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action_node"}, {"id": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['ActionNode']"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.schema"}, {"id": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"id": "metagpt/actions/write_code_plan_and_change_an.py:names:['CodePlanAndChangeContext']"}, {"id": "{\"lineno\":16,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE\"],\"properties\":{}}"}, {"id": "{\"lineno\":111,\"end_lineno\":126,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_CONTEXT\"],\"properties\":{}}"}, {"id": "{\"lineno\":128,\"end_lineno\":180,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TEMPLATE\"],\"properties\":{}}"}, {"id": "{\"lineno\":182,\"end_lineno\":182,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_PLAN_AND_CHANGE_NODE\"],\"properties\":{}}"}, {"id": "{\"lineno\":185,\"end_lineno\":210,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodePlanAndChange\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_review.py:ast.Constant:\n@Time : 2023/5/11 19:31\n@Author : alexanderwu\n@File : design_api_review.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:31\\n@Author : alexanderwu\\n@File : design_api_review.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/design_api_review.py:module:typing"}, {"id": "metagpt/actions/design_api_review.py:names:['Optional']"}, {"id": "metagpt/actions/design_api_review.py:module:metagpt.actions.action"}, {"id": "metagpt/actions/design_api_review.py:names:['Action']"}, {"id": "{\"lineno\":14,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DesignReview\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip"}, {"id": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr"}, {"id": "metagpt/actions/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 18:10:20\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Actions of the invoice ocr assistant.\n"}, {"id": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 18:10:20\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Actions of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:os"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:zipfile"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"zipfile\"],\"properties\":{}}"}, {"id": "metagpt/actions/invoice_ocr.py:module:datetime"}, {"id": "metagpt/actions/invoice_ocr.py:names:['datetime']"}, {"id": "metagpt/actions/invoice_ocr.py:module:pathlib"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Path']"}, {"id": "metagpt/actions/invoice_ocr.py:module:typing"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Optional']"}, {"id": "metagpt/actions/invoice_ocr.py:pandas as pd"}, {"id": "metagpt/actions/invoice_ocr.py:module:paddleocr"}, {"id": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['PaddleOCR']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.actions"}, {"id": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['Action']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.const"}, {"id": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['INVOICE_OCR_TABLE_PATH']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.logs"}, {"id": "metagpt/actions/invoice_ocr.py:names:['logger']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.prompts.invoice_ocr"}, {"id": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['EXTRACT_OCR_MAIN_INFO_PROMPT', 'REPLY_OCR_QUESTION_PROMPT']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.common"}, {"id": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['OutputParser']"}, {"id": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.file"}, {"id": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"id": "metagpt/actions/invoice_ocr.py:names:['File']"}, {"id": "{\"lineno\":31,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCR\"],\"properties\":{}}"}, {"id": "{\"lineno\":122,\"end_lineno\":163,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateTable\"],\"properties\":{}}"}, {"id": "{\"lineno\":166,\"end_lineno\":189,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyQuestion\"],\"properties\":{}}"}, {"id": "metagpt/prompts/sales.py"}, {"id": "metagpt/prompts/sales.py:SALES_ASSISTANT"}, {"id": "metagpt/prompts/sales.py:SALES"}, {"id": "metagpt/prompts/sales.py:conversation_stages"}, {"id": "metagpt/prompts/sales.py:ast.Constant:\n@Time : 2023/5/8 15:29\n@Author : alexanderwu\n@File : sales.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 15:29\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES_ASSISTANT\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"conversation_stages\"],\"properties\":{}}"}, {"id": "metagpt/prompts/__init__.py"}, {"id": "metagpt/prompts/__init__.py:ast.Constant:\n@Time : 2023/5/30 09:51\n@Author : alexanderwu\n@File : __init__.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/30 09:51\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"id": "metagpt/prompts/summarize.py"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4"}, {"id": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5"}, {"id": "metagpt/prompts/summarize.py:ast.Constant:\n@Time : 2023/6/19 23:07\n@Author : alexanderwu\n@File : summarize.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/19 23:07\\n@Author : alexanderwu\\n@File : summarize.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":28,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_2\"],\"properties\":{}}"}, {"id": "{\"lineno\":43,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_3\"],\"properties\":{}}"}, {"id": "{\"lineno\":57,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_4\"],\"properties\":{}}"}, {"id": "{\"lineno\":72,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_5\"],\"properties\":{}}"}, {"id": "metagpt/prompts/metagpt_sample.py"}, {"id": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE"}, {"id": "metagpt/prompts/metagpt_sample.py:ast.Constant:\n@Time : 2023/6/7 20:29\n@Author : alexanderwu\n@File : metagpt_sample.py\n"}, {"id": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/7 20:29\\n@Author : alexanderwu\\n@File : metagpt_sample.py\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":9,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_SAMPLE\"],\"properties\":{}}"}, {"id": "metagpt/prompts/tutorial_assistant.py"}, {"id": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT"}, {"id": "metagpt/prompts/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Tutorial Assistant's prompt templates.\n"}, {"id": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Tutorial Assistant's prompt templates.\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":15,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"DIRECTORY_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":27,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTENT_PROMPT\"],\"properties\":{}}"}, {"id": "metagpt/prompts/invoice_ocr.py"}, {"id": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT"}, {"id": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS"}, {"id": "metagpt/prompts/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 16:30:25\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Prompts of the invoice ocr assistant.\n"}, {"id": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 16:30:25\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Prompts of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"id": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":13,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":29,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"REPLY_OCR_QUESTION_PROMPT\"],\"properties\":{}}"}, {"id": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_SUCCESS\"],\"properties\":{}}"}, {"id": "metagpt/strategy/tot_schema.py:module:enum"}, {"id": "metagpt/strategy/tot_schema.py:names:['Enum']"}, {"id": "metagpt/strategy/tot_schema.py:module:pydantic"}, {"id": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"id": "metagpt/strategy/tot_schema.py:names:['BaseModel', 'Field']"}, {"id": "metagpt/strategy/tot_schema.py:module:metagpt.strategy.base"}, {"id": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"id": "metagpt/strategy/tot_schema.py:names:['BaseEvaluator', 'BaseParser']"}, {"id": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MethodSelect\"],\"properties\":{}}"}, {"id": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Strategy\"],\"properties\":{}}"}, {"id": "{\"lineno\":23,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverConfig\"],\"properties\":{}}"}, {"id": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__"}, {"id": "metagpt/strategy/tot.py:BFSSolver:_bfs_build"}, {"id": "metagpt/strategy/tot.py:DFSSolver:_dfs"}, {"id": "metagpt/strategy/tot.py:TreeofThought:__init__"}, {"id": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver"}, {"id": "metagpt/strategy/tot.py:OUTPUT_FORMAT"}, {"id": "metagpt/strategy/tot.py:module:__future__"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['annotations']"}, {"id": "metagpt/strategy/tot.py:asyncio"}, {"id": "metagpt/strategy/tot.py:module:typing"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['Any', 'List', 'Optional']"}, {"id": "metagpt/strategy/tot.py:module:pydantic"}, {"id": "metagpt/strategy/tot.py:names:['BaseModel', 'ConfigDict', 'Field']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.llm"}, {"id": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['LLM']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.logs"}, {"id": "metagpt/strategy/tot.py:names:['logger']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.provider.base_llm"}, {"id": "metagpt/strategy/tot.py:names:['BaseLLM']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.strategy.base"}, {"id": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['ThoughtNode', 'ThoughtTree']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.strategy.tot_schema"}, {"id": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"id": "metagpt/strategy/tot.py:names:['MethodSelect', 'Strategy', 'ThoughtSolverConfig']"}, {"id": "metagpt/strategy/tot.py:module:metagpt.utils.common"}, {"id": "metagpt/strategy/tot.py:names:['CodeParser']"}, {"id": "{\"lineno\":19,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"OUTPUT_FORMAT\"],\"properties\":{}}"}, {"id": "{\"lineno\":33,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverBase\"],\"properties\":{}}"}, {"id": "{\"lineno\":126,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BFSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DFSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":230,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MCTSSolver\"],\"properties\":{}}"}, {"id": "{\"lineno\":235,\"end_lineno\":277,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeofThought\"],\"properties\":{}}"}, {"id": "metagpt/strategy/__init__.py"}, {"id": "metagpt/strategy/base.py:BaseParser:__call__"}, {"id": "metagpt/strategy/base.py:BaseEvaluator:__call__"}, {"id": "metagpt/strategy/base.py:module:abc"}, {"id": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"id": "metagpt/strategy/base.py:names:['ABC']"}, {"id": "metagpt/strategy/base.py:module:typing"}, {"id": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"id": "metagpt/strategy/base.py:names:['List']"}, {"id": "metagpt/strategy/base.py:module:anytree"}, {"id": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"id": "metagpt/strategy/base.py:names:['Node', 'RenderTree']"}, {"id": "metagpt/strategy/base.py:module:pydantic"}, {"id": "metagpt/strategy/base.py:names:['BaseModel']"}, {"id": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseParser\"],\"properties\":{}}"}, {"id": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseEvaluator\"],\"properties\":{}}"}, {"id": "{\"lineno\":34,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtNode\"],\"properties\":{}}"}, {"id": "{\"lineno\":51,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtTree\"],\"properties\":{}}"}, {"id": "{\"name\":\"AIMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"APIRequestor\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"AZURE_AD,OPEN_AI\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Action\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"node\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"children\",\"visibility\":\"+\",\"value_type\":\"dict[str,ActionNode]\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"example\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expected_type\",\"visibility\":\"+\",\"value_type\":\"Type\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"},{\"name\":\"instruction\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionOutput\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ActionType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ApiType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Architect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ArgumentsParingAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict]\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Assistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"Optional[SkillsDeclaration]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AsyncSSEClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"AttrDict\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AudioData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"audio\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ced\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AzureOpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncAzureOpenAI\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"AzureTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"region\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"subscription_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BEAGECTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseContext\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BaseEvaluator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BaseLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[AsyncOpenAI]]\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BasePostProcessPlugin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BaseStore\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"BrainMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cacheable\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"historical_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"history_text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_dirty\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_history_available\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"last_history_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"last_talk\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BrowserConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"driver\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"BugFixContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CLIParams\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"git_reinit\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ChangeType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ChromaStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"collection\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Claude2\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeBlockInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"end_lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"properties\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"tokens\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"type_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"CodePlanAndChangeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodeSummarizeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"codes_filenames\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CodingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"design_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CollectLinks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rank_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[list[str]],None]]\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Components\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ConductResearch\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"AZURE_TTS_REGION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_API_KEY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_API_SECRET\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_APP_ID\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_review_k_times\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"enable_longterm_memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm_for_researcher_report\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm_for_researcher_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid_engine\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"mmdc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"Literal['json','markdown','raw']\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pyppeteer_executable_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"redis\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"},{\"name\":\"redis_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"repair_llm_output\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"s3\",\"visibility\":\"+\",\"value_type\":\"Optional[S3Config]\",\"default_value\":\"\"},{\"name\":\"search\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchConfig]\",\"default_value\":\"\"},{\"name\":\"workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"alias\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Context\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"Optional[GitRepository]\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"Optional[ProjectRepo]\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ContextMixin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"private_config\",\"visibility\":\"+\",\"value_type\":\"Optional[Config]\",\"default_value\":\"\"},{\"name\":\"private_context\",\"visibility\":\"+\",\"value_type\":\"Optional[Context]\",\"default_value\":\"\"},{\"name\":\"private_llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"max_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Costs\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CustomDecoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"parse_object\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parse_string\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"scan_once\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"CustomerService\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DDGAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ddgs\",\"visibility\":\"+\",\"value_type\":\"DDGS\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DataSource\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DebugError\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DependencyFile\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"exists\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DesignReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DiGraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"pathname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"class_view\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocstringCollector\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocstringTransformer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"author\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"reviews\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DocumentStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Documents\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"default_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassMethod]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"return_args\",\"visibility\":\"+\",\"value_type\":\"Optional[DotReturn]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotClassRelationship\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dest\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"DotReturn\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"List[float]\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"object\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Engineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_borg\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_summarize\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"next_todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"summarize_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"use_code_review\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"EnronTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Entity\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"List[Skill]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Environment\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"member_addrs\",\"visibility\":\"+\",\"value_type\":\"dict[Role,Set]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"roles\",\"visibility\":\"+\",\"value_type\":\"dict[str,SerializeAsAny[Role]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Example\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"answer\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ExecuteTask\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FaissStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"File\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CHUNK_SIZE\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FileRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FireworksCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FireworksLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"FixBug\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GPTPromptGenerator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GeminiGenerativeModel\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GeminiLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GeneralAPIRequestor\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"GenerateQuestions\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GenerateTable\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GetMessageFromWeb\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GitRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_valid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GoogleAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"google_api_client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"google_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"google_cse_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GraphKeyword\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"GLOBAL_VARIABLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_USE_CASE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_DETAIL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PAGE_INFO\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PARTICIPANT\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_AGGREGATE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_COMPOSITE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"NULL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ON\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"SOURCE_CODE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"GraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"HumanInteraction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stop_list\",\"visibility\":\"+\",\"value_type\":\"tuple\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"HumanProvider\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTSResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Optional[AudioData]\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"sid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IFlyTekTTSStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ImageResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"images\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"IndexableDocument\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Union[pd.DataFrame,list]\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"invoice_data\",\"visibility\":\"+\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceOCR\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoiceOCRAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"orc_data\",\"visibility\":\"+\",\"value_type\":\"Optional[list]\",\"default_value\":\"\"},{\"name\":\"origin_query\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"InvoicePath\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"file_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"best_of\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"calc_usage\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"frequency_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[bool]\",\"default_value\":\"\"},{\"name\":\"max_token\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"n\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"presence_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"repetition_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"stop\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"stream\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"temperature\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"timeout\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_k\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"top_p\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMProviderRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"providers\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LLMType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LanceStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"LanceDBConnection,RemoteDBConnection\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"table\",\"visibility\":\"+\",\"value_type\":\"LanceTable,NoneType,RemoteTable\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LocalStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cache_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"fname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"raw_data_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"LongTermMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"memory_storage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_from_recover\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"Optional[RoleContext]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MCTSSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"MeilisearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"Client\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Memory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ignore_id\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_value\":\"\"},{\"name\":\"storage\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Message]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MemoryStorage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"is_initialized\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mem_ttl\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"role_mem_path\",\"visibility\":\"+\",\"value_type\":\"Optional[str],Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"NoneType,Optional[FAISS]\",\"default_value\":\"\"},{\"name\":\"threshold\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MermaidConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Message\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cause_by\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseModel]\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"send_to\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"sent_from\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MessageQueue\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MessageType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MetaGPTLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"MetaGPTText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"MethodSelect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Moderation\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"NoMoneyException\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"amount\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OCRResults\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ocr_result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OllamaLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"http_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"suffix_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncOpenAI\",\"default_value\":\"\"},{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"operation_location\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"response_ms\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"retry_after\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIText2Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenAIText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"OpenLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"OutputParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"Parameter\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PlaywrightWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\\\\|None\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PrepareDocuments\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PrepareInterview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProductManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProjectManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ProjectRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"resources\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"src_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"srcs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"test_outputs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tests\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"PromptString\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QaEngineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_round\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"test_round_allowed\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QdrantConnection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"QdrantStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"QdrantClient\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RebuildClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RebuildSequenceView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Redis\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RedisConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"password\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"username\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepairType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReplyData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReplyQuestion\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Repo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"assets\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"codes\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoFileInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"classes\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"functions\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"globals\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"page_info\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoMetadata\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"n_chars\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_docs\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"symbols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RepoParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"base_directory\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Report\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"links\",\"visibility\":\"+\",\"value_type\":\"Optional[dict[str,list[str]]]\",\"default_value\":\"\"},{\"name\":\"summaries\",\"visibility\":\"+\",\"value_type\":\"Optional[list[tuple[str,str]]]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Researcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ResourceFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_spec_and_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"competitive_analysis\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"data_api_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_output\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"seq_flow\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ResultEmbedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"List[Embedding]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"usage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Returns\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"format\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReviewMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ReviseMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Role\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"actions\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Action]]\",\"default_value\":\"\"},{\"name\":\"addresses\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_human\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"latest_observed_msg\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"recovered\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"states\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RoleContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"important_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_react_loop\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_buffer\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"news\",\"visibility\":\"+\",\"value_type\":\"list[Type[Message]]\",\"default_value\":\"\"},{\"name\":\"react_mode\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"state\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"watch\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RoleReactMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCodeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"additional_python_paths\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"code_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"command\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"mode\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"output\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"output_filename\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"working_directory\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"RunCodeResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stderr\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"stdout\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"S3\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auth_config\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"visibility\":\"+\",\"value_type\":\"Session\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"S3Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"access_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"bucket\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"endpoint\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"secret_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SPO\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"subject\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SQVUseCase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"actors\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"outputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"steps\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SQVUseCaseDetails\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"use_cases\",\"visibility\":\"+\",\"value_type\":\"List[SQVUseCase]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Sales\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"},{\"name\":\"search_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cse_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType]\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SearchEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Searcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SeleniumWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"executable_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"launch_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SerializationMixin\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SerpAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"serpapi_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SerperWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"serper_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SimpleMessage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Singleton\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SkAgent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"import_semantic_skill_from_directory\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"import_skill\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"kernel\",\"visibility\":\"+\",\"value_type\":\"Kernel\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"plan\",\"visibility\":\"+\",\"value_type\":\"Plan\",\"default_value\":\"\"},{\"name\":\"planner\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_value\":\"\"},{\"name\":\"planner_cls\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkSearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Skill\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arguments\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"examples\",\"visibility\":\"+\",\"value_type\":\"List[Example]\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,Parameter]]\",\"default_value\":\"\"},{\"name\":\"returns\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"x_prerequisite\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkillAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SkillManager\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"SkillsDeclaration\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"components\",\"visibility\":\"+\",\"value_type\":\"Optional[Components]\",\"default_value\":\"\"},{\"name\":\"entities\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Entity]\",\"default_value\":\"\"},{\"name\":\"skillapi\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SparkLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Strategy\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SubscriptionRunner\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"dict[Role,asyncio.Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SummarizeCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"SystemMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"TalkAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aask_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"agent_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"history_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_gpt4\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TalkActionPrompt\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION_LOOSE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Task\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dependent_task_ids\",\"visibility\":\"+\",\"value_type\":\"List[int]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"tool\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Tasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"List[Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Teacher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"course_title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TeachingPlanBlock\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"COURSE_TITLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_BEGIN_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_END_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"TOPICS\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"TOPIC_STATEMENTS\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Team\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"Optional[Environment]\",\"default_value\":\"\"},{\"name\":\"idea\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"investment\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TestingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"valid_status\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"value\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtSolverBase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"Optional[ThoughtTree]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtSolverConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"evaluator\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_steps\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"method_select\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_generate_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_select_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_solution_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"parser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ThoughtTree\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_nodes\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TokenCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ToolUse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tool_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Translator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"TreeofThought\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"solver\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strategy\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"TutorialAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"main_title\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"total_content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"default_value\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"value_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassMeta\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"visibility\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"return_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UMLClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassMethod]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UTGenerator\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"chatgpt_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"icl_sample\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"questions_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"swagger_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"template_prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ut_py_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"Usage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"UserMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"UserRequirement\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"VisualDiGraphRepo\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"VisualGraphRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WDMHttpProxyClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowseAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browse_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[WebBrowserEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowserEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebBrowserEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WebPage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"html\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inner_text\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"soup\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WikiHowTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WorkspaceConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"uid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_uid\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodeAN\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodePlanAndChange\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteCodeReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteContent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"directory\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDesign\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDirectory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteDocstring\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WritePRD\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WritePRDReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"prd_review_prompt_template\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTeachingPlanPart\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WriteTest\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[TestingContext]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"WsParam\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"YamlModel\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"extra_fields\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,str]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"YamlModelWithoutDefault\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuEvent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"ZhiPuModelAPI\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"id": "{\"name\":\"_AgentSkill\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "{\"name\":\"_VisualClassView\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"generalizations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"uml\",\"visibility\":\"+\",\"value_type\":\"Optional[UMLClassView]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"id": "\nsequenceDiagram\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n```\n"}, {"id": "20240131222415604:{\nsequenceDiagram\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n```\n}"}, {"id": "?:User"}, {"id": "?:Typer"}, {"id": "{\"description\":\"This source code defines a Context class that represents the environment context for MetaGPT. It contains methods for creating a new os.environ object and for obtaining a LLM (Language Model) instance with a cost manager.\",\"use_cases\":[{\"description\":\"Create a new os.environ object\",\"inputs\":[],\"outputs\":[\"env\"],\"actors\":[\"ProjectRepo\",\"GitRepository\",\"Path\"],\"steps\":[\"Copy the current os.environ object\",\"Return the copied os.environ object\"],\"reason\":\"When the system needs to create a new os.environ object for the MetaGPT environment\"},{\"description\":\"Obtain a LLM (Language Model) instance with a cost manager\",\"inputs\":[],\"outputs\":[\"llm\"],\"actors\":[\"BaseLLM\",\"LLMConfig\"],\"steps\":[\"Create a new LLM instance based on the configuration\",\"Set the cost manager for the LLM instance\",\"Return the LLM instance\"],\"reason\":\"When the system needs to obtain a LLM instance with a cost manager for the MetaGPT environment\"}],\"relationship\":[\"The 'Obtain a LLM (Language Model) instance with a cost manager' use case depends on the 'Create a new os.environ object' use case as it requires the environment context to be set up before obtaining the LLM instance.\"]}"}, {"id": "\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n"}, {"id": "\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222533217:{\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a class 'ProjectRepo' which is a file repository for a project. It contains methods to interact with the project's files and resources.\",\"use_cases\":[{\"description\":\"Retrieve project requirements\",\"inputs\":[],\"outputs\":[\"requirement\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class retrieves the project requirements from the 'docs' attribute using the 'requirement' property.\"],\"reason\":\"When the system needs to access the project requirements.\"},{\"description\":\"Check if code files exist\",\"inputs\":[],\"outputs\":[\"code_files_exist\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class checks if the code files exist by accessing the 'srcs' attribute and its 'all_files' property.\"],\"reason\":\"When the system needs to verify the existence of code files.\"},{\"description\":\"Set source path for the project\",\"inputs\":[\"path\"],\"outputs\":[\"ProjectRepo\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class sets the source path for the project by using the 'with_src_path' method with the specified 'path'.\"],\"reason\":\"When the system needs to update the source path for the project.\"}],\"relationship\":[\"The 'Retrieve project requirements' use case is related to the 'Check if code files exist' use case as both involve accessing project files and resources.\",\"The 'Set source path for the project' use case is related to the 'Check if code files exist' use case as setting the source path may impact the existence of code files.\"]}"}, {"id": "\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n"}, {"id": "\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222606110:{\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:str"}, {"id": "{\"description\":\"This source code defines a class `GitRepository` that represents a Git repository. It provides methods to interact with the repository, such as opening an existing repository, initializing a new repository, adding or removing files from the staging area, committing changes, deleting the repository, and more.\",\"use_cases\":[{\"description\":\"Open an existing Git repository or initialize a new one.\",\"inputs\":[\"local_path\",\"auto_init\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the provided path is a Git repository\",\"If it is a Git repository, open it and set the repository attribute\",\"If it is not a Git repository and auto_init is True, initialize a new Git repository at the provided path\"],\"reason\":\"When a user wants to open an existing Git repository or initialize a new one for further operations.\"},{\"description\":\"Add or remove files from the staging area based on the provided changes.\",\"inputs\":[\"files\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Iterate through the provided files and their change types\",\"Add or remove files from the staging area based on the change types\"],\"reason\":\"When a user wants to stage changes in the Git repository.\"},{\"description\":\"Commit the staged changes with the given comments.\",\"inputs\":[\"comments\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Commit the staged changes with the provided comments\"],\"reason\":\"When a user wants to commit the staged changes in the Git repository.\"},{\"description\":\"Delete the entire repository directory.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Delete the entire repository directory if it is valid\"],\"reason\":\"When a user wants to delete the entire Git repository directory.\"},{\"description\":\"Return a dictionary of changed files and their change types.\",\"inputs\":[],\"outputs\":[\"changed_files\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Retrieve the untracked files and their change types\",\"Retrieve the changed files and their change types from the index\",\"Combine the untracked and changed files into a dictionary\"],\"reason\":\"When a user wants to get the changed files in the Git repository.\"},{\"description\":\"Check if the specified directory is a Git repository.\",\"inputs\":[\"local_path\"],\"outputs\":[\"is_git_dir\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the specified directory contains a .git directory\"],\"reason\":\"When a user wants to check if a directory is a Git repository.\"},{\"description\":\"Check if the Git repository is valid (exists and is initialized).\",\"inputs\":[],\"outputs\":[\"is_valid\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the repository attribute is not None\"],\"reason\":\"When a user wants to check if the Git repository is valid.\"},{\"description\":\"Return the Git repository's status as a string.\",\"inputs\":[],\"outputs\":[\"status\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Return the status of the Git repository using GitPython\"],\"reason\":\"When a user wants to get the status of the Git repository.\"},{\"description\":\"Return the path to the working directory of the Git repository.\",\"inputs\":[],\"outputs\":[\"workdir\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Return the path to the working directory if the repository is valid\"],\"reason\":\"When a user wants to get the working directory of the Git repository.\"},{\"description\":\"Archive the current state of the Git repository.\",\"inputs\":[\"comments\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Add all changed files to the staging area\",\"Commit the changes with the provided comments\"],\"reason\":\"When a user wants to archive the current state of the Git repository.\"},{\"description\":\"Create a new instance of FileRepository associated with this Git repository.\",\"inputs\":[\"relative_path\"],\"outputs\":[\"FileRepository\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Create a new instance of FileRepository with the provided relative path\"],\"reason\":\"When a user wants to create a new instance of FileRepository associated with the Git repository.\"},{\"description\":\"Get the dependency file associated with the Git repository.\",\"inputs\":[],\"outputs\":[\"DependencyFile\"],\"actors\":[\"FileRepository\"],\"steps\":[\"If the dependency file is not available, create a new instance of DependencyFile\"],\"reason\":\"When a user wants to get the dependency file associated with the Git repository.\"},{\"description\":\"Rename the root directory of the Git repository.\",\"inputs\":[\"new_dir_name\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Rename the root directory of the Git repository to the provided new name\"],\"reason\":\"When a user wants to rename the root directory of the Git repository.\"},{\"description\":\"Retrieve a list of files in the specified relative path.\",\"inputs\":[\"relative_path\",\"root_relative_path\",\"filter_ignored\"],\"outputs\":[\"List\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Retrieve the list of files in the specified relative path\",\"Recursively retrieve files from subdirectories if present\",\"Filter the files based on .gitignore rules if required\"],\"reason\":\"When a user wants to retrieve a list of files in the specified relative path within the Git repository.\"},{\"description\":\"Filter a list of filenames based on .gitignore rules.\",\"inputs\":[\"filenames\",\"root_relative_path\"],\"outputs\":[\"List\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Filter the list of filenames based on .gitignore rules\"],\"reason\":\"When a user wants to filter a list of filenames based on .gitignore rules.\"}],\"relationship\":[\"Open an existing Git repository or initialize a new one can be performed by FileRepository\",\"Add or remove files from the staging area based on the provided changes can be performed by FileRepository\",\"Commit the staged changes with the given comments can be performed by FileRepository\",\"Delete the entire repository directory can be performed by FileRepository\",\"Return a dictionary of changed files and their change types can be performed by FileRepository\",\"Check if the specified directory is a Git repository can be performed by FileRepository\",\"Check if the Git repository is valid (exists and is initialized) can be performed by FileRepository\",\"Return the Git repository's status as a string can be performed by FileRepository\",\"Return the path to the working directory of the Git repository can be performed by FileRepository\",\"Archive the current state of the Git repository can be performed by FileRepository\",\"Create a new instance of FileRepository associated with this Git repository can be performed by FileRepository\",\"Get the dependency file associated with the Git repository can be performed by FileRepository\",\"Rename the root directory of the Git repository can be performed by FileRepository\",\"Retrieve a list of files in the specified relative path can be performed by FileRepository\",\"Filter a list of filenames based on .gitignore rules can be performed by FileRepository\"]}"}, {"id": "\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n"}, {"id": "\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222711914:{\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"This source code defines a class representing a FileRepository associated with a Git repository. The class includes methods for saving, getting, and deleting files, as well as managing file dependencies and generating new filenames.\",\"use_cases\":[{\"description\":\"Save content to a file and update its dependencies.\",\"inputs\":[\"filename\",\"content\",\"dependencies\"],\"outputs\":[\"Document\"],\"actors\":[\"Document\",\"Path\",\"List\"],\"steps\":[\"Create the pathname for the file within the repository.\",\"Write the content to the file.\",\"Update the dependencies if provided.\",\"Return the saved document.\"],\"reason\":\"When new content needs to be saved to a file and its dependencies need to be updated.\"},{\"description\":\"Get the dependencies of a file.\",\"inputs\":[\"filename\"],\"outputs\":[\"Set\"],\"actors\":[\"Path\"],\"steps\":[\"Retrieve the pathname of the file within the repository.\",\"Get the dependencies of the file.\",\"Return the set of dependencies.\"],\"reason\":\"When the dependencies of a file need to be retrieved.\"},{\"description\":\"Get the dependencies of a file that have changed.\",\"inputs\":[\"filename\"],\"outputs\":[\"Set\"],\"actors\":[\"Path\"],\"steps\":[\"Get the dependencies of the file.\",\"Identify the changed dependent files.\",\"Return the set of changed dependencies.\"],\"reason\":\"When the dependencies of a file that have changed need to be retrieved.\"},{\"description\":\"Read the content of a file.\",\"inputs\":[\"filename\"],\"outputs\":[\"Document\",\"None\"],\"actors\":[\"Path\"],\"steps\":[\"Create a document instance for the file.\",\"Read the content of the file.\",\"Return the document with the content or None if the file does not exist.\"],\"reason\":\"When the content of a file needs to be read.\"},{\"description\":\"Get the content of all files in the repository.\",\"inputs\":[\"filter_ignored\"],\"outputs\":[\"List[Document]\"],\"actors\":[\"Path\"],\"steps\":[\"Retrieve the content of all files in the repository.\",\"Return a list of document instances representing the files.\"],\"reason\":\"When the content of all files in the repository needs to be retrieved.\"},{\"description\":\"Get the files in a directory that have changed.\",\"inputs\":[\"dir\"],\"outputs\":[\"List\"],\"actors\":[\"Path\"],\"steps\":[\"Identify the changed files within the directory.\",\"Return the list of changed files.\"],\"reason\":\"When the changed files within a directory need to be retrieved.\"},{\"description\":\"Generate a new filename based on the current timestamp and a UUID suffix.\",\"inputs\":[],\"outputs\":[\"str\"],\"actors\":[],\"steps\":[\"Generate a new filename based on the current timestamp and a UUID suffix.\",\"Return the new filename.\"],\"reason\":\"When a new filename needs to be generated.\"},{\"description\":\"Save content to a file and update its dependencies using a Document instance.\",\"inputs\":[\"doc\",\"dependencies\"],\"outputs\":[],\"actors\":[\"Document\",\"List\"],\"steps\":[\"Save the content of the document to a file.\",\"Update the dependencies if provided.\"],\"reason\":\"When the content of a document needs to be saved to a file and its dependencies need to be updated.\"},{\"description\":\"Save a Document instance as a PDF file.\",\"inputs\":[\"doc\",\"with_suffix\",\"dependencies\"],\"outputs\":[],\"actors\":[\"Document\",\"List\"],\"steps\":[\"Convert the content of the document to Markdown.\",\"Save it to a file with an optional specified suffix.\",\"Log the saved file.\"],\"reason\":\"When a document instance needs to be saved as a PDF file.\"},{\"description\":\"Delete a file from the file repository.\",\"inputs\":[\"filename\"],\"outputs\":[],\"actors\":[\"Path\"],\"steps\":[\"Delete the file from the file repository.\"],\"reason\":\"When a file needs to be deleted from the file repository.\"}],\"relationship\":[\"Save content to a file and update its dependencies is related to Get the dependencies of a file.\",\"Save content to a file and update its dependencies is related to Get the dependencies of a file that have changed.\",\"Save content to a file and update its dependencies is related to Read the content of a file.\",\"Save content to a file and update its dependencies is related to Get the content of all files in the repository.\",\"Save content to a file and update its dependencies is related to Get the files in a directory that have changed.\",\"Save content to a file and update its dependencies is related to Generate a new filename based on the current timestamp and a UUID suffix.\",\"Save content to a file and update its dependencies is related to Save content to a file and update its dependencies using a Document instance.\",\"Save content to a file and update its dependencies is related to Save a Document instance as a PDF file.\",\"Save content to a file and update its dependencies is related to Delete a file from the file repository.\"]}"}, {"id": "\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n"}, {"id": "\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant DependencyFile\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222829147:{\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant DependencyFile\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:List"}, {"id": "?:aiofiles"}, {"id": "?:os"}, {"id": "?:datetime"}, {"id": "?:json"}, {"id": "{\"description\":\"The source code is a python class representing a DependencyFile for managing dependencies. It includes methods for loading, saving, updating, getting, and deleting dependencies from a file asynchronously.\",\"use_cases\":[{\"description\":\"Load dependencies from the file asynchronously.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Check if the file exists\",\"Read the file asynchronously\",\"Parse the JSON data\",\"Update the internal dependencies\"],\"reason\":\"When the system needs to load dependencies from the file.\"},{\"description\":\"Save dependencies to the file asynchronously.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Convert dependencies to JSON\",\"Open the file for writing asynchronously\",\"Write the JSON data to the file\"],\"reason\":\"When the system needs to save dependencies to the file.\"},{\"description\":\"Update dependencies for a file asynchronously.\",\"inputs\":[\"filename\",\"dependencies\",\"persist\"],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Load dependencies if persist is true\",\"Get the relative path of the filename\",\"Update the internal dependencies with the new dependencies\",\"Persist the changes if persist is true\"],\"reason\":\"When the system needs to update dependencies for a file.\"},{\"description\":\"Get dependencies for a file asynchronously.\",\"inputs\":[\"filename\",\"persist\"],\"outputs\":[\"A set of dependencies\"],\"actors\":[\"User\"],\"steps\":[\"Load dependencies if persist is true\",\"Get the relative path of the filename\",\"Return the set of dependencies for the file\"],\"reason\":\"When the system needs to retrieve dependencies for a file.\"},{\"description\":\"Delete the dependency file.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Delete the dependency file if it exists\"],\"reason\":\"When the system needs to delete the dependency file.\"}],\"relationship\":[\"The 'Load dependencies from the file asynchronously' use case is related to 'Save dependencies to the file asynchronously' as it involves reading and writing to the file.\",\"The 'Update dependencies for a file asynchronously' use case is related to 'Get dependencies for a file asynchronously' as it involves updating and retrieving dependencies for a file.\"]}"}, {"id": "\nsequenceDiagram\n participant User\n participant DependencyFile\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n"}, {"id": "\nsequenceDiagram\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131222928045:{\nsequenceDiagram\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code is an abstract class that provides a series of standard capabilities for an AI assistant. It includes methods for sending and receiving messages, as well as methods for asynchronous completion and choice selection.\",\"use_cases\":[{\"description\":\"Send a message to the AI assistant and receive a response.\",\"inputs\":[\"msg\",\"system_msgs\",\"format_msgs\",\"timeout\",\"stream\"],\"outputs\":[\"rsp\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Check if system messages are provided, if not, use the default system prompt\",\"Format the messages to be sent to the AI assistant, including user messages and system messages\",\"Send the formatted messages to the AI assistant and await a response\",\"Return the response from the AI assistant\"],\"reason\":\"When an external system needs to interact with the AI assistant by sending a message and receiving a response.\"},{\"description\":\"Send a batch of messages to the AI assistant and receive a concatenated response.\",\"inputs\":[\"msgs\",\"timeout\"],\"outputs\":[\"rsp_text\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Iterate through the list of messages to be sent to the AI assistant\",\"Send each message to the AI assistant and await a response\",\"Concatenate the responses from the AI assistant\",\"Return the concatenated response\"],\"reason\":\"When an external system needs to sequentially send multiple messages to the AI assistant and receive a combined response.\"},{\"description\":\"Send a code-related message to the AI assistant and receive a response.\",\"inputs\":[\"messages\",\"timeout\"],\"outputs\":[\"rsp\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Raise a NotImplementedError as this method is not implemented in the abstract class\"],\"reason\":\"N/A\"}],\"relationship\":[\"The 'Send a message to the AI assistant and receive a response' use case involves the 'Send a batch of messages to the AI assistant and receive a concatenated response' use case, as it utilizes the method for sending a single message to the AI assistant.\",\"The 'Send a message to the AI assistant and receive a response' use case involves the 'Send a code-related message to the AI assistant and receive a response' use case, as it utilizes the method for sending a single message to the AI assistant.\"]}"}, {"id": "\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n"}, {"id": "\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n\n"}, {"id": "20240131223021143:{\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n\n}"}, {"id": "{\"description\":\"This source code defines a Message class that represents a message with various attributes and methods for validation and serialization. It also includes methods for converting the message object to a dictionary and JSON string, as well as loading a message from a JSON string.\",\"use_cases\":[{\"description\":\"Create a new message with the given content, instruct content, role, cause by, sent from, and send to.\",\"inputs\":[\"content\",\"instruct_content\",\"role\",\"cause_by\",\"sent_from\",\"send_to\"],\"outputs\":[\"message_id\"],\"actors\":[\"User\"],\"steps\":[\"Validate and set the message ID if not provided\",\"Validate and set the instruct content if provided\",\"Validate and set the cause by if provided\",\"Validate and set the sent from if provided\",\"Validate and set the send to if provided\",\"Create a new message object with the provided data\",\"Return the message ID\"],\"reason\":\"When a user wants to create a new message with specific attributes.\"},{\"description\":\"Convert the message object to a dictionary containing role and content.\",\"inputs\":[],\"outputs\":[\"message_dict\"],\"actors\":[\"User\"],\"steps\":[\"Create a dictionary with role and content attributes of the message object\",\"Return the created dictionary\"],\"reason\":\"When a user needs to convert a message object to a dictionary.\"},{\"description\":\"Convert the message object to a JSON string.\",\"inputs\":[],\"outputs\":[\"json_string\"],\"actors\":[\"User\"],\"steps\":[\"Convert the message object to a JSON string\",\"Return the JSON string\"],\"reason\":\"When a user needs to convert a message object to a JSON string.\"},{\"description\":\"Load a message object from a JSON string.\",\"inputs\":[\"json_string\"],\"outputs\":[\"message_object\"],\"actors\":[\"User\"],\"steps\":[\"Parse the JSON string to a dictionary\",\"Create a message object from the dictionary\",\"Return the created message object\"],\"reason\":\"When a user needs to load a message object from a JSON string.\"}],\"relationship\":[\"Create a new message use case is related to Convert the message object to a dictionary use case and Convert the message object to a JSON string use case.\",\"Load a message object from a JSON string use case is independent of other use cases.\"]}"}, {"id": "\nsequenceDiagram\n participant User\n participant Message\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n"}, {"id": "\nsequenceDiagram\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223126916:{\nsequenceDiagram\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"This source code defines a class LLMConfig which represents the configuration for an LLM (Language Model) system. It includes various fields such as API key, base URL, model, app ID, and other parameters for controlling the behavior of the LLM system.\",\"use_cases\":[{\"description\":\"Configure LLM system\",\"inputs\":[\"api_key\",\"api_type\",\"base_url\",\"api_version\",\"model\",\"app_id\",\"api_secret\",\"domain\",\"max_token\",\"temperature\",\"top_p\",\"top_k\",\"repetition_penalty\",\"stop\",\"presence_penalty\",\"frequency_penalty\",\"best_of\",\"n\",\"stream\",\"logprobs\",\"top_logprobs\",\"timeout\",\"proxy\",\"calc_usage\"],\"outputs\":[],\"actors\":[\"System Administrator\"],\"steps\":[\"The system administrator provides the configuration parameters for the LLM system.\",\"The system validates the provided configuration parameters.\",\"The LLM system is configured with the provided parameters.\"],\"reason\":\"The external system needs to configure the LLM system with specific parameters to control its behavior and functionality.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n"}, {"id": "\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223231878:{\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:SystemAdministrator"}, {"id": "?:LLMSystem"}, {"id": "{\"description\":\"The source code defines a Team class that represents a team of agents working on a project. The team can hire roles, invest in the project, run and start a project, and run the company for a specified number of rounds.\",\"use_cases\":[{\"description\":\"Hire roles to cooperate\",\"inputs\":[\"roles\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team hires roles to cooperate on the project.\"],\"reason\":\"When the team needs to add new roles to the project.\"},{\"description\":\"Invest company\",\"inputs\":[\"investment\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team invests in the company.\",\"If the investment exceeds the maximum budget, a NoMoneyException is raised.\"],\"reason\":\"When the team needs to invest in the company.\"},{\"description\":\"Run a project from publishing user requirement\",\"inputs\":[\"idea\",\"send_to\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team runs a project based on the user's requirement.\",\"The idea is published to the team's environment for further processing.\"],\"reason\":\"When the team needs to start a new project based on user requirements.\"},{\"description\":\"Run company until target round or no money\",\"inputs\":[\"n_round\",\"idea\",\"send_to\",\"auto_archive\"],\"outputs\":[\"history\"],\"actors\":[\"Team\"],\"steps\":[\"The team runs the company for a specified number of rounds.\",\"If an idea is provided, it is used to run a project.\",\"The company is run until the target round is reached or there is no money left.\",\"The environment is archived if auto_archive is set to true.\"],\"reason\":\"When the team needs to run the company for a specified number of rounds.\"}],\"relationship\":[\"The 'Hire roles to cooperate' use case is related to the 'Invest company' use case as hiring roles may require investment.\",\"The 'Run a project from publishing user requirement' use case is related to the 'Run company until target round or no money' use case as running a project is part of running the company.\"]}"}, {"id": "\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n\n Note right of Team: The 'Hire roles to cooperate' use case is related to the 'Invest company' use case as hiring roles may require investment.\n Note right of Team: The 'Run a project from publishing user requirement' use case is related to the 'Run company until target round or no money' use case as running a project is part of running the company.\n"}, {"id": "\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223353735:{\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"This source code defines a Role class that represents a role or agent in a system. The Role class contains methods for setting actions, thinking, acting, observing, and reacting to messages. It also includes properties for managing the role's state and environment.\",\"use_cases\":[{\"description\":\"Set action to do and update context\",\"inputs\":[\"value\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Check if the value is not None\",\"If the value is not None, set the value as the action to do and update the context\"],\"reason\":\"This use case is executed when the system needs to set an action for the role to perform and update the context.\"},{\"description\":\"Add actions to the role\",\"inputs\":[\"actions\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Reset the role's states and actions\",\"Iterate through the list of actions\",\"Initialize each action if it is not already initialized\",\"Set the long-term memory (llm) and prefix for each action\",\"Add the action to the role's list of actions\",\"Update the role's states with the action descriptions\"],\"reason\":\"This use case is executed when the system needs to add multiple actions to the role and update its states and long-term memory.\"},{\"description\":\"Set the strategy of the role reacting to observed messages\",\"inputs\":[\"react_mode\",\"max_react_loop\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Check if the react_mode is valid\",\"Set the role's react mode and maximum react loop based on the inputs\"],\"reason\":\"This use case is executed when the system needs to set the strategy for the role's reaction to observed messages.\"},{\"description\":\"Watch actions of interest\",\"inputs\":[\"actions\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Set the role to watch messages caused by the specified actions\"],\"reason\":\"This use case is executed when the system needs the role to watch specific actions of interest.\"},{\"description\":\"Observe, think, and act based on the results of the observation\",\"inputs\":[\"with_message\"],\"outputs\":[\"rsp\"],\"actors\":[\"Role\"],\"steps\":[\"If a message is provided, place the message into the role's private message buffer\",\"If there is no new information, suspend and wait\",\"Observe new messages and filter out messages of interest\",\"React to the observed messages and get the response message\",\"Reset the next action to be taken\",\"Publish the response message to the environment\"],\"reason\":\"This use case is executed when the role needs to observe, think, and act based on the results of the observation.\"}],\"relationship\":[\"The 'Set action to do and update context' use case is related to the 'Add actions to the role' use case as it involves updating the role's context and actions.\",\"The 'Set the strategy of the role reacting to observed messages' use case is related to the 'Observe, think, and act based on the results of the observation' use case as it determines the strategy for the role's reaction to observed messages.\",\"The 'Watch actions of interest' use case is related to the 'Observe, think, and act based on the results of the observation' use case as it involves watching specific actions of interest during the observation process.\"]}"}, {"id": "\nsequenceDiagram\n participant Role\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n"}, {"id": "\nsequenceDiagram\n participant Role\n participant Team\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223527497:{\nsequenceDiagram\n participant Role\n participant Team\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines an Environment class that hosts a batch of roles. Roles can publish messages to the environment and can be observed by other roles. The environment also provides methods to add roles, publish messages, run role processes, and manage role addresses.\",\"use_cases\":[{\"description\":\"Add a role to the current environment\",\"inputs\":[\"role: Role\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Add the role to the roles dictionary of the environment\",\"Set the environment for the role\",\"Set the context for the role\"],\"reason\":\"When a new role needs to be added to the environment\"},{\"description\":\"Add a batch of roles to the current environment\",\"inputs\":[\"roles: Iterable[Role]\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Add each role to the roles dictionary of the environment\",\"Set the environment for each role\",\"Set the context for each role\"],\"reason\":\"When multiple roles need to be added to the environment\"},{\"description\":\"Publish a message to the recipients in the environment\",\"inputs\":[\"message: Message\",\"peekable: bool\"],\"outputs\":[\"bool\"],\"actors\":[\"Environment\"],\"steps\":[\"Iterate through the member addresses of the environment\",\"Check if the message is to be sent to the current recipient\",\"If found, put the message in the recipient's queue\",\"Update the history of the environment\"],\"reason\":\"When a message needs to be distributed to the recipients in the environment\"},{\"description\":\"Process all role runs at once\",\"inputs\":[\"k: int\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"For each role, initiate a run process\",\"Gather all the run processes using asyncio\",\"Check if all actions have been executed\"],\"reason\":\"When all role processes need to be executed at once\"},{\"description\":\"Get all roles in the environment\",\"inputs\":[],\"outputs\":[\"dict[str, Role]\"],\"actors\":[\"Environment\"],\"steps\":[\"Return the roles dictionary of the environment\"],\"reason\":\"When all roles in the environment need to be retrieved\"},{\"description\":\"Get a specific role in the environment\",\"inputs\":[\"name: str\"],\"outputs\":[\"Role\"],\"actors\":[\"Environment\"],\"steps\":[\"Return the role with the specified name from the roles dictionary of the environment\"],\"reason\":\"When a specific role in the environment needs to be retrieved\"},{\"description\":\"Get all role names in the environment\",\"inputs\":[],\"outputs\":[\"list[str]\"],\"actors\":[\"Environment\"],\"steps\":[\"Return a list of names of all roles in the environment\"],\"reason\":\"When all role names in the environment need to be retrieved\"},{\"description\":\"Get the addresses of the object\",\"inputs\":[\"obj\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Return the addresses of the specified object from the member addresses of the environment\"],\"reason\":\"When the addresses of a specific object in the environment need to be retrieved\"},{\"description\":\"Set the addresses of the object\",\"inputs\":[\"obj\",\"addresses\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Set the addresses of the specified object in the member addresses of the environment\"],\"reason\":\"When the addresses of a specific object in the environment need to be updated\"},{\"description\":\"Archive the environment\",\"inputs\":[\"auto_archive: bool\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"If auto_archive is true and the environment has a git repository, archive the repository\"],\"reason\":\"When the environment needs to be archived, and auto archiving is enabled\"}],\"relationship\":[\"The 'Add a role to the current environment' use case is related to the 'Add a batch of roles to the current environment' use case as it involves adding roles to the environment.\",\"The 'Publish a message to the recipients in the environment' use case is related to the 'Process all role runs at once' use case as it involves distributing messages to the roles in the environment and processing their runs.\",\"The 'Get all roles in the environment' use case is related to the 'Get a specific role in the environment' use case and the 'Get all role names in the environment' use case as it involves retrieving information about roles in the environment.\",\"The 'Get the addresses of the object' use case is related to the 'Set the addresses of the object' use case as it involves managing addresses of objects in the environment.\"]}"}, {"id": "\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n"}, {"id": "\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223701562:{\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code represents a Product Manager role responsible for product development and management. It includes attributes such as name, profile, goal, and constraints. The role has methods to decide what to do and observe the environment.\",\"use_cases\":[{\"description\":\"Decide what to do\",\"inputs\":[],\"outputs\":[],\"actors\":[\"Product Manager\"],\"steps\":[\"Check if the git repository exists and the configuration for git reinitialization is not set\",\"Set the state to 1 if the conditions are met\",\"If the conditions are not met, set the state to 0, set the git reinitialization configuration to false, and update the todo action to WritePRD\",\"Return a boolean indicating if there are any pending actions\"],\"reason\":\"When the system needs to decide the next action to take based on the current state and environment\"},{\"description\":\"Observe the environment\",\"inputs\":[],\"outputs\":[],\"actors\":[\"Product Manager\"],\"steps\":[\"Call the observe method of the superclass with ignore_memory set to True\"],\"reason\":\"When the system needs to observe the environment and update its internal state\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant ProductManager\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n"}, {"id": "\nsequenceDiagram\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223806039:{\nsequenceDiagram\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines an Architect role in a software development process with attributes such as name, profile, goal, and constraints. It also initializes specific actions and events for the Architect role.\",\"use_cases\":[],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant SourceCode\n participant Architect\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n"}, {"id": "\nsequenceDiagram\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131223921365:{\nsequenceDiagram\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:SourceCode"}, {"id": "{\"description\":\"The source code defines a Project Manager role with attributes such as name, profile, goal, and constraints. It also sets actions and watches for the Project Manager role.\",\"use_cases\":[{\"description\":\"Write Tasks\",\"inputs\":[\"task_list\",\"task_dependencies\"],\"outputs\":[\"task_breakdown\"],\"actors\":[\"Project Manager\"],\"steps\":[\"Receive task list and task dependencies\",\"Analyze task dependencies\",\"Generate task breakdown\"],\"reason\":\"When the Project Manager needs to break down tasks according to PRD/technical design and analyze task dependencies.\"},{\"description\":\"Write Design\",\"inputs\":[\"user_requirement\",\"technical_design\"],\"outputs\":[\"task_list\"],\"actors\":[\"Project Manager\"],\"steps\":[\"Receive user requirement and technical design\",\"Generate a task list\"],\"reason\":\"When the Project Manager needs to generate a task list based on user requirement and technical design.\"}],\"relationship\":[\"Write Tasks is required by Project Manager to break down tasks according to PRD/technical design and analyze task dependencies.\",\"Write Design is required by Project Manager to generate a task list based on user requirement and technical design.\"]}"}, {"id": "\nsequenceDiagram\n participant ProjectManager\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n"}, {"id": "\nsequenceDiagram\n participant ProjectManager\n participant WriteTasks\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224018623:{\nsequenceDiagram\n participant ProjectManager\n participant WriteTasks\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a class 'WriteTasks' that is responsible for creating and updating tasks based on changes in system designs and task files. It also handles merging and updating requirements related to the tasks.\",\"use_cases\":[{\"description\":\"Create and update tasks based on changes in system designs and task files\",\"inputs\":[\"changed_system_designs\",\"changed_tasks\"],\"outputs\":[\"change_files\"],\"actors\":[\"WriteTasks\"],\"steps\":[\"Identify the system designs and task files that have undergone changes\",\"Update the system designs and task files\",\"Merge the updated system designs and task files\",\"Update the requirements related to the tasks\"],\"reason\":\"When there are changes in the system designs or task files, the system needs to create and update tasks accordingly.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant WriteTasks\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n"}, {"id": "\nsequenceDiagram\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224133693:{\nsequenceDiagram\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a class `WriteDesign` that represents an action to generate system design based on PRD and design documents. It includes methods to update system design, merge PRD and system design, save data API design, and save sequence flow.\",\"use_cases\":[{\"description\":\"Generate system design based on PRD and design documents\",\"inputs\":[\"with_messages\",\"schema\"],\"outputs\":[\"content\",\"instruct_content\"],\"actors\":[\"Message\"],\"steps\":[\"Identify which PRD documents and design documents have been modified\",\"Regenerate the design content for the modified documents\",\"Wait for all files to be processed before sending the publish message\"],\"reason\":\"When there are changes in PRD and design documents, the system needs to generate the corresponding system design.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant Action\n participant Message\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n\n"}, {"id": "\nsequenceDiagram\n participant Action\n participant Message\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224454452:{\nsequenceDiagram\n participant Action\n participant Message\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"This source code defines a class Action with various properties and methods related to running an action node and setting a prefix for later usage.\",\"use_cases\":[{\"description\":\"Set prefix for later usage\",\"inputs\":[\"prefix\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"Set the prefix property of the Action class to the provided value\",\"Set the system prompt property to the provided prefix\",\"Update the llm system prompt property with the provided prefix\",\"If the node property is not None, update the llm property of the node with the llm property of the Action class\"],\"reason\":\"When an external system needs to set a prefix for later usage\"},{\"description\":\"Run action node\",\"inputs\":[\"args\",\"kwargs\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"Extract the messages from the args input\",\"Create a context string with the history messages\",\"Fill the action node with the context and llm properties\"],\"reason\":\"When an external system needs to run an action node\"},{\"description\":\"Run action\",\"inputs\":[\"args\",\"kwargs\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"If the node property is not None, call the _run_action_node method with the provided args and kwargs\",\"Otherwise, raise a NotImplementedError\"],\"reason\":\"When an external system needs to run an action\"}],\"relationship\":[\"The 'Set prefix for later usage' use case can be executed before the 'Run action node' use case\",\"The 'Run action node' use case can be executed before the 'Run action' use case\"]}"}, {"id": "\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n```\n"}, {"id": "\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224643506:{\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a class RunCodeContext which contains attributes related to running code such as mode, code, test code, command, working directory, additional python paths, output filename, and output.\",\"use_cases\":[{\"description\":\"Run code in script mode\",\"inputs\":[\"code\",\"working_directory\",\"additional_python_paths\"],\"outputs\":[\"output\"],\"actors\":[\"User\"],\"steps\":[\"User provides the code to be executed\",\"User specifies the working directory for code execution\",\"User may provide additional python paths if required\",\"System runs the provided code in script mode\",\"System generates an output after executing the code\"],\"reason\":\"When the user wants to execute a piece of code in script mode\"},{\"description\":\"Run code in test mode\",\"inputs\":[\"test_code\",\"working_directory\",\"additional_python_paths\"],\"outputs\":[\"output\"],\"actors\":[\"User\"],\"steps\":[\"User provides the test code to be executed\",\"User specifies the working directory for code execution\",\"User may provide additional python paths if required\",\"System runs the provided test code\",\"System generates an output after executing the test code\"],\"reason\":\"When the user wants to execute a piece of code in test mode\"}],\"relationship\":[\"The 'Run code in script mode' use case is related to the 'Run code in test mode' use case as both involve running code with different purposes.\"]}"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224806732:{\nsequenceDiagram\n participant User\n participant System\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:System"}, {"id": "{\"description\":\"The source code defines a class CodeSummarizeContext with attributes design_filename, task_filename, codes_filenames, and reason. It also provides a static method loads to create an instance of CodeSummarizeContext from a list of filenames.\",\"use_cases\":[{\"description\":\"Load CodeSummarizeContext\",\"inputs\":[\"filenames: List[str]\"],\"outputs\":[\"ctx: CodeSummarizeContext\"],\"actors\":[\"External System\"],\"steps\":[\"Create an empty instance of CodeSummarizeContext\",\"Iterate through the list of filenames\",\"If the filename is relative to SYSTEM_DESIGN_FILE_REPO, set design_filename attribute\",\"If the filename is relative to TASK_FILE_REPO, set task_filename attribute\"],\"reason\":\"When the external system needs to load a CodeSummarizeContext instance from a list of filenames.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n"}, {"id": "\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant System\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131224922674:{\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant System\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:ExternalSystem"}, {"id": "{\"description\":\"This source code defines a TestingContext class that contains a filename, code document, and an optional test document. The TestingContext is a subclass of BaseContext.\",\"use_cases\":[{\"description\":\"Create a new testing context\",\"inputs\":[\"filename\",\"code_doc\"],\"outputs\":[\"testing_context\"],\"actors\":[\"Tester\"],\"steps\":[\"The Tester provides a filename and a code document to the system\",\"The system creates a new TestingContext object with the provided filename and code document\",\"The system returns the created TestingContext object\"],\"reason\":\"When a Tester needs to create a new testing context for a specific code document\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant Tester\n participant System\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n"}, {"id": "\nsequenceDiagram\n participant Tester\n participant System\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131225037718:{\nsequenceDiagram\n participant Tester\n participant System\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:Tester"}, {"id": "{\"description\":\"The source code defines a class CodingContext with attributes filename, design_doc, task_doc, and code_doc. The class is a part of a larger system and interacts with external documents such as Document.\",\"use_cases\":[{\"description\":\"Create Coding Context\",\"inputs\":[\"filename\"],\"outputs\":[\"coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides a filename as input\",\"System creates a new CodingContext object with the provided filename\",\"System returns the created CodingContext object\"],\"reason\":\"When a user needs to create a new coding context for a specific file\"},{\"description\":\"Update Design Document\",\"inputs\":[\"coding_context\",\"design_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated design document as input\",\"System updates the design document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the design document in a coding context\"},{\"description\":\"Update Task Document\",\"inputs\":[\"coding_context\",\"task_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated task document as input\",\"System updates the task document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the task document in a coding context\"},{\"description\":\"Update Code Document\",\"inputs\":[\"coding_context\",\"code_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated code document as input\",\"System updates the code document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the code document in a coding context\"}],\"relationship\":[\"Create Coding Context is a prerequisite for Update Design Document, Update Task Document, and Update Code Document\"]}"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131225231661:{\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "{\"description\":\"The source code defines a custom exception class called NoMoneyException, which is raised when an operation cannot be completed due to insufficient funds. The exception includes the amount required and a message indicating the insufficient funds.\",\"use_cases\":[],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant User\n participant SourceCode\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n"}, {"id": "\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n"}, {"id": "20240131225403302:{\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"id": "?:Logger"}, {"id": "{\"description\":\"This code defines a class for managing different types of file repositories related to project documentation.\",\"use_cases\":[{\"description\":\"Create DocFileRepositories instance\",\"inputs\":[\"git_repo\"],\"outputs\":[\"prd\",\"system_design\",\"task\",\"code_summary\",\"graph_repo\",\"class_view\",\"code_plan_and_change\"],\"actors\":[\"Project Manager\",\"Developer\"],\"steps\":[\"The Project Manager or Developer provides a git repository as input.\",\"The system creates a new DocFileRepositories instance with file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change.\",\"The system returns the file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change as output.\"],\"reason\":\"This use case is executed when a new instance of DocFileRepositories is required to manage different types of file repositories related to project documentation.\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n"}, {"id": "\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team"}, {"id": "20240131225530578:{\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team}"}, {"id": "?:Developer"}, {"id": "{\"description\":\"The source code defines a class ResourceFileRepositories that extends FileRepository and initializes multiple file repositories for different types of resources.\",\"use_cases\":[{\"description\":\"Create Resource File Repositories\",\"inputs\":[\"git_repo\"],\"outputs\":[\"competitive_analysis\",\"data_api_design\",\"seq_flow\",\"system_design\",\"prd\",\"api_spec_and_task\",\"code_summary\",\"sd_output\",\"code_plan_and_change\",\"graph_repo\"],\"actors\":[\"System\"],\"steps\":[\"Initialize a new instance of ResourceFileRepositories with a git repository\",\"Create file repositories for competitive analysis, data API design, sequence flow, system design, PRD, API spec and task, code summary, SD output, code plan and change, and graph repository\"],\"reason\":\"The system needs to manage and organize different types of resource files in a git repository\"}],\"relationship\":[]}"}, {"id": "\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n"}, {"id": "\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file"}, {"id": "20240131225710350:{\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file}"}, {"id": "?:generate_repo"}, {"id": "?:config"}, {"id": "{\"description\":\"The source code represents an Engineer role responsible for writing and possibly reviewing code. It includes attributes and methods for writing and reviewing code, summarizing code, and writing code plan and change. It also includes methods for determining the mode of action, thinking, and acting based on whether code review is used.\",\"use_cases\":[{\"description\":\"Write Code\",\"inputs\":[\"coding_context\"],\"outputs\":[\"changed_files\"],\"actors\":[\"Engineer\"],\"steps\":[\"Select essential information from the historical data to reduce the length of the prompt\",\"Run the code review if enabled\",\"Save the changed files and relevant messages\",\"Return the changed files\"],\"reason\":\"When the engineer needs to write code\"},{\"description\":\"Summarize Code\",\"inputs\":[\"summary\"],\"outputs\":[\"tasks\"],\"actors\":[\"Engineer\"],\"steps\":[\"Run the code summary for each pair of (system_design_doc, task_doc)\",\"Save the summary and check if it passes\",\"Send the summary to QA Engineer if needed\",\"Return the tasks if not passed\"],\"reason\":\"When the engineer needs to summarize code\"},{\"description\":\"Write Code Plan and Change\",\"inputs\":[\"files\",\"requirement\"],\"outputs\":[\"code_plan_and_change\"],\"actors\":[\"Engineer\"],\"steps\":[\"Write code plan and change that guides subsequent WriteCode and WriteCodeReview\",\"Save the code plan and change\",\"Return the code plan and change\"],\"reason\":\"When the engineer needs to write code plan and change\"}],\"relationship\":[\"Write Code is performed by Engineer\",\"Summarize Code is performed by Engineer\",\"Write Code Plan and Change is performed by Engineer\"]}"}, {"id": "\nsequenceDiagram\n participant Engineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n"}, {"id": "\nsequenceDiagram\n participant Engineer\n participant System\n participant ResourceFileRepositories\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant QaEngineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>"}, {"id": "20240131225840129:{\nsequenceDiagram\n participant Engineer\n participant System\n participant ResourceFileRepositories\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant QaEngineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>}"}], "links": [{"predicate": "is", "source": "metagpt/schema.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/schema.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:AIMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:BugFixContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodePlanAndChangeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Document"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Documents"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:MessageQueue"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:RunCodeResult"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SimpleMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:SystemMessage"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassMethod"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UMLClassView"}, {"predicate": "has_class", "source": "metagpt/schema.py", "target": "metagpt/schema.py:UserMessage"}, {"predicate": "is", "source": "metagpt/schema.py:AIMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:AIMessage", "target": "{\"name\":\"AIMessage\",\"package\":\"metagpt/schema.py:AIMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:AIMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:AIMessage", "target": "metagpt/schema.py:AIMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:AIMessage", "target": "{\"lineno\":325,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AIMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:AIMessage", "target": "{\"name\":\"AIMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:APIRequestor"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:ApiType"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:OpenAIResponse"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_console_log_level"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_debug"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_info"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:log_warn"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:logfmt"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_build_api_url"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_requests_proxies_arg"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:_make_session"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream_helper"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:parse_stream_async"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_base.py", "target": "metagpt/provider/general_api_base.py:aiohttp_session"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"name\":\"APIRequestor\",\"package\":\"metagpt/provider/general_api_base.py:APIRequestor\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}},\"methods\":{\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]},\"arequest_raw\":{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]},\"request\":{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]},\"request_headers\":{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]},\"request_raw\":{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}},\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"],\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\",\"aiohttp.ClientResponse\",\"requests.Response\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_type"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:api_version"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:base_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:organization"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request_headers"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:request_raw"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:AZURE_AD"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:OPEN_AI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:OpenAIResponse"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:AsyncGenerator"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:aiohttp.ClientResponse"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "?:requests.Response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"lineno\":227,\"end_lineno\":616,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"APIRequestor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:APIRequestor", "target": "{\"name\":\"APIRequestor\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"AZURE_AD,OPEN_AI\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"AZURE_AD,OPEN_AI\",\"default_\":\"\",\"description\":\"api_type : AZURE_AD, OPEN_AI\",\"compositions\":[\"AZURE_AD\",\"OPEN_AI\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_version", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:api_version", "target": "{\"name\":\"api_version\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_version\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:base_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:base_url", "target": "{\"name\":\"base_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"base_url : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:organization", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:organization", "target": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest", "target": "{\"name\":\"arequest\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]\",\"description\":\"Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"compositions\":[\"AsyncGenerator\",\"OpenAIResponse\"]},\"description\":\"arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]\",\"aggregations\":[\"OpenAIResponse\",\"AsyncGenerator\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:arequest_raw", "target": "{\"name\":\"arequest_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"session\",\"type_\":\"\",\"default_\":\"\",\"description\":\"session\",\"compositions\":[]}],\"return_args\":{\"type_\":\"aiohttp.ClientResponse\",\"description\":\"aiohttp.ClientResponse\",\"compositions\":[\"aiohttp.ClientResponse\"]},\"description\":\"arequest_raw(method, url, session): aiohttp.ClientResponse\",\"aggregations\":[\"aiohttp.ClientResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request", "target": "{\"name\":\"request\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]},{\"name\":\"params\",\"type_\":\"\",\"default_\":\"\",\"description\":\"params\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"\",\"default_\":\"\",\"description\":\"headers\",\"compositions\":[]},{\"name\":\"files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"files\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"stream: Literal[True]\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]},{\"name\":\"request_timeout\",\"type_\":\"Optional[Union[float,Tuple[float,float]]]\",\"default_\":\"\",\"description\":\"request_timeout: Optional[Union[float, Tuple[float, float]]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[Iterator[OpenAIResponse],bool,str]\",\"description\":\"Tuple[Iterator[OpenAIResponse], bool, str]\",\"compositions\":[\"OpenAIResponse\"]},\"description\":\"request (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[Iterator[OpenAIResponse], bool, str]\",\"aggregations\":[\"OpenAIResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_headers", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_headers", "target": "{\"name\":\"request_headers\",\"args\":[{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"extra\",\"type_\":\"\",\"default_\":\"\",\"description\":\"extra\",\"compositions\":[]},{\"name\":\"request_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"request_id: Optional[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"request_headers(method: str, extra, request_id: Optional[str]): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_raw", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:APIRequestor:request_raw", "target": "{\"name\":\"request_raw\",\"args\":[{\"name\":\"method\",\"type_\":\"\",\"default_\":\"\",\"description\":\"method\",\"compositions\":[]},{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"requests.Response\",\"description\":\"requests.Response\",\"compositions\":[\"requests.Response\"]},\"description\":\"request_raw(method, url): requests.Response\",\"aggregations\":[\"requests.Response\"]}"}, {"predicate": "is", "source": "metagpt/actions/action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action.py", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action", "target": "{\"name\":\"Action\",\"package\":\"metagpt/actions/action.py:Action\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"node\":{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},\"prefix\":{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"set_name_if_empty\":{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]},\"set_prefix\":{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}},\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:model_config"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:node"}, {"predicate": "has_class_property", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:prefix"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:project_name"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:project_path"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:prompt_schema"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:repo"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:set_name_if_empty"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:set_prefix"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action.py:Action", "target": "metagpt/roles/role.py:RoleContext:todo"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodePlanAndChangeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action.py:Action", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_init_with_instruction"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:__repr__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_aask"}, {"predicate": "has_class_method", "source": "metagpt/actions/action.py:Action", "target": "metagpt/actions/action.py:Action:_run_action_node"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:Action", "target": "{\"lineno\":28,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Action\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action.py:Action", "target": "{\"name\":\"Action\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"node\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodePlanAndChangeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodeSummarizeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:CodingContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:RunCodeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action.py:Action", "target": "?:TestingContext"}, {"predicate": "has_class_use_case", "source": "metagpt/actions/action.py:Action", "target": "{\"description\":\"This source code defines a class Action with various properties and methods related to running an action node and setting a prefix for later usage.\",\"use_cases\":[{\"description\":\"Set prefix for later usage\",\"inputs\":[\"prefix\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"Set the prefix property of the Action class to the provided value\",\"Set the system prompt property to the provided prefix\",\"Update the llm system prompt property with the provided prefix\",\"If the node property is not None, update the llm property of the node with the llm property of the Action class\"],\"reason\":\"When an external system needs to set a prefix for later usage\"},{\"description\":\"Run action node\",\"inputs\":[\"args\",\"kwargs\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"Extract the messages from the args input\",\"Create a context string with the history messages\",\"Fill the action node with the context and llm properties\"],\"reason\":\"When an external system needs to run an action node\"},{\"description\":\"Run action\",\"inputs\":[\"args\",\"kwargs\"],\"outputs\":[],\"actors\":[\"RunCodeContext\",\"CodeSummarizeContext\",\"TestingContext\",\"CodingContext\",\"CodePlanAndChangeContext\"],\"steps\":[\"If the node property is not None, call the _run_action_node method with the provided args and kwargs\",\"Otherwise, raise a NotImplementedError\"],\"reason\":\"When an external system needs to run an action\"}],\"relationship\":[\"The 'Set prefix for later usage' use case can be executed before the 'Run action node' use case\",\"The 'Run action node' use case can be executed before the 'Run action' use case\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/actions/action.py:Action", "target": "\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n```\n"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Union[dict,CodingContext,CodeSummarizeContext,TestingContext,RunCodeContext,CodePlanAndChangeContext,str,None]\",\"default_\":\"\",\"description\":\"i_context : Union[dict, CodingContext, CodeSummarizeContext, TestingContext, RunCodeContext, CodePlanAndChangeContext, str, None]\",\"compositions\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:node", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:node", "target": "{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prefix", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:prefix", "target": "{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:project_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:prompt_schema", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:repo", "target": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:set_name_if_empty", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:set_name_if_empty", "target": "{\"name\":\"set_name_if_empty\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_name_if_empty(values)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:set_prefix", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action.py:Action:set_prefix", "target": "{\"name\":\"set_prefix\",\"args\":[{\"name\":\"prefix\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prefix\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_prefix(prefix)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_node.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ReviewMode"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ReviseMode"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:Task"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:Tasks"}, {"predicate": "has_class", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:ToolUse"}, {"predicate": "has_function", "source": "metagpt/actions/action_node.py", "target": "metagpt/actions/action_node.py:dict_to_markdown"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"name\":\"ActionNode\",\"package\":\"metagpt/actions/action_node.py:ActionNode\",\"attributes\":{\"children\":{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]},\"example\":{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]},\"expected_type\":{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]},\"instruction\":{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]},\"key\":{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"schema\":{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}},\"methods\":{\"add_child\":{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]},\"add_children\":{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"auto_review\":{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]},\"auto_revise\":{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"compile\":{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]},\"compile_example\":{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_instruction\":{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]},\"compile_to\":{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]},\"create_children_class\":{\"name\":\"create_children_class\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_children_class(exclude)\",\"aggregations\":[]},\"create_class\":{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]},\"create_model_class\":{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]},\"fill\":{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, timeout, exclude)\",\"aggregations\":[]},\"from_children\":{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]},\"from_pydantic\":{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]},\"get_child\":{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]},\"get_children_mapping\":{\"name\":\"get_children_mapping\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_children_mapping_old\":{\"name\":\"get_children_mapping_old\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping_old(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_mapping\":{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"get_self_mapping\":{\"name\":\"get_self_mapping\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_self_mapping(): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]},\"human_review\":{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]},\"human_revise\":{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]},\"keys\":{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]},\"review\":{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"revise\":{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]},\"set_recursive\":{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]},\"simple_fill\":{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, timeout, exclude)\",\"aggregations\":[]},\"simple_review\":{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]},\"simple_revise\":{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]},\"tagging\":{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]},\"update_instruct_content\":{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}},\"compositions\":[\"ActionNode\",\"Type\",\"BaseModel\"],\"aggregations\":[\"ReviseMode\",\"ReviewMode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:children"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:context"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:example"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:expected_type"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:instruct_content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:instruction"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:key"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:llm"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:schema"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_child"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:add_children"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:auto_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:auto_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_example"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_instruction"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:compile_to"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_children_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:create_model_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:fill"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:from_children"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:from_pydantic"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_child"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_children_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_children_mapping_old"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:get_self_mapping"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:human_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:human_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:keys"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_llm"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:set_recursive"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_fill"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_review"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:simple_revise"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:tagging"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:to_dict"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:update_instruct_content"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:Type"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:BaseModel"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ReviseMode"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ReviewMode"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action.py:Action:node"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__init__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:__repr__"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_compile_f"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_aask_v1"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_node.py:ActionNode", "target": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"lineno\":122,\"end_lineno\":666,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionNode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ActionNode", "target": "{\"name\":\"ActionNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"children\",\"visibility\":\"+\",\"value_type\":\"dict[str,ActionNode]\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"example\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"expected_type\",\"visibility\":\"+\",\"value_type\":\"Type\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"},{\"name\":\"instruction\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"schema\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ActionNode", "target": "?:ActionNode"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:children", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:children", "target": "{\"name\":\"children\",\"type_\":\"dict[str,ActionNode]\",\"default_\":\"\",\"description\":\"children : dict[str, 'ActionNode']\",\"compositions\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:context", "target": "{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:example", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:example", "target": "{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:expected_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:expected_type", "target": "{\"name\":\"expected_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"expected_type : Type\",\"compositions\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:instruction", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:instruction", "target": "{\"name\":\"instruction\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"instruction : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:key", "target": "{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:schema", "target": "{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_child", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:add_child", "target": "{\"name\":\"add_child\",\"args\":[{\"name\":\"node\",\"type_\":\"ActionNode\",\"default_\":\"\",\"description\":\"node: 'ActionNode'\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_child(node: 'ActionNode')\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:add_children", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:add_children", "target": "{\"name\":\"add_children\",\"args\":[{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_children(nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:auto_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:auto_review", "target": "{\"name\":\"auto_review\",\"args\":[{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_review(template: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:auto_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:auto_revise", "target": "{\"name\":\"auto_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]},{\"name\":\"template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"auto_revise(revise_mode: ReviseMode, template: str): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile", "target": "{\"name\":\"compile\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"template\",\"type_\":\"\",\"default_\":\"\",\"description\":\"template\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile(context, schema, mode, template, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_example", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_example", "target": "{\"name\":\"compile_example\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_example(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_instruction", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_instruction", "target": "{\"name\":\"compile_instruction\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_instruction(schema, mode, tag, exclude): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:compile_to", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:compile_to", "target": "{\"name\":\"compile_to\",\"args\":[{\"name\":\"i\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"i: Dict\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"kv_sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kv_sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"compile_to(i: Dict, schema, kv_sep): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_children_class", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:create_children_class", "target": "{\"name\":\"create_children_class\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_children_class(exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_class", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:create_class", "target": "{\"name\":\"create_class\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]},{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_class(mode: str, class_name: str, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:create_model_class", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:create_model_class", "target": "{\"name\":\"create_model_class\",\"args\":[{\"name\":\"class_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"class_name: str\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"default_\":\"\",\"description\":\"mapping: Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_model_class(class_name: str, mapping: Dict[str, Tuple[Type, Any]])\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:fill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:fill", "target": "{\"name\":\"fill\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"strgy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strgy\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"fill(context, llm, schema, mode, strgy, timeout, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:from_children", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:from_children", "target": "{\"name\":\"from_children\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"nodes\",\"type_\":\"List[ActionNode]\",\"default_\":\"\",\"description\":\"nodes: List['ActionNode']\",\"compositions\":[\"ActionNode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_children(key, nodes: List['ActionNode'])\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:from_pydantic", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:from_pydantic", "target": "{\"name\":\"from_pydantic\",\"args\":[{\"name\":\"model\",\"type_\":\"Type[BaseModel]\",\"default_\":\"\",\"description\":\"model: Type[BaseModel]\",\"compositions\":[\"BaseModel\",\"Type\"]},{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_pydantic(model: Type[BaseModel], key: str)\",\"aggregations\":[\"BaseModel\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_child", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_child", "target": "{\"name\":\"get_child\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union['ActionNode',None]\",\"description\":\"Union['ActionNode', None]\",\"compositions\":[\"ActionNode\"]},\"description\":\"get_child(key: str): Union['ActionNode', None]\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping", "target": "{\"name\":\"get_children_mapping\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping_old", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_children_mapping_old", "target": "{\"name\":\"get_children_mapping_old\",\"args\":[{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_children_mapping_old(exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_mapping", "target": "{\"name\":\"get_mapping\",\"args\":[{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_mapping(mode, exclude): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:get_self_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:get_self_mapping", "target": "{\"name\":\"get_self_mapping\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,Tuple[Type,Any]]\",\"description\":\"Dict[str, Tuple[Type, Any]]\",\"compositions\":[\"Type\"]},\"description\":\"get_self_mapping(): Dict[str, Tuple[Type, Any]]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:human_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:human_review", "target": "{\"name\":\"human_review\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_review(): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:human_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:human_revise", "target": "{\"name\":\"human_revise\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"human_revise(): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:keys", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:keys", "target": "{\"name\":\"keys\",\"args\":[{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"keys(mode: str): list\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:review", "target": "{\"name\":\"review\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"review(strgy: str, review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:revise", "target": "{\"name\":\"revise\",\"args\":[{\"name\":\"strgy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"strgy: str\",\"compositions\":[]},{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"revise(strgy: str, revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_context", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_context", "target": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_llm", "target": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:set_recursive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:set_recursive", "target": "{\"name\":\"set_recursive\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_recursive(name, value)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_fill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_fill", "target": "{\"name\":\"simple_fill\",\"args\":[{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_fill(schema, mode, timeout, exclude)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_review", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_review", "target": "{\"name\":\"simple_review\",\"args\":[{\"name\":\"review_mode\",\"type_\":\"ReviewMode\",\"default_\":\"\",\"description\":\"review_mode: ReviewMode\",\"compositions\":[\"ReviewMode\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"simple_review(review_mode: ReviewMode)\",\"aggregations\":[\"ReviewMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:simple_revise", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:simple_revise", "target": "{\"name\":\"simple_revise\",\"args\":[{\"name\":\"revise_mode\",\"type_\":\"ReviseMode\",\"default_\":\"\",\"description\":\"revise_mode: ReviseMode\",\"compositions\":[\"ReviseMode\"]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"simple_revise(revise_mode: ReviseMode): dict[str, str]\",\"aggregations\":[\"ReviseMode\"]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:tagging", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:tagging", "target": "{\"name\":\"tagging\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"schema\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"tagging(text, schema, tag): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:to_dict", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:to_dict", "target": "{\"name\":\"to_dict\",\"args\":[{\"name\":\"format_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format_func\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]},{\"name\":\"exclude\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exclude\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"to_dict(format_func, mode, exclude): Dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:update_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ActionNode:update_instruct_content", "target": "{\"name\":\"update_instruct_content\",\"args\":[{\"name\":\"incre_data\",\"type_\":\"dict[str,Any]\",\"default_\":\"\",\"description\":\"incre_data: dict[str, Any]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_instruct_content(incre_data: dict[str, Any])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_output.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/action_output.py", "target": "metagpt/actions/action_output.py:ActionOutput"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"name\":\"ActionOutput\",\"package\":\"metagpt/actions/action_output.py:ActionOutput\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}},\"methods\":{},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:instruct_content"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "?:BaseModel"}, {"predicate": "has_class_method", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "metagpt/actions/action_output.py:ActionOutput:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"lineno\":12,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionOutput\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_output.py:ActionOutput", "target": "{\"name\":\"ActionOutput\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"BaseModel\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_output.py:ActionOutput:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content : BaseModel\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/actions", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions", "target": ""}, {"predicate": "has_class", "source": "metagpt/actions", "target": "metagpt/actions:ActionType"}, {"predicate": "is", "source": "metagpt/actions:ActionType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions:ActionType", "target": "{\"name\":\"ActionType\",\"package\":\"metagpt/actions:ActionType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions:ActionType", "target": "metagpt/actions:ActionType:name"}, {"predicate": "has_class_view", "source": "metagpt/actions:ActionType", "target": "{\"name\":\"ActionType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions:ActionType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions:ActionType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"name\":\"ApiType\",\"package\":\"metagpt/provider/general_api_base.py:ApiType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"from_str\":{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "metagpt/provider/general_api_base.py:ApiType:name"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "metagpt/provider/general_api_base.py:ApiType:from_str"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"lineno\":52,\"end_lineno\":68,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ApiType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:ApiType", "target": "{\"name\":\"ApiType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:ApiType:from_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:ApiType:from_str", "target": "{\"name\":\"from_str\",\"args\":[{\"name\":\"label\",\"type_\":\"\",\"default_\":\"\",\"description\":\"label\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_str(label)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/architect.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/architect.py", "target": "metagpt/roles/architect.py:Architect"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect", "target": "{\"name\":\"Architect\",\"package\":\"metagpt/roles/architect.py:Architect\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/architect.py:Architect", "target": "metagpt/roles/architect.py:Architect:__init__"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:Architect", "target": "{\"lineno\":14,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Architect\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/architect.py:Architect", "target": "{\"name\":\"Architect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/architect.py:Architect", "target": "{\"description\":\"The source code defines an Architect role in a software development process with attributes such as name, profile, goal, and constraints. It also initializes specific actions and events for the Architect role.\",\"use_cases\":[],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/architect.py:Architect", "target": "\nsequenceDiagram\n participant SourceCode\n participant Architect\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/architect.py:Architect:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/skill_action.py", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "has_class", "source": "metagpt/actions/skill_action.py", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"name\":\"ArgumentsParingAction\",\"package\":\"metagpt/actions/skill_action.py:ArgumentsParingAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"parse_arguments\":{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:args"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"lineno\":24,\"end_lineno\":79,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ArgumentsParingAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "{\"name\":\"ArgumentsParingAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict]\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:args", "target": "{\"name\":\"args\",\"type_\":\"Optional[Dict]\",\"default_\":\"\",\"description\":\"args : Optional[Dict]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:ask", "target": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:prompt", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill", "target": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:parse_arguments", "target": "{\"name\":\"parse_arguments\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill_name\",\"compositions\":[]},{\"name\":\"txt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"txt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"parse_arguments(skill_name, txt): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:ArgumentsParingAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/assistant.py", "target": "metagpt/roles/assistant.py:Assistant"}, {"predicate": "has_class", "source": "metagpt/roles/assistant.py", "target": "metagpt/roles/assistant.py:MessageType"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"name\":\"Assistant\",\"package\":\"metagpt/roles/assistant.py:Assistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]},\"get_memory\":{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]},\"load_memory\":{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]},\"refine_memory\":{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]},\"skill_handler\":{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]},\"talk\":{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]},\"talk_handler\":{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}},\"compositions\":[\"SkillsDeclaration\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:skills"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:act"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:get_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:load_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:refine_memory"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:skill_handler"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:talk"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:talk_handler"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:think"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "is_composite_of", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/assistant.py:Assistant", "target": "metagpt/roles/assistant.py:Assistant:_plan"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"lineno\":37,\"end_lineno\":139,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Assistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/assistant.py:Assistant", "target": "{\"name\":\"Assistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"Optional[SkillsDeclaration]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/assistant.py:Assistant", "target": "?:SkillsDeclaration"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:memory", "target": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:skills", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:skills", "target": "{\"name\":\"skills\",\"type_\":\"Optional[SkillsDeclaration]\",\"default_\":\"\",\"description\":\"skills : Optional[SkillsDeclaration]\",\"compositions\":[\"SkillsDeclaration\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:act", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:act", "target": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"act(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:get_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:get_memory", "target": "{\"name\":\"get_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_memory(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:load_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:load_memory", "target": "{\"name\":\"load_memory\",\"args\":[{\"name\":\"m\",\"type_\":\"\",\"default_\":\"\",\"description\":\"m\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_memory(m)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:refine_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:refine_memory", "target": "{\"name\":\"refine_memory\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"refine_memory(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:skill_handler", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:skill_handler", "target": "{\"name\":\"skill_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"skill_handler(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:talk", "target": "{\"name\":\"talk\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"talk(text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:talk_handler", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:talk_handler", "target": "{\"name\":\"talk_handler\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"talk_handler(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:think", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:Assistant:think", "target": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"think(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai/async_sse_client.py", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"name\":\"AsyncSSEClient\",\"package\":\"metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient\",\"attributes\":{},\"methods\":{\"stream\":{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"lineno\":10,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AsyncSSEClient\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient", "target": "{\"name\":\"AsyncSSEClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:stream", "target": "{\"name\":\"stream\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"stream(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/context.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/context.py", "target": "metagpt/context.py:AttrDict"}, {"predicate": "has_class", "source": "metagpt/context.py", "target": "metagpt/context.py:Context"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict", "target": "{\"name\":\"AttrDict\",\"package\":\"metagpt/context.py:AttrDict\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]},\"remove\":{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:model_config"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:get"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:remove"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:set"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:Context:kwargs"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__init__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__getattr__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__setattr__"}, {"predicate": "has_class_method", "source": "metagpt/context.py:AttrDict", "target": "metagpt/context.py:AttrDict:__delattr__"}, {"predicate": "has_page_info", "source": "metagpt/context.py:AttrDict", "target": "{\"lineno\":23,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AttrDict\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context.py:AttrDict", "target": "{\"name\":\"AttrDict\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"default\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"default: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(key, default: Any)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:remove", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:remove", "target": "{\"name\":\"remove\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove(key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:AttrDict:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"val\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"val: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key, val: Any)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:AudioData"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse"}, {"predicate": "has_class", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus"}, {"predicate": "has_function", "source": "metagpt/tools/iflytek_tts.py", "target": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"name\":\"AudioData\",\"package\":\"metagpt/tools/iflytek_tts.py:AudioData\",\"attributes\":{\"audio\":{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]},\"ced\":{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:audio"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:ced"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "metagpt/tools/iflytek_tts.py:AudioData:status"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"lineno\":35,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AudioData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:AudioData", "target": "{\"name\":\"AudioData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"audio\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ced\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:audio", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:audio", "target": "{\"name\":\"audio\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"audio : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:ced", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:ced", "target": "{\"name\":\"ced\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ced : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:AudioData:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:AudioData:status", "target": "{\"name\":\"status\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"status : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/azure_openai_api.py", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"name\":\"AzureOpenAILLM\",\"package\":\"metagpt/provider/azure_openai_api.py:AzureOpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AsyncAzureOpenAI\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "?:AsyncAzureOpenAI"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client"}, {"predicate": "has_class_method", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"lineno\":20,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureOpenAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM", "target": "{\"name\":\"AzureOpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncAzureOpenAI\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"AsyncAzureOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncAzureOpenAI\",\"compositions\":[\"AsyncAzureOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/azure_tts.py", "target": "metagpt/tools/azure_tts.py:AzureTTS"}, {"predicate": "has_function", "source": "metagpt/tools/azure_tts.py", "target": "metagpt/tools/azure_tts.py:oas3_azsure_tts"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"name\":\"AzureTTS\",\"package\":\"metagpt/tools/azure_tts.py:AzureTTS\",\"attributes\":{\"region\":{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]},\"subscription_key\":{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}},\"methods\":{\"role_style_text\":{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]},\"role_text\":{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]},\"style_text\":{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]},\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:region"}, {"predicate": "has_class_property", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:role_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:style_text"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech"}, {"predicate": "has_class_method", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "metagpt/tools/azure_tts.py:AzureTTS:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"lineno\":19,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"AzureTTS\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/azure_tts.py:AzureTTS", "target": "{\"name\":\"AzureTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"region\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"subscription_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:region", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:region", "target": "{\"name\":\"region\",\"type_\":\"\",\"default_\":\"\",\"description\":\"region\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:subscription_key", "target": "{\"name\":\"subscription_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subscription_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_style_text", "target": "{\"name\":\"role_style_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_style_text(role, style, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:role_text", "target": "{\"name\":\"role_text\",\"args\":[{\"name\":\"role\",\"type_\":\"\",\"default_\":\"\",\"description\":\"role\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"role_text(role, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:style_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:style_text", "target": "{\"name\":\"style_text\",\"args\":[{\"name\":\"style\",\"type_\":\"\",\"default_\":\"\",\"description\":\"style\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"style_text(style, text)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/azure_tts.py:AzureTTS:synthesize_speech", "target": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_file\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(lang, voice, text, output_file)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:EnronTemplate"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator"}, {"predicate": "has_class", "source": "metagpt/tools/prompt_writer.py", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"name\":\"BEAGECTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:BEAGECTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"lineno\":95,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BEAGECTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate", "target": "{\"name\":\"BEAGECTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/tot.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:BFSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:TreeofThought:Config"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:DFSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:MCTSSolver"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "has_class", "source": "metagpt/strategy/tot.py", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"name\":\"BFSSolver\",\"package\":\"metagpt/strategy/tot.py:BFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"generate_and_evaluate_nodes\":{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "metagpt/strategy/tot.py:BFSSolver:_bfs_build"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"lineno\":126,\"end_lineno\":177,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BFSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:BFSSolver", "target": "{\"name\":\"BFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:generate_and_evaluate_nodes", "target": "{\"name\":\"generate_and_evaluate_nodes\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_value\",\"compositions\":[]},{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_and_evaluate_nodes(current_state, current_value, node)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:BFSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BaseContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BaseContext", "target": "{\"name\":\"BaseContext\",\"package\":\"metagpt/schema.py:BaseContext\",\"attributes\":{},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}},\"compositions\":[],\"aggregations\":[\"T\"]}"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:BaseContext", "target": "metagpt/schema.py:BaseContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:BaseContext", "target": "?:T"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:BaseContext", "target": "{\"lineno\":410,\"end_lineno\":415,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:BaseContext", "target": "{\"name\":\"BaseContext\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BaseContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BaseContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[T]\",\"description\":\"Optional[T]\",\"compositions\":[\"T\"]},\"description\":\"loads(val: str): Optional[T]\",\"aggregations\":[\"T\"]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/base.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:BaseEvaluator"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:BaseParser"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:ThoughtNode"}, {"predicate": "has_class", "source": "metagpt/strategy/base.py", "target": "metagpt/strategy/base.py:ThoughtTree"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"name\":\"BaseEvaluator\",\"package\":\"metagpt/strategy/base.py:BaseEvaluator\",\"attributes\":{},\"methods\":{\"status_verify\":{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:status_verify"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "metagpt/strategy/base.py:BaseEvaluator:__call__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseEvaluator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:BaseEvaluator", "target": "{\"name\":\"BaseEvaluator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseEvaluator:status_verify", "target": "{\"name\":\"status_verify\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"status_verify ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/base_llm.py", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"name\":\"BaseLLM\",\"package\":\"metagpt/provider/base_llm.py:BaseLLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str\",\"aggregations\":[]},\"aask_batch\":{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]},\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code (messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion (messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text (messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"get_choice_delta_text\":{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]},\"get_choice_function\":{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:system_prompt"}, {"predicate": "has_class_property", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask_batch"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:aask_code"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:AsyncOpenAI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action_node.py:ActionNode"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/actions/action_node.py:ActionNode:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/moderation.py:Moderation"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/moderation.py:Moderation:llm"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"predicate": "is_composite_of", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_user_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_system_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"lineno\":21,\"end_lineno\":151,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"name\":\"BaseLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[AsyncOpenAI]]\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "?:CostManager"}, {"predicate": "has_class_use_case", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "{\"description\":\"The source code is an abstract class that provides a series of standard capabilities for an AI assistant. It includes methods for sending and receiving messages, as well as methods for asynchronous completion and choice selection.\",\"use_cases\":[{\"description\":\"Send a message to the AI assistant and receive a response.\",\"inputs\":[\"msg\",\"system_msgs\",\"format_msgs\",\"timeout\",\"stream\"],\"outputs\":[\"rsp\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Check if system messages are provided, if not, use the default system prompt\",\"Format the messages to be sent to the AI assistant, including user messages and system messages\",\"Send the formatted messages to the AI assistant and await a response\",\"Return the response from the AI assistant\"],\"reason\":\"When an external system needs to interact with the AI assistant by sending a message and receiving a response.\"},{\"description\":\"Send a batch of messages to the AI assistant and receive a concatenated response.\",\"inputs\":[\"msgs\",\"timeout\"],\"outputs\":[\"rsp_text\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Iterate through the list of messages to be sent to the AI assistant\",\"Send each message to the AI assistant and await a response\",\"Concatenate the responses from the AI assistant\",\"Return the concatenated response\"],\"reason\":\"When an external system needs to sequentially send multiple messages to the AI assistant and receive a combined response.\"},{\"description\":\"Send a code-related message to the AI assistant and receive a response.\",\"inputs\":[\"messages\",\"timeout\"],\"outputs\":[\"rsp\"],\"actors\":[\"Message\",\"AsyncOpenAI\"],\"steps\":[\"Raise a NotImplementedError as this method is not implemented in the abstract class\"],\"reason\":\"N/A\"}],\"relationship\":[\"The 'Send a message to the AI assistant and receive a response' use case involves the 'Send a batch of messages to the AI assistant and receive a concatenated response' use case, as it utilizes the method for sending a single message to the AI assistant.\",\"The 'Send a message to the AI assistant and receive a response' use case involves the 'Send a code-related message to the AI assistant and receive a response' use case, as it utilizes the method for sending a single message to the AI assistant.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/provider/base_llm.py:BaseLLM", "target": "\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"Optional[Union[AsyncOpenAI]]\",\"default_\":\"\",\"description\":\"aclient : Optional[Union[AsyncOpenAI]]\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:model", "target": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:system_prompt", "target": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], timeout, stream): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_batch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_batch", "target": "{\"name\":\"aask_batch\",\"args\":[{\"name\":\"msgs\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"msgs: list\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask_batch(msgs: list, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:aask_code", "target": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code (messages: Union[str, Message, list[dict]], timeout): dict\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion (messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text (messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_delta_text", "target": "{\"name\":\"get_choice_delta_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_delta_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function", "target": "{\"name\":\"get_choice_function\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function(rsp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_function_arguments", "target": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/base_llm.py:BaseLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"name\":\"BaseParser\",\"package\":\"metagpt/strategy/base.py:BaseParser\",\"attributes\":{},\"methods\":{\"propose\":{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose (current_state: str): str\",\"aggregations\":[]},\"sample\":{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample (current_state: str): str\",\"aggregations\":[]},\"value\":{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value (input: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:propose"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:sample"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:value"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:BaseParser", "target": "metagpt/strategy/base.py:BaseParser:__call__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:BaseParser", "target": "{\"name\":\"BaseParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:propose", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:propose", "target": "{\"name\":\"propose\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"propose (current_state: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:sample", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:sample", "target": "{\"name\":\"sample\",\"args\":[{\"name\":\"current_state\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"current_state: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"sample (current_state: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:BaseParser:value", "target": "{\"name\":\"value\",\"args\":[{\"name\":\"input\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"value (input: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"name\":\"BasePostProcessPlugin\",\"package\":\"metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin\",\"attributes\":{\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_extract_content_from_output\":{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]},\"run_repair_llm_output\":{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]},\"run_repair_llm_raw_output\":{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]},\"run_retry_parse_json_text\":{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output"}, {"predicate": "has_class_method", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"lineno\":15,\"end_lineno\":69,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BasePostProcessPlugin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin", "target": "{\"name\":\"BasePostProcessPlugin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_extract_content_from_output", "target": "{\"name\":\"run_extract_content_from_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"right_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"right_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_extract_content_from_output(content: str, right_key: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_output", "target": "{\"name\":\"run_repair_llm_output\",\"args\":[{\"name\":\"output\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output: str\",\"compositions\":[]},{\"name\":\"schema\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"schema: dict\",\"compositions\":[]},{\"name\":\"req_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"req_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_repair_llm_output(output: str, schema: dict, req_key: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_repair_llm_raw_output", "target": "{\"name\":\"run_repair_llm_raw_output\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"req_keys\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"req_keys: list[str]\",\"compositions\":[]},{\"name\":\"repair_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"repair_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run_repair_llm_raw_output(content: str, req_keys: list[str], repair_type: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:BasePostProcessPlugin:run_retry_parse_json_text", "target": "{\"name\":\"run_retry_parse_json_text\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[dict,list]\",\"description\":\"Union[dict, list]\",\"compositions\":[]},\"description\":\"run_retry_parse_json_text(content: str): Union[dict, list]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/base_store.py", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class", "source": "metagpt/document_store/base_store.py", "target": "metagpt/document_store/base_store.py:LocalStore"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"name\":\"BaseStore\",\"package\":\"metagpt/document_store/base_store.py:BaseStore\",\"attributes\":{},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search ()\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "metagpt/document_store/base_store.py:BaseStore:write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"lineno\":12,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BaseStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/base_store.py:BaseStore", "target": "{\"name\":\"BaseStore\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:add", "target": "{\"name\":\"add\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:search", "target": "{\"name\":\"search\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:BaseStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:BaseStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/brain_memory.py", "target": "metagpt/memory/brain_memory.py:BrainMemory"}, {"predicate": "has_class", "source": "metagpt/memory/brain_memory.py", "target": "metagpt/memory/brain_memory.py:BrainMemory:Config"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"name\":\"BrainMemory\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory\",\"attributes\":{\"cacheable\":{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]},\"historical_summary\":{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]},\"history_text\":{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]},\"is_dirty\":{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]},\"is_history_available\":{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]},\"last_history_id\":{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]},\"last_talk\":{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"add_answer\":{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_history\":{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]},\"add_talk\":{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]},\"dumps\":{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]},\"exists\":{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]},\"extract_info\":{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]},\"get_knowledge\":{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]},\"get_title\":{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]},\"is_related\":{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]},\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]},\"pop_last_talk\":{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]},\"rewrite\":{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]},\"set_history_summary\":{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]},\"split_texts\":{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]},\"summarize\":{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]},\"to_int\":{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]},\"to_metagpt_history_format\":{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]},\"to_redis_key\":{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"BaseLLM\"],\"aggregations\":[\"BrainMemory\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:cacheable"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:history"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:history_text"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:knowledge"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:last_talk"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:llm"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_answer"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_history"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:add_talk"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:dumps"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:exists"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:extract_info"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:get_title"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:loads"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:split_texts"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_int"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:BrainMemory"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/roles/assistant.py:Assistant"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/roles/assistant.py:Assistant:memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/schema.py:Message"}, {"predicate": "is_composite_of", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_summarize"}, {"predicate": "has_class_method", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"lineno\":26,\"end_lineno\":331,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrainMemory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "{\"name\":\"BrainMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cacheable\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"historical_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"history_text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_dirty\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_history_available\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"List[Message]\",\"default_value\":\"\"},{\"name\":\"last_history_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"last_talk\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/brain_memory.py:BrainMemory", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:cacheable", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:cacheable", "target": "{\"name\":\"cacheable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"cacheable : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:historical_summary", "target": "{\"name\":\"historical_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"historical_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:history", "target": "{\"name\":\"history\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"history : List[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "{\"name\":\"history_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_text\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:history_text", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_dirty", "target": "{\"name\":\"is_dirty\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_dirty : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "{\"name\":\"is_history_available\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_history_available\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_history_available", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:knowledge", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:knowledge", "target": "{\"name\":\"knowledge\",\"type_\":\"List[Message]\",\"default_\":\"\",\"description\":\"knowledge : List[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_history_id", "target": "{\"name\":\"last_history_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"last_history_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_talk", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:last_talk", "target": "{\"name\":\"last_talk\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"last_talk : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:llm", "target": "{\"name\":\"llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_answer", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_answer", "target": "{\"name\":\"add_answer\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_answer(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_history", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_history", "target": "{\"name\":\"add_history\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_history(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:add_talk", "target": "{\"name\":\"add_talk\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_talk(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:dumps", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:dumps", "target": "{\"name\":\"dumps\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"dumps(redis_key: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:exists", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:exists", "target": "{\"name\":\"exists\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"exists(text): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:extract_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:extract_info", "target": "{\"name\":\"extract_info\",\"args\":[{\"name\":\"input_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"input_string\",\"compositions\":[]},{\"name\":\"pattern\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pattern\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_info(input_string, pattern)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_knowledge", "target": "{\"name\":\"get_knowledge\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_knowledge(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_title", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:get_title", "target": "{\"name\":\"get_title\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_title(llm, max_words): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_related", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:is_related", "target": "{\"name\":\"is_related\",\"args\":[{\"name\":\"text1\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text1\",\"compositions\":[]},{\"name\":\"text2\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text2\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_related(text1, text2, llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'BrainMemory'\",\"description\":\"'BrainMemory'\",\"compositions\":[\"BrainMemory\"]},\"description\":\"loads(redis_key: str): 'BrainMemory'\",\"aggregations\":[\"BrainMemory\"]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:pop_last_talk", "target": "{\"name\":\"pop_last_talk\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pop_last_talk()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:rewrite", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:rewrite", "target": "{\"name\":\"rewrite\",\"args\":[{\"name\":\"sentence\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sentence: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"context: str\",\"compositions\":[]},{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rewrite(sentence: str, context: str, llm)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:set_history_summary", "target": "{\"name\":\"set_history_summary\",\"args\":[{\"name\":\"history_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history_summary\",\"compositions\":[]},{\"name\":\"redis_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"redis_key\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_history_summary(history_summary, redis_key)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:split_texts", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:split_texts", "target": "{\"name\":\"split_texts\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"window_size\",\"type_\":\"\",\"default_\":\"\",\"description\":\"window_size\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"split_texts(text: str, window_size): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:summarize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:summarize", "target": "{\"name\":\"summarize\",\"args\":[{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},{\"name\":\"max_words\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_words\",\"compositions\":[]},{\"name\":\"keep_language\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"keep_language: bool\",\"compositions\":[]},{\"name\":\"limit\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"limit: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize(llm, max_words, keep_language: bool, limit: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_int", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_int", "target": "{\"name\":\"to_int\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"default_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"default_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_int(v, default_value)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_metagpt_history_format", "target": "{\"name\":\"to_metagpt_history_format\",\"args\":[{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"to_metagpt_history_format(history): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:to_redis_key", "target": "{\"name\":\"to_redis_key\",\"args\":[{\"name\":\"prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prefix: str\",\"compositions\":[]},{\"name\":\"user_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"user_id: str\",\"compositions\":[]},{\"name\":\"chat_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chat_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_redis_key(prefix: str, user_id: str, chat_id: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/browser_config.py", "target": "metagpt/configs/browser_config.py:BrowserConfig"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"name\":\"BrowserConfig\",\"package\":\"metagpt/configs/browser_config.py:BrowserConfig\",\"attributes\":{\"browser\":{\"name\":\"browser\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"driver\":{\"name\":\"driver\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"driver : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:browser"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:driver"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"predicate": "has_class_property", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/configs/browser_config.py:BrowserConfig:path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "metagpt/config2.py:Config:browser"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BrowserConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/browser_config.py:BrowserConfig", "target": "{\"name\":\"BrowserConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"driver\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:browser", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:browser", "target": "{\"name\":\"browser\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:driver", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:driver", "target": "{\"name\":\"driver\",\"type_\":\"Literal['chromium','firefox','webkit']\",\"default_\":\"\",\"description\":\"driver : Literal['chromium', 'firefox', 'webkit']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/browser_config.py:BrowserConfig:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/browser_config.py:BrowserConfig:path", "target": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BugFixContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BugFixContext", "target": "{\"name\":\"BugFixContext\",\"package\":\"metagpt/schema.py:BugFixContext\",\"attributes\":{\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:BugFixContext", "target": "metagpt/schema.py:BugFixContext:filename"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:BugFixContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:BugFixContext", "target": "{\"lineno\":472,\"end_lineno\":473,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"BugFixContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:BugFixContext", "target": "{\"name\":\"BugFixContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:BugFixContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:BugFixContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/config2.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/config2.py", "target": "metagpt/config2.py:CLIParams"}, {"predicate": "has_class", "source": "metagpt/config2.py", "target": "metagpt/config2.py:Config"}, {"predicate": "has_function", "source": "metagpt/config2.py", "target": "metagpt/config2.py:merge_dict"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams", "target": "{\"name\":\"CLIParams\",\"package\":\"metagpt/config2.py:CLIParams\",\"attributes\":{\"git_reinit\":{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}},\"methods\":{\"check_project_path\":{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:git_reinit"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:inc"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:max_auto_summarize_code"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:project_name"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:project_path"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:reqa_file"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:CLIParams", "target": "metagpt/config2.py:CLIParams:check_project_path"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:CLIParams", "target": "{\"lineno\":25,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CLIParams\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config2.py:CLIParams", "target": "{\"name\":\"CLIParams\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"git_reinit\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:git_reinit", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:git_reinit", "target": "{\"name\":\"git_reinit\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"git_reinit : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:inc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:inc", "target": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:max_auto_summarize_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:max_auto_summarize_code", "target": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_auto_summarize_code : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:reqa_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:reqa_file", "target": "{\"name\":\"reqa_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reqa_file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:CLIParams:check_project_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:CLIParams:check_project_path", "target": "{\"name\":\"check_project_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_project_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/git_repository.py", "target": "metagpt/utils/git_repository.py:ChangeType"}, {"predicate": "has_class", "source": "metagpt/utils/git_repository.py", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"name\":\"ChangeType\",\"package\":\"metagpt/utils/git_repository.py:ChangeType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "metagpt/utils/git_repository.py:ChangeType:name"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"lineno\":25,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChangeType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/git_repository.py:ChangeType", "target": "{\"name\":\"ChangeType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:ChangeType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:ChangeType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/chromadb_store.py", "target": "metagpt/document_store/chromadb_store.py:ChromaStore"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"name\":\"ChromaStore\",\"package\":\"metagpt/document_store/chromadb_store.py:ChromaStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"collection\":{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:client"}, {"predicate": "has_class_property", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/management/skill_manager.py:SkillManager"}, {"predicate": "isCompositeOn", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/management/skill_manager.py:SkillManager:_store"}, {"predicate": "has_class_method", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"lineno\":11,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ChromaStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/chromadb_store.py:ChromaStore", "target": "{\"name\":\"ChromaStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"collection\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:client", "target": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:collection", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:collection", "target": "{\"name\":\"collection\",\"type_\":\"\",\"default_\":\"\",\"description\":\"collection\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"document\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(document, metadata, _id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metadata_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata_filter\",\"compositions\":[]},{\"name\":\"document_filter\",\"type_\":\"\",\"default_\":\"\",\"description\":\"document_filter\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metadata_filter, document_filter)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"documents\",\"type_\":\"\",\"default_\":\"\",\"description\":\"documents\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(documents, metadatas, ids)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/anthropic_api.py", "target": "metagpt/provider/anthropic_api.py:Claude2"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"name\":\"Claude2\",\"package\":\"metagpt/provider/anthropic_api.py:Claude2\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:ask"}, {"predicate": "has_class_method", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "metagpt/provider/anthropic_api.py:Claude2:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Claude2\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/anthropic_api.py:Claude2", "target": "{\"name\":\"Claude2\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:ask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/anthropic_api.py:Claude2:ask", "target": "{\"name\":\"ask\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/repo_parser.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:CodeBlockInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassMethod"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotClassRelationship"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:DotReturn"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:RepoFileInfo"}, {"predicate": "has_class", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:RepoParser"}, {"predicate": "has_function", "source": "metagpt/repo_parser.py", "target": "metagpt/repo_parser.py:is_func"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"name\":\"CodeBlockInfo\",\"package\":\"metagpt/repo_parser.py:CodeBlockInfo\",\"attributes\":{\"end_lineno\":{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]},\"lineno\":{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]},\"properties\":{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]},\"tokens\":{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]},\"type_name\":{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:lineno"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:properties"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:tokens"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "metagpt/repo_parser.py:CodeBlockInfo:type_name"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeBlockInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:CodeBlockInfo", "target": "{\"name\":\"CodeBlockInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"end_lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"lineno\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"properties\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"tokens\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"type_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:end_lineno", "target": "{\"name\":\"end_lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"end_lineno : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:lineno", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:lineno", "target": "{\"name\":\"lineno\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"lineno : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:properties", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:properties", "target": "{\"name\":\"properties\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"properties : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:tokens", "target": "{\"name\":\"tokens\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"tokens : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:CodeBlockInfo:type_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:CodeBlockInfo:type_name", "target": "{\"name\":\"type_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/common.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:CodeParser"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:NoMoneyException"}, {"predicate": "has_class", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:OutputParser"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:check_cmd_exists"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:require_python_version"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:print_members"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:parse_recipient"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:get_class_name"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_str"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_str_set"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:is_send_to"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:any_to_name"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:concat_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:split_namespace"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:general_after_log"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_json_file"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:write_json_file"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:import_class"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:import_class_inst"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:format_trackback_info"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:serialize_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:role_raise_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:aread"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:awrite"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:read_file_block"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:list_files"}, {"predicate": "has_function", "source": "metagpt/utils/common.py", "target": "metagpt/utils/common.py:parse_json_code_block"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"name\":\"CodeParser\",\"package\":\"metagpt/utils/common.py:CodeParser\",\"attributes\":{},\"methods\":{\"parse_block\":{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_block"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_blocks"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_file_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:CodeParser", "target": "metagpt/utils/common.py:CodeParser:parse_str"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"lineno\":234,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:CodeParser", "target": "{\"name\":\"CodeParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_block", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_block", "target": "{\"name\":\"parse_block\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_block(block: str, text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_blocks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_blocks", "target": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_code", "target": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(block: str, text: str, lang: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_file_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_file_list", "target": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(block: str, text: str, lang: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:CodeParser:parse_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:CodeParser:parse_str", "target": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"block\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"block: str\",\"compositions\":[]},{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(block: str, text: str, lang: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"name\":\"CodePlanAndChangeContext\",\"package\":\"metagpt/schema.py:CodePlanAndChangeContext\",\"attributes\":{\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"prd_filename\":{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:design_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:requirement"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:task_filename"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/schema.py:CodePlanAndChangeContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "?:CodePlanAndChangeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"lineno\":476,\"end_lineno\":497,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodePlanAndChangeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodePlanAndChangeContext", "target": "{\"name\":\"CodePlanAndChangeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:design_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:design_filename", "target": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:prd_filename", "target": "{\"name\":\"prd_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:requirement", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:requirement", "target": "{\"name\":\"requirement\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"requirement : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:task_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:task_filename", "target": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodePlanAndChangeContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodePlanAndChangeContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodePlanAndChangeContext\",\"description\":\"CodePlanAndChangeContext\",\"compositions\":[\"CodePlanAndChangeContext\"]},\"description\":\"loads(filenames: List): CodePlanAndChangeContext\",\"aggregations\":[\"CodePlanAndChangeContext\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"name\":\"CodeSummarizeContext\",\"package\":\"metagpt/schema.py:CodeSummarizeContext\",\"attributes\":{\"codes_filenames\":{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]},\"design_filename\":{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"task_filename\":{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}},\"methods\":{\"loads\":{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}},\"compositions\":[],\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:codes_filenames"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:design_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:reason"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:task_filename"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:loads"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "?:CodeSummarizeContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "metagpt/schema.py:CodeSummarizeContext:__hash__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"lineno\":450,\"end_lineno\":469,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodeSummarizeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"name\":\"CodeSummarizeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"codes_filenames\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"design_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "{\"description\":\"The source code defines a class CodeSummarizeContext with attributes design_filename, task_filename, codes_filenames, and reason. It also provides a static method loads to create an instance of CodeSummarizeContext from a list of filenames.\",\"use_cases\":[{\"description\":\"Load CodeSummarizeContext\",\"inputs\":[\"filenames: List[str]\"],\"outputs\":[\"ctx: CodeSummarizeContext\"],\"actors\":[\"External System\"],\"steps\":[\"Create an empty instance of CodeSummarizeContext\",\"Iterate through the list of filenames\",\"If the filename is relative to SYSTEM_DESIGN_FILE_REPO, set design_filename attribute\",\"If the filename is relative to TASK_FILE_REPO, set task_filename attribute\"],\"reason\":\"When the external system needs to load a CodeSummarizeContext instance from a list of filenames.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:CodeSummarizeContext", "target": "\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:codes_filenames", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:codes_filenames", "target": "{\"name\":\"codes_filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"codes_filenames : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:design_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:design_filename", "target": "{\"name\":\"design_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"design_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:reason", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:reason", "target": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:task_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:task_filename", "target": "{\"name\":\"task_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"task_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:loads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodeSummarizeContext:loads", "target": "{\"name\":\"loads\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"filenames: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeSummarizeContext\",\"description\":\"CodeSummarizeContext\",\"compositions\":[\"CodeSummarizeContext\"]},\"description\":\"loads(filenames: List): CodeSummarizeContext\",\"aggregations\":[\"CodeSummarizeContext\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext", "target": "{\"name\":\"CodingContext\",\"package\":\"metagpt/schema.py:CodingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"design_doc\":{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"task_doc\":{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:code_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:design_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:CodingContext:task_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodingContext", "target": "?:Document"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:CodingContext", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:CodingContext", "target": "{\"lineno\":418,\"end_lineno\":422,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CodingContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:CodingContext", "target": "{\"name\":\"CodingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"design_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:CodingContext", "target": "{\"description\":\"The source code defines a class CodingContext with attributes filename, design_doc, task_doc, and code_doc. The class is a part of a larger system and interacts with external documents such as Document.\",\"use_cases\":[{\"description\":\"Create Coding Context\",\"inputs\":[\"filename\"],\"outputs\":[\"coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides a filename as input\",\"System creates a new CodingContext object with the provided filename\",\"System returns the created CodingContext object\"],\"reason\":\"When a user needs to create a new coding context for a specific file\"},{\"description\":\"Update Design Document\",\"inputs\":[\"coding_context\",\"design_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated design document as input\",\"System updates the design document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the design document in a coding context\"},{\"description\":\"Update Task Document\",\"inputs\":[\"coding_context\",\"task_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated task document as input\",\"System updates the task document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the task document in a coding context\"},{\"description\":\"Update Code Document\",\"inputs\":[\"coding_context\",\"code_doc\"],\"outputs\":[\"updated_coding_context\"],\"actors\":[\"User\"],\"steps\":[\"User provides the coding context and the updated code document as input\",\"System updates the code document in the provided coding context\",\"System returns the updated coding context\"],\"reason\":\"When a user needs to update the code document in a coding context\"}],\"relationship\":[\"Create Coding Context is a prerequisite for Update Design Document, Update Task Document, and Update Code Document\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:CodingContext", "target": "\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:code_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:code_doc", "target": "{\"name\":\"code_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"code_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:design_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:design_doc", "target": "{\"name\":\"design_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"design_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:CodingContext:task_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:CodingContext:task_doc", "target": "{\"name\":\"task_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"task_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/research.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:CollectLinks"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:ConductResearch"}, {"predicate": "has_class", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "has_function", "source": "metagpt/actions/research.py", "target": "metagpt/actions/research.py:get_research_system_text"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"name\":\"CollectLinks\",\"package\":\"metagpt/actions/research.py:CollectLinks\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"rank_func\":{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}},\"compositions\":[\"Callable\"],\"aggregations\":[\"str\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:rank_func"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:run"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "?:Callable"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "?:str\\"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:CollectLinks", "target": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"lineno\":78,\"end_lineno\":171,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CollectLinks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:CollectLinks", "target": "{\"name\":\"CollectLinks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rank_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[list[str]],None]]\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:rank_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:rank_func", "target": "{\"name\":\"rank_func\",\"type_\":\"Optional[Callable[[list[str]],None]]\",\"default_\":\"\",\"description\":\"rank_func : Optional[Callable[[list[str]], None]]\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:CollectLinks:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"decomposition_nums\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"decomposition_nums: int\",\"compositions\":[]},{\"name\":\"url_per_query\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"url_per_query: int\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\\\\|None\",\"default_\":\"\",\"description\":\"system_text: str \\\\| None\",\"compositions\":[\"str\\\\\"]}],\"return_args\":{\"type_\":\"dict[str,list[str]]\",\"description\":\"dict[str, list[str]]\",\"compositions\":[]},\"description\":\"run(topic: str, decomposition_nums: int, url_per_query: int, system_text: str \\\\| None): dict[str, list[str]]\",\"aggregations\":[\"str\\\\\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Components"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Entity"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Example"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Parameter"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Returns"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration"}, {"predicate": "has_class", "source": "metagpt/learn/skill_loader.py", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Components", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"name\":\"Components\",\"package\":\"metagpt/learn/skill_loader.py:Components\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"lineno\":58,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Components\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Components", "target": "{\"name\":\"Components\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"name\":\"ConductResearch\",\"package\":\"metagpt/actions/research.py:ConductResearch\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:ConductResearch", "target": "metagpt/actions/research.py:ConductResearch:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"lineno\":240,\"end_lineno\":265,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ConductResearch\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:ConductResearch", "target": "{\"name\":\"ConductResearch\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:ConductResearch:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str, content: str, system_text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/config2.py:Config\",\"attributes\":{\"AZURE_TTS_REGION\":{\"name\":\"AZURE_TTS_REGION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_REGION : str\",\"compositions\":[]},\"AZURE_TTS_SUBSCRIPTION_KEY\":{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_SUBSCRIPTION_KEY : str\",\"compositions\":[]},\"IFLYTEK_API_KEY\":{\"name\":\"IFLYTEK_API_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_KEY : str\",\"compositions\":[]},\"IFLYTEK_API_SECRET\":{\"name\":\"IFLYTEK_API_SECRET\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_SECRET : str\",\"compositions\":[]},\"IFLYTEK_APP_ID\":{\"name\":\"IFLYTEK_APP_ID\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_APP_ID : str\",\"compositions\":[]},\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\":{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL : str\",\"compositions\":[]},\"browser\":{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]},\"code_review_k_times\":{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]},\"enable_longterm_memory\":{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]},\"inc\":{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"llm_for_researcher_report\":{\"name\":\"llm_for_researcher_report\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_report : str\",\"compositions\":[]},\"llm_for_researcher_summary\":{\"name\":\"llm_for_researcher_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_summary : str\",\"compositions\":[]},\"max_auto_summarize_code\":{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]},\"mermaid\":{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]},\"mermaid_engine\":{\"name\":\"mermaid_engine\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_engine : str\",\"compositions\":[]},\"mmdc\":{\"name\":\"mmdc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mmdc : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]},\"pyppeteer_executable_path\":{\"name\":\"pyppeteer_executable_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_executable_path : str\",\"compositions\":[]},\"redis\":{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]},\"redis_key\":{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]},\"repair_llm_output\":{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]},\"reqa_file\":{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},\"s3\":{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]},\"search\":{\"name\":\"search\",\"type_\":\"Optional[SearchConfig]\",\"default_\":\"\",\"description\":\"search : Optional[SearchConfig]\",\"compositions\":[\"SearchConfig\"]},\"workspace\":{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}},\"methods\":{\"default\":{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]},\"from_home\":{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]},\"get_azure_llm\":{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"get_openai_llm\":{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]},\"update_via_cli\":{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\",\"S3Config\",\"SearchConfig\"],\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:AZURE_TTS_REGION"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:AZURE_TTS_SUBSCRIPTION_KEY"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:IFLYTEK_API_KEY"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:IFLYTEK_API_SECRET"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:IFLYTEK_APP_ID"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:METAGPT_TEXT_TO_IMAGE_MODEL_URL"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:browser"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:code_review_k_times"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:enable_longterm_memory"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:inc"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:language"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:llm"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:llm_for_researcher_report"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:llm_for_researcher_summary"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:max_auto_summarize_code"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:mermaid"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:mermaid_engine"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:mmdc"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:project_name"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:project_path"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:prompt_schema"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:proxy"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:puppeteer_config"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:pyppeteer_executable_path"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:redis"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:redis_key"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:repair_llm_output"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:reqa_file"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:s3"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:search"}, {"predicate": "has_class_property", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:workspace"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:default"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:from_home"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:get_azure_llm"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:get_openai_llm"}, {"predicate": "has_class_method", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:Config:update_via_cli"}, {"predicate": "isAggregateOf", "source": "metagpt/config2.py:Config", "target": "?:LLMConfig"}, {"predicate": "isGeneralizeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/config2.py:CLIParams"}, {"predicate": "isGeneralizeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/config2.py:Config", "target": "metagpt/context.py:Context:config"}, {"predicate": "is_composite_of", "source": "metagpt/config2.py:Config", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "is_composite_of", "source": "metagpt/config2.py:Config", "target": "metagpt/configs/s3_config.py:S3Config"}, {"predicate": "is_composite_of", "source": "metagpt/config2.py:Config", "target": "metagpt/configs/search_config.py:SearchConfig"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:Config", "target": "{\"lineno\":44,\"end_lineno\":132,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Config\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/config2.py:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"AZURE_TTS_REGION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_API_KEY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_API_SECRET\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IFLYTEK_APP_ID\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"browser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_review_k_times\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"enable_longterm_memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"inc\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm_for_researcher_report\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"llm_for_researcher_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"max_auto_summarize_code\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mermaid_engine\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"mmdc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"Literal['json','markdown','raw']\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"pyppeteer_executable_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"redis\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"},{\"name\":\"redis_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"repair_llm_output\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"reqa_file\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"s3\",\"visibility\":\"+\",\"value_type\":\"Optional[S3Config]\",\"default_value\":\"\"},{\"name\":\"search\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchConfig]\",\"default_value\":\"\"},{\"name\":\"workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "?:RedisConfig"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "?:S3Config"}, {"predicate": "isCompositeOf", "source": "metagpt/config2.py:Config", "target": "?:SearchConfig"}, {"predicate": "is", "source": "metagpt/config2.py:Config:AZURE_TTS_REGION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:AZURE_TTS_REGION", "target": "{\"name\":\"AZURE_TTS_REGION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_REGION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:AZURE_TTS_SUBSCRIPTION_KEY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:AZURE_TTS_SUBSCRIPTION_KEY", "target": "{\"name\":\"AZURE_TTS_SUBSCRIPTION_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"AZURE_TTS_SUBSCRIPTION_KEY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:IFLYTEK_API_KEY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:IFLYTEK_API_KEY", "target": "{\"name\":\"IFLYTEK_API_KEY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_KEY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:IFLYTEK_API_SECRET", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:IFLYTEK_API_SECRET", "target": "{\"name\":\"IFLYTEK_API_SECRET\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_API_SECRET : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:IFLYTEK_APP_ID", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:IFLYTEK_APP_ID", "target": "{\"name\":\"IFLYTEK_APP_ID\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IFLYTEK_APP_ID : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:METAGPT_TEXT_TO_IMAGE_MODEL_URL", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:METAGPT_TEXT_TO_IMAGE_MODEL_URL", "target": "{\"name\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"METAGPT_TEXT_TO_IMAGE_MODEL_URL : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:browser", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:browser", "target": "{\"name\":\"browser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"browser\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:code_review_k_times", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:code_review_k_times", "target": "{\"name\":\"code_review_k_times\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code_review_k_times : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:enable_longterm_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:enable_longterm_memory", "target": "{\"name\":\"enable_longterm_memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"enable_longterm_memory : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:inc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:inc", "target": "{\"name\":\"inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"inc : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:llm_for_researcher_report", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:llm_for_researcher_report", "target": "{\"name\":\"llm_for_researcher_report\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_report : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:llm_for_researcher_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:llm_for_researcher_summary", "target": "{\"name\":\"llm_for_researcher_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"llm_for_researcher_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:max_auto_summarize_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:max_auto_summarize_code", "target": "{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:mermaid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:mermaid", "target": "{\"name\":\"mermaid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mermaid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:mermaid_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:mermaid_engine", "target": "{\"name\":\"mermaid_engine\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_engine : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:mmdc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:mmdc", "target": "{\"name\":\"mmdc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mmdc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"Literal['json','markdown','raw']\",\"default_\":\"\",\"description\":\"prompt_schema : Literal['json', 'markdown', 'raw']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:puppeteer_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:puppeteer_config", "target": "{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:pyppeteer_executable_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:pyppeteer_executable_path", "target": "{\"name\":\"pyppeteer_executable_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"pyppeteer_executable_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:redis", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:redis", "target": "{\"name\":\"redis\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"redis : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:redis_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:redis_key", "target": "{\"name\":\"redis_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"redis_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:repair_llm_output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:repair_llm_output", "target": "{\"name\":\"repair_llm_output\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"repair_llm_output : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:reqa_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:reqa_file", "target": "{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:s3", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:s3", "target": "{\"name\":\"s3\",\"type_\":\"Optional[S3Config]\",\"default_\":\"\",\"description\":\"s3 : Optional[S3Config]\",\"compositions\":[\"S3Config\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:search", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:search", "target": "{\"name\":\"search\",\"type_\":\"Optional[SearchConfig]\",\"default_\":\"\",\"description\":\"search : Optional[SearchConfig]\",\"compositions\":[\"SearchConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:workspace", "target": "{\"name\":\"workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:default", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:default", "target": "{\"name\":\"default\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"default()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:from_home", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:from_home", "target": "{\"name\":\"from_home\",\"args\":[{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_home(path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:get_azure_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:get_azure_llm", "target": "{\"name\":\"get_azure_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_azure_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:get_openai_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:get_openai_llm", "target": "{\"name\":\"get_openai_llm\",\"args\":[],\"return_args\":{\"type_\":\"Optional[LLMConfig]\",\"description\":\"Optional[LLMConfig]\",\"compositions\":[\"LLMConfig\"]},\"description\":\"get_openai_llm(): Optional[LLMConfig]\",\"aggregations\":[\"LLMConfig\"]}"}, {"predicate": "is", "source": "metagpt/config2.py:Config:update_via_cli", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/config2.py:Config:update_via_cli", "target": "{\"name\":\"update_via_cli\",\"args\":[{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},{\"name\":\"inc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"inc\",\"compositions\":[]},{\"name\":\"reqa_file\",\"type_\":\"\",\"default_\":\"\",\"description\":\"reqa_file\",\"compositions\":[]},{\"name\":\"max_auto_summarize_code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"max_auto_summarize_code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_via_cli(project_path, project_name, inc, reqa_file, max_auto_summarize_code)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:Usage"}, {"predicate": "has_function", "source": "metagpt/tools/openai_text_to_embedding.py", "target": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config\",\"attributes\":{\"alias\":{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"alias\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:Config:alias", "target": "{\"name\":\"alias\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"alias : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/memory/brain_memory.py:BrainMemory:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed"}, {"predicate": "has_class_view", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/brain_memory.py:BrainMemory:Config:arbitrary_types_allowed", "target": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "{\"name\":\"Config\",\"package\":\"metagpt/strategy/tot.py:TreeofThought:Config\",\"attributes\":{\"arbitrary_types_allowed\":{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:TreeofThought:Config", "target": "{\"name\":\"Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arbitrary_types_allowed\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:Config:arbitrary_types_allowed", "target": "{\"name\":\"arbitrary_types_allowed\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"arbitrary_types_allowed : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context", "target": "{\"name\":\"Context\",\"package\":\"metagpt/context.py:Context\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]},\"kwargs\":{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}},\"methods\":{\"llm\":{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]},\"llm_with_cost_manager_from_llm_config\":{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]},\"new_environ\":{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}},\"compositions\":[\"GitRepository\",\"ProjectRepo\",\"Path\"],\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:config"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:git_repo"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:kwargs"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:model_config"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:repo"}, {"predicate": "has_class_property", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:src_workspace"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:llm"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config"}, {"predicate": "has_class_method", "source": "metagpt/context.py:Context", "target": "metagpt/context.py:Context:new_environ"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/context.py:Context", "target": "?:BaseLLM"}, {"predicate": "isAggregateOf", "source": "metagpt/context.py:Context", "target": "?:LLMConfig"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "metagpt/environment.py:Environment"}, {"predicate": "isCompositeOn", "source": "metagpt/context.py:Context", "target": "metagpt/environment.py:Environment:context"}, {"predicate": "is_composite_of", "source": "metagpt/context.py:Context", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "is_composite_of", "source": "metagpt/context.py:Context", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "has_page_info", "source": "metagpt/context.py:Context", "target": "{\"lineno\":55,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Context\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context.py:Context", "target": "{\"name\":\"Context\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"Optional[GitRepository]\",\"default_value\":\"\"},{\"name\":\"kwargs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"Optional[ProjectRepo]\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:GitRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/context.py:Context", "target": "?:ProjectRepo"}, {"predicate": "has_class_use_case", "source": "metagpt/context.py:Context", "target": "{\"description\":\"This source code defines a Context class that represents the environment context for MetaGPT. It contains methods for creating a new os.environ object and for obtaining a LLM (Language Model) instance with a cost manager.\",\"use_cases\":[{\"description\":\"Create a new os.environ object\",\"inputs\":[],\"outputs\":[\"env\"],\"actors\":[\"ProjectRepo\",\"GitRepository\",\"Path\"],\"steps\":[\"Copy the current os.environ object\",\"Return the copied os.environ object\"],\"reason\":\"When the system needs to create a new os.environ object for the MetaGPT environment\"},{\"description\":\"Obtain a LLM (Language Model) instance with a cost manager\",\"inputs\":[],\"outputs\":[\"llm\"],\"actors\":[\"BaseLLM\",\"LLMConfig\"],\"steps\":[\"Create a new LLM instance based on the configuration\",\"Set the cost manager for the LLM instance\",\"Return the LLM instance\"],\"reason\":\"When the system needs to obtain a LLM instance with a cost manager for the MetaGPT environment\"}],\"relationship\":[\"The 'Obtain a LLM (Language Model) instance with a cost manager' use case depends on the 'Create a new os.environ object' use case as it requires the environment context to be set up before obtaining the LLM instance.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/context.py:Context", "target": "\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n"}, {"predicate": "is", "source": "metagpt/context.py:Context:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"Optional[GitRepository]\",\"default_\":\"\",\"description\":\"git_repo : Optional[GitRepository]\",\"compositions\":[\"GitRepository\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:kwargs", "target": "{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:repo", "target": "{\"name\":\"repo\",\"type_\":\"Optional[ProjectRepo]\",\"default_\":\"\",\"description\":\"repo : Optional[ProjectRepo]\",\"compositions\":[\"ProjectRepo\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"src_workspace : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:llm", "target": "{\"name\":\"llm\",\"args\":[],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm(): BaseLLM\",\"aggregations\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:llm_with_cost_manager_from_llm_config", "target": "{\"name\":\"llm_with_cost_manager_from_llm_config\",\"args\":[{\"name\":\"llm_config\",\"type_\":\"LLMConfig\",\"default_\":\"\",\"description\":\"llm_config: LLMConfig\",\"compositions\":[\"LLMConfig\"]}],\"return_args\":{\"type_\":\"BaseLLM\",\"description\":\"BaseLLM\",\"compositions\":[\"BaseLLM\"]},\"description\":\"llm_with_cost_manager_from_llm_config(llm_config: LLMConfig): BaseLLM\",\"aggregations\":[\"BaseLLM\",\"LLMConfig\"]}"}, {"predicate": "is", "source": "metagpt/context.py:Context:new_environ", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context.py:Context:new_environ", "target": "{\"name\":\"new_environ\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_environ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/context_mixin.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/context_mixin.py", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"name\":\"ContextMixin\",\"package\":\"metagpt/context_mixin.py:ContextMixin\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"private_config\":{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]},\"private_context\":{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]},\"private_llm\":{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}},\"methods\":{\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]},\"set_config\":{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]},\"set_context\":{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]},\"set_llm\":{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}},\"compositions\":[\"Config\",\"Context\",\"BaseLLM\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:config"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:context"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:llm"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:model_config"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_config"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_context"}, {"predicate": "has_class_property", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:private_llm"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_config"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_context"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:set_llm"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/config2.py:Config"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context.py:Context"}, {"predicate": "is_composite_of", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/context_mixin.py:ContextMixin", "target": "metagpt/context_mixin.py:ContextMixin:__init__"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"lineno\":17,\"end_lineno\":102,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ContextMixin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/context_mixin.py:ContextMixin", "target": "{\"name\":\"ContextMixin\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"private_config\",\"visibility\":\"+\",\"value_type\":\"Optional[Config]\",\"default_value\":\"\"},{\"name\":\"private_context\",\"visibility\":\"+\",\"value_type\":\"Optional[Context]\",\"default_value\":\"\"},{\"name\":\"private_llm\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseLLM]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:Config"}, {"predicate": "isCompositeOf", "source": "metagpt/context_mixin.py:ContextMixin", "target": "?:Context"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:config", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:context", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:llm", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_config", "target": "{\"name\":\"private_config\",\"type_\":\"Optional[Config]\",\"default_\":\"\",\"description\":\"private_config : Optional[Config]\",\"compositions\":[\"Config\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_context", "target": "{\"name\":\"private_context\",\"type_\":\"Optional[Context]\",\"default_\":\"\",\"description\":\"private_context : Optional[Context]\",\"compositions\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:private_llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:private_llm", "target": "{\"name\":\"private_llm\",\"type_\":\"Optional[BaseLLM]\",\"default_\":\"\",\"description\":\"private_llm : Optional[BaseLLM]\",\"compositions\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(k, v, override)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_config", "target": "{\"name\":\"set_config\",\"args\":[{\"name\":\"config\",\"type_\":\"Config\",\"default_\":\"\",\"description\":\"config: Config\",\"compositions\":[\"Config\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_config(config: Config, override)\",\"aggregations\":[\"Config\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_context", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_context", "target": "{\"name\":\"set_context\",\"args\":[{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_context(context: Context, override)\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:set_llm", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/context_mixin.py:ContextMixin:set_llm", "target": "{\"name\":\"set_llm\",\"args\":[{\"name\":\"llm\",\"type_\":\"BaseLLM\",\"default_\":\"\",\"description\":\"llm: BaseLLM\",\"compositions\":[\"BaseLLM\"]},{\"name\":\"override\",\"type_\":\"\",\"default_\":\"\",\"description\":\"override\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_llm(llm: BaseLLM, override)\",\"aggregations\":[\"BaseLLM\"]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:Costs"}, {"predicate": "has_class", "source": "metagpt/utils/cost_manager.py", "target": "metagpt/utils/cost_manager.py:TokenCostManager"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"name\":\"CostManager\",\"package\":\"metagpt/utils/cost_manager.py:CostManager\",\"attributes\":{\"max_budget\":{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]},\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]},\"get_total_completion_tokens\":{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]},\"get_total_cost\":{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]},\"get_total_prompt_tokens\":{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:max_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_costs"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_cost"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/utils/cost_manager.py:CostManager:update_cost"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "?:Costs"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "metagpt/context.py:Context:cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"lineno\":24,\"end_lineno\":82,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:CostManager", "target": "{\"name\":\"CostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"max_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:max_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:max_budget", "target": "{\"name\":\"max_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"max_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_budget", "target": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_completion_tokens", "target": "{\"name\":\"get_total_completion_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_completion_tokens()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_cost", "target": "{\"name\":\"get_total_cost\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_cost()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:get_total_prompt_tokens", "target": "{\"name\":\"get_total_prompt_tokens\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_total_prompt_tokens()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:CostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:CostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"name\":\"Costs\",\"package\":\"metagpt/utils/cost_manager.py:Costs\",\"attributes\":{\"total_budget\":{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]},\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_budget"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:Costs", "target": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Costs\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:Costs", "target": "{\"name\":\"Costs\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_budget\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_budget", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_budget", "target": "{\"name\":\"total_budget\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_budget : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"total_cost : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:Costs:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:CustomDecoder"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:py_make_scanner"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:JSONObject"}, {"predicate": "has_function", "source": "metagpt/utils/custom_decoder.py", "target": "metagpt/utils/custom_decoder.py:py_scanstring"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"name\":\"CustomDecoder\",\"package\":\"metagpt/utils/custom_decoder.py:CustomDecoder\",\"attributes\":{\"parse_object\":{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]},\"parse_string\":{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]},\"scan_once\":{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}},\"methods\":{\"decode\":{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string"}, {"predicate": "has_class_property", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once"}, {"predicate": "has_class_method", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:decode"}, {"predicate": "has_class_method", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"lineno\":273,\"end_lineno\":297,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomDecoder\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/custom_decoder.py:CustomDecoder", "target": "{\"name\":\"CustomDecoder\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"parse_object\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"parse_string\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"scan_once\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_object", "target": "{\"name\":\"parse_object\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_object\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:parse_string", "target": "{\"name\":\"parse_string\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parse_string\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:scan_once", "target": "{\"name\":\"scan_once\",\"type_\":\"\",\"default_\":\"\",\"description\":\"scan_once\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:decode", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:decode", "target": "{\"name\":\"decode\",\"args\":[{\"name\":\"s\",\"type_\":\"\",\"default_\":\"\",\"description\":\"s\",\"compositions\":[]},{\"name\":\"_w\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_w\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"decode(s, _w)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/customer_service.py", "target": "metagpt/roles/customer_service.py:CustomerService"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"name\":\"CustomerService\",\"package\":\"metagpt/roles/customer_service.py:CustomerService\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/customer_service.py:CustomerService:store"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/roles/sales.py:Sales"}, {"predicate": "is_composite_of", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"lineno\":27,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"CustomerService\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "{\"name\":\"CustomerService\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/customer_service.py:CustomerService", "target": "?:BaseStore"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:CustomerService:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/customer_service.py:CustomerService:store", "target": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_ddg.py", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"name\":\"DDGAPIWrapper\",\"package\":\"metagpt/tools/search_engine_ddg.py:DDGAPIWrapper\",\"attributes\":{\"ddgs\":{\"name\":\"ddgs\",\"type_\":\"DDGS\",\"default_\":\"\",\"description\":\"ddgs : DDGS\",\"compositions\":[\"DDGS\"]},\"executor\":{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}},\"compositions\":[\"DDGS\"],\"aggregations\":[\"\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "?:DDGS"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "?:\\"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"lineno\":21,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DDGAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper", "target": "{\"name\":\"DDGAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ddgs\",\"visibility\":\"+\",\"value_type\":\"DDGS\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:ddgs", "target": "{\"name\":\"ddgs\",\"type_\":\"DDGS\",\"default_\":\"\",\"description\":\"ddgs : DDGS\",\"compositions\":[\"DDGS\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True], focus: list[str] \\\\| None): str\",\"aggregations\":[\"\\\\\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"name\":\"DFSSolver\",\"package\":\"metagpt/strategy/tot.py:DFSSolver\",\"attributes\":{\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "metagpt/strategy/tot.py:DFSSolver:_dfs"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"lineno\":180,\"end_lineno\":227,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DFSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:DFSSolver", "target": "{\"name\":\"DFSSolver\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"thought_tree\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:DFSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]},{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt, root)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_meilisearch.py", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"name\":\"DataSource\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:DataSource\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:name"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:url"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DataSource\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource", "target": "{\"name\":\"DataSource\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:url", "target": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/debug_error.py", "target": "metagpt/actions/debug_error.py:DebugError"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"name\":\"DebugError\",\"package\":\"metagpt/actions/debug_error.py:DebugError\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/debug_error.py:DebugError:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/debug_error.py:DebugError", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"lineno\":48,\"end_lineno\":75,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DebugError\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/debug_error.py:DebugError", "target": "{\"name\":\"DebugError\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:DebugError:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/debug_error.py:DebugError:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/dependency_file.py", "target": "metagpt/utils/dependency_file.py:DependencyFile"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"name\":\"DependencyFile\",\"package\":\"metagpt/utils/dependency_file.py:DependencyFile\",\"attributes\":{\"exists\":{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}},\"methods\":{\"delete_file\":{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]},\"load\":{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]},\"update\":{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:exists"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:delete_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:load"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:update"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "?:Path\\"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/git_repository.py:GitRepository:_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "metagpt/utils/dependency_file.py:DependencyFile:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"lineno\":22,\"end_lineno\":108,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DependencyFile\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"name\":\"DependencyFile\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"exists\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "{\"description\":\"The source code is a python class representing a DependencyFile for managing dependencies. It includes methods for loading, saving, updating, getting, and deleting dependencies from a file asynchronously.\",\"use_cases\":[{\"description\":\"Load dependencies from the file asynchronously.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Check if the file exists\",\"Read the file asynchronously\",\"Parse the JSON data\",\"Update the internal dependencies\"],\"reason\":\"When the system needs to load dependencies from the file.\"},{\"description\":\"Save dependencies to the file asynchronously.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Convert dependencies to JSON\",\"Open the file for writing asynchronously\",\"Write the JSON data to the file\"],\"reason\":\"When the system needs to save dependencies to the file.\"},{\"description\":\"Update dependencies for a file asynchronously.\",\"inputs\":[\"filename\",\"dependencies\",\"persist\"],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Load dependencies if persist is true\",\"Get the relative path of the filename\",\"Update the internal dependencies with the new dependencies\",\"Persist the changes if persist is true\"],\"reason\":\"When the system needs to update dependencies for a file.\"},{\"description\":\"Get dependencies for a file asynchronously.\",\"inputs\":[\"filename\",\"persist\"],\"outputs\":[\"A set of dependencies\"],\"actors\":[\"User\"],\"steps\":[\"Load dependencies if persist is true\",\"Get the relative path of the filename\",\"Return the set of dependencies for the file\"],\"reason\":\"When the system needs to retrieve dependencies for a file.\"},{\"description\":\"Delete the dependency file.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"User\"],\"steps\":[\"Delete the dependency file if it exists\"],\"reason\":\"When the system needs to delete the dependency file.\"}],\"relationship\":[\"The 'Load dependencies from the file asynchronously' use case is related to 'Save dependencies to the file asynchronously' as it involves reading and writing to the file.\",\"The 'Update dependencies for a file asynchronously' use case is related to 'Get dependencies for a file asynchronously' as it involves updating and retrieving dependencies for a file.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/dependency_file.py:DependencyFile", "target": "\nsequenceDiagram\n participant User\n participant DependencyFile\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "{\"name\":\"exists\",\"type_\":\"\",\"default_\":\"\",\"description\":\"exists\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:exists", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:delete_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:delete_file", "target": "{\"name\":\"delete_file\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_file()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(filename: Path \\\\| str, persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:load", "target": "{\"name\":\"load\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:save", "target": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:update", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/dependency_file.py:DependencyFile:update", "target": "{\"name\":\"update\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"dependencies\",\"type_\":\"Set[Path\\\\|str]\",\"default_\":\"\",\"description\":\"dependencies: Set[Path \\\\| str]\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"persist\",\"type_\":\"\",\"default_\":\"\",\"description\":\"persist\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update(filename: Path \\\\| str, dependencies: Set[Path \\\\| str], persist)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/design_api_review.py", "target": "metagpt/actions/design_api_review.py:DesignReview"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"name\":\"DesignReview\",\"package\":\"metagpt/actions/design_api_review.py:DesignReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/design_api_review.py:DesignReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"lineno\":14,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DesignReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/design_api_review.py:DesignReview", "target": "{\"name\":\"DesignReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api_review.py:DesignReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api_review.py:DesignReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},{\"name\":\"api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_design\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd, api_design)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/di_graph_repository.py", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"name\":\"DiGraphRepository\",\"package\":\"metagpt/utils/di_graph_repository.py:DiGraphRepository\",\"attributes\":{\"pathname\":{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]},\"repo\":{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]},\"root\":{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"json\":{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"GraphRepository\",\"str\\\\\",\"Path\"]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\",\"GraphRepository\",\"SPO\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:GraphRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "?:SPO"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"lineno\":21,\"end_lineno\":88,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DiGraphRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository", "target": "{\"name\":\"DiGraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"pathname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "{\"name\":\"pathname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"pathname\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:pathname", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "{\"name\":\"repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "{\"name\":\"root\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:root", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete(subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:insert", "target": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert(subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:json", "target": "{\"name\":\"json\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"json(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(pathname: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:load_from", "target": "{\"name\":\"load_from\",\"args\":[{\"name\":\"pathname\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"pathname: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"GraphRepository\",\"description\":\"GraphRepository\",\"compositions\":[\"GraphRepository\"]},\"description\":\"load_from(pathname: str \\\\| Path): GraphRepository\",\"aggregations\":[\"GraphRepository\",\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:select", "target": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select(subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:DocFileRepositories"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "has_class", "source": "metagpt/utils/project_repo.py", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"name\":\"DocFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:DocFileRepositories\",\"attributes\":{\"class_view\":{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]},\"task\":{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:class_view"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:prd"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:system_design"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:task"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "metagpt/utils/project_repo.py:DocFileRepositories:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"lineno\":42,\"end_lineno\":60,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocFileRepositories\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"name\":\"DocFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"class_view\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "{\"description\":\"This code defines a class for managing different types of file repositories related to project documentation.\",\"use_cases\":[{\"description\":\"Create DocFileRepositories instance\",\"inputs\":[\"git_repo\"],\"outputs\":[\"prd\",\"system_design\",\"task\",\"code_summary\",\"graph_repo\",\"class_view\",\"code_plan_and_change\"],\"actors\":[\"Project Manager\",\"Developer\"],\"steps\":[\"The Project Manager or Developer provides a git repository as input.\",\"The system creates a new DocFileRepositories instance with file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change.\",\"The system returns the file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change as output.\"],\"reason\":\"This use case is executed when a new instance of DocFileRepositories is required to manage different types of file repositories related to project documentation.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/project_repo.py:DocFileRepositories", "target": "\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:class_view", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:class_view", "target": "{\"name\":\"class_view\",\"type_\":\"\",\"default_\":\"\",\"description\":\"class_view\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_plan_and_change", "target": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:code_summary", "target": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:graph_repo", "target": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:prd", "target": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:system_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:system_design", "target": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:DocFileRepositories:task", "target": "{\"name\":\"task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"task\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/pycst.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:DocstringCollector"}, {"predicate": "has_class", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:DocstringTransformer"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:get_docstring_statement"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:has_decorator"}, {"predicate": "has_function", "source": "metagpt/utils/pycst.py", "target": "metagpt/utils/pycst.py:merge_docstring"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"name\":\"DocstringCollector\",\"package\":\"metagpt/utils/pycst.py:DocstringCollector\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.FunctionDef\",\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:docstrings"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:stack"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:leave_Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:visit_Module"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.SimpleStatementLine"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.ClassDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.FunctionDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:cst.Module"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "?:bool\\"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "metagpt/utils/pycst.py:DocstringCollector:_leave"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"lineno\":60,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringCollector\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/pycst.py:DocstringCollector", "target": "{\"name\":\"DocstringCollector\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:docstrings", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:docstrings", "target": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:stack", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:stack", "target": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_ClassDef", "target": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_ClassDef(node: cst.ClassDef): None\",\"aggregations\":[\"cst.ClassDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_FunctionDef", "target": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_FunctionDef(node: cst.FunctionDef): None\",\"aggregations\":[\"cst.FunctionDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:leave_Module", "target": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"leave_Module(node: cst.Module): None\",\"aggregations\":[\"cst.Module\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_ClassDef", "target": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_FunctionDef", "target": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringCollector:visit_Module", "target": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"name\":\"DocstringTransformer\",\"package\":\"metagpt/utils/pycst.py:DocstringTransformer\",\"attributes\":{\"docstrings\":{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]},\"stack\":{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}},\"methods\":{\"leave_ClassDef\":{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\"]},\"leave_FunctionDef\":{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]},\"leave_Module\":{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]},\"visit_ClassDef\":{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]},\"visit_FunctionDef\":{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]},\"visit_Module\":{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}},\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"],\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\",\"cst.FunctionDef\",\"Module\",\"bool\\\\\",\"cst.Module\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:docstrings"}, {"predicate": "has_class_property", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:stack"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.SimpleStatementLine"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.ClassDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.CSTNode"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.FunctionDef"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:Module"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:bool\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "?:cst.Module"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "metagpt/utils/pycst.py:DocstringTransformer:_leave"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"lineno\":101,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocstringTransformer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/pycst.py:DocstringTransformer", "target": "{\"name\":\"DocstringTransformer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docstrings\",\"visibility\":\"+\",\"value_type\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_value\":\"\"},{\"name\":\"stack\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:docstrings", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:docstrings", "target": "{\"name\":\"docstrings\",\"type_\":\"dict[tuple[str,...],cst.SimpleStatementLine]\",\"default_\":\"\",\"description\":\"docstrings : dict[tuple[str, ...], cst.SimpleStatementLine]\",\"compositions\":[\"...\",\"cst.SimpleStatementLine\",\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:stack", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:stack", "target": "{\"name\":\"stack\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"stack : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_ClassDef", "target": "{\"name\":\"leave_ClassDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"original_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"updated_node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_ClassDef(original_node: cst.ClassDef, updated_node: cst.ClassDef): cst.CSTNode\",\"aggregations\":[\"cst.ClassDef\",\"cst.CSTNode\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_FunctionDef", "target": "{\"name\":\"leave_FunctionDef\",\"args\":[{\"name\":\"original_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"original_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]},{\"name\":\"updated_node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"updated_node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"cst.CSTNode\",\"description\":\"cst.CSTNode\",\"compositions\":[\"cst.CSTNode\"]},\"description\":\"leave_FunctionDef(original_node: cst.FunctionDef, updated_node: cst.FunctionDef): cst.CSTNode\",\"aggregations\":[\"cst.CSTNode\",\"cst.FunctionDef\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:leave_Module", "target": "{\"name\":\"leave_Module\",\"args\":[{\"name\":\"original_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"original_node: Module\",\"compositions\":[\"Module\"]},{\"name\":\"updated_node\",\"type_\":\"Module\",\"default_\":\"\",\"description\":\"updated_node: Module\",\"compositions\":[\"Module\"]}],\"return_args\":{\"type_\":\"Module\",\"description\":\"Module\",\"compositions\":[\"Module\"]},\"description\":\"leave_Module(original_node: Module, updated_node: Module): Module\",\"aggregations\":[\"Module\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_ClassDef", "target": "{\"name\":\"visit_ClassDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.ClassDef\",\"default_\":\"\",\"description\":\"node: cst.ClassDef\",\"compositions\":[\"cst.ClassDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_ClassDef(node: cst.ClassDef): bool \\\\| None\",\"aggregations\":[\"cst.ClassDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_FunctionDef", "target": "{\"name\":\"visit_FunctionDef\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.FunctionDef\",\"default_\":\"\",\"description\":\"node: cst.FunctionDef\",\"compositions\":[\"cst.FunctionDef\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_FunctionDef(node: cst.FunctionDef): bool \\\\| None\",\"aggregations\":[\"cst.FunctionDef\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/pycst.py:DocstringTransformer:visit_Module", "target": "{\"name\":\"visit_Module\",\"args\":[{\"name\":\"node\",\"type_\":\"cst.Module\",\"default_\":\"\",\"description\":\"node: cst.Module\",\"compositions\":[\"cst.Module\"]}],\"return_args\":{\"type_\":\"bool\\\\|None\",\"description\":\"bool \\\\| None\",\"compositions\":[\"bool\\\\\"]},\"description\":\"visit_Module(node: cst.Module): bool \\\\| None\",\"aggregations\":[\"cst.Module\",\"bool\\\\\"]}"}, {"predicate": "is", "source": "metagpt/document.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:Document"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:DocumentStatus"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:IndexableDocument"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:Repo"}, {"predicate": "has_class", "source": "metagpt/document.py", "target": "metagpt/document.py:RepoMetadata"}, {"predicate": "has_function", "source": "metagpt/document.py", "target": "metagpt/document.py:validate_cols"}, {"predicate": "has_function", "source": "metagpt/document.py", "target": "metagpt/document.py:read_data"}, {"predicate": "is", "source": "metagpt/document.py:Document", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document", "target": "{\"name\":\"Document\",\"package\":\"metagpt/document.py:Document\",\"attributes\":{\"author\":{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"reviews\":{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"from_text\":{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:author"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:content"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:path"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:reviews"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:status"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:from_text"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:persist"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Document", "target": "metagpt/document.py:Document:to_path"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Document", "target": "?:Path"}, {"predicate": "has_page_info", "source": "metagpt/document.py:Document", "target": "{\"lineno\":62,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:Document", "target": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"author\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"reviews\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:author", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:author", "target": "{\"name\":\"author\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"author : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:reviews", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:reviews", "target": "{\"name\":\"reviews\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"reviews : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:status", "target": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:from_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:from_text", "target": "{\"name\":\"from_text\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_text(text: str, path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Document:to_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Document:to_path", "target": "{\"name\":\"to_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"path: Optional[Path]\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path(path: Optional[Path])\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document", "target": "{\"name\":\"Document\",\"package\":\"metagpt/schema.py:Document\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]},\"root_relative_path\":{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}},\"methods\":{\"get_meta\":{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Document\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:root_path"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:root_relative_path"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:get_meta"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Document", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/actions/write_code.py:WriteCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:CodingContext:code_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:TestingContext:code_doc"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:__str__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Document", "target": "metagpt/schema.py:Document:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Document", "target": "{\"lineno\":127,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Document\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Document", "target": "{\"name\":\"Document\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"root_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:root_path", "target": "{\"name\":\"root_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"root_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_relative_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:root_relative_path", "target": "{\"name\":\"root_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_relative_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Document:root_relative_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:get_meta", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Document:get_meta", "target": "{\"name\":\"get_meta\",\"args\":[],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"get_meta(): Document\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:DocumentStatus", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:DocumentStatus", "target": "{\"name\":\"DocumentStatus\",\"package\":\"metagpt/document.py:DocumentStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:DocumentStatus:name"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:Document"}, {"predicate": "isCompositeOn", "source": "metagpt/document.py:DocumentStatus", "target": "metagpt/document.py:Document:status"}, {"predicate": "has_page_info", "source": "metagpt/document.py:DocumentStatus", "target": "{\"lineno\":53,\"end_lineno\":59,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DocumentStatus\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:DocumentStatus", "target": "{\"name\":\"DocumentStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:DocumentStatus:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:DocumentStatus:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents", "target": "{\"name\":\"Documents\",\"package\":\"metagpt/schema.py:Documents\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}},\"methods\":{\"from_iterable\":{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Documents\",\"Iterable\",\"Document\"]},\"to_action_output\":{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}},\"compositions\":[\"Document\"],\"aggregations\":[\"Documents\",\"Iterable\",\"ActionOutput\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:docs"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:from_iterable"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Documents", "target": "metagpt/schema.py:Documents:to_action_output"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Documents", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:Documents"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:Iterable"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:Documents", "target": "?:ActionOutput"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Documents", "target": "{\"lineno\":159,\"end_lineno\":186,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Documents\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Documents", "target": "{\"name\":\"Documents\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:docs", "target": "{\"name\":\"docs\",\"type_\":\"Dict[str,Document]\",\"default_\":\"\",\"description\":\"docs : Dict[str, Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:from_iterable", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:from_iterable", "target": "{\"name\":\"from_iterable\",\"args\":[{\"name\":\"documents\",\"type_\":\"Iterable[Document]\",\"default_\":\"\",\"description\":\"documents: Iterable[Document]\",\"compositions\":[\"Document\",\"Iterable\"]}],\"return_args\":{\"type_\":\"Documents\",\"description\":\"Documents\",\"compositions\":[\"Documents\"]},\"description\":\"from_iterable(documents: Iterable[Document]): Documents\",\"aggregations\":[\"Documents\",\"Iterable\",\"Document\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Documents:to_action_output", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Documents:to_action_output", "target": "{\"name\":\"to_action_output\",\"args\":[],\"return_args\":{\"type_\":\"'ActionOutput'\",\"description\":\"'ActionOutput'\",\"compositions\":[\"ActionOutput\"]},\"description\":\"to_action_output(): 'ActionOutput'\",\"aggregations\":[\"ActionOutput\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"name\":\"DotClassAttribute\",\"package\":\"metagpt/repo_parser.py:DotClassAttribute\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"default_\":{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]},\"parse_compositions\":{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]},\"remove_white_spaces\":{\"name\":\"remove_white_spaces\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove_white_spaces(v: str)\",\"aggregations\":[]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotClassAttribute\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:default_"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:type_"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:parse"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:remove_white_spaces"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:sort"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "?:DotClassAttribute"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "metagpt/repo_parser.py:DotClassAttribute:_split_literal"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"lineno\":42,\"end_lineno\":157,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassAttribute\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassAttribute", "target": "{\"name\":\"DotClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"default_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:default_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:default_", "target": "{\"name\":\"default_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:type_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:type_", "target": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassAttribute'\",\"description\":\"'DotClassAttribute'\",\"compositions\":[\"DotClassAttribute\"]},\"description\":\"parse(v: str): 'DotClassAttribute'\",\"aggregations\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:parse_compositions", "target": "{\"name\":\"parse_compositions\",\"args\":[{\"name\":\"types_part\",\"type_\":\"\",\"default_\":\"\",\"description\":\"types_part\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_compositions(types_part): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:remove_white_spaces", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:remove_white_spaces", "target": "{\"name\":\"remove_white_spaces\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"remove_white_spaces(v: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassAttribute:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"name\":\"DotClassInfo\",\"package\":\"metagpt/repo_parser.py:DotClassInfo\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"attributes\":{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"methods\":{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}},\"methods\":{\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[\"DotClassAttribute\",\"DotClassMethod\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:attributes"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:methods"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:package"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassInfo:sort"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "metagpt/repo_parser.py:DotClassMethod"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"lineno\":160,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "{\"name\":\"DotClassInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"Dict[str,DotClassMethod]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "?:DotClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassInfo", "target": "?:DotClassMethod"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:attributes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:attributes", "target": "{\"name\":\"attributes\",\"type_\":\"Dict[str,DotClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : Dict[str, DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:methods", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:methods", "target": "{\"name\":\"methods\",\"type_\":\"Dict[str,DotClassMethod]\",\"default_\":\"\",\"description\":\"methods : Dict[str, DotClassMethod]\",\"compositions\":[\"DotClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:package", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:package", "target": "{\"name\":\"package\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"package : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassInfo:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassInfo:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"name\":\"DotClassMethod\",\"package\":\"metagpt/repo_parser.py:DotClassMethod\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"args\":{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"return_args\":{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}},\"compositions\":[\"DotClassAttribute\",\"DotReturn\"],\"aggregations\":[\"DotClassMethod\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:args"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:name"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:return_args"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:parse"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotClassMethod"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotReturn"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:_parse_name"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "metagpt/repo_parser.py:DotClassMethod:_parse_args"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"lineno\":202,\"end_lineno\":264,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassMethod\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "{\"name\":\"DotClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[DotClassAttribute]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"return_args\",\"visibility\":\"+\",\"value_type\":\"Optional[DotReturn]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:DotClassMethod", "target": "?:DotReturn"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:args", "target": "{\"name\":\"args\",\"type_\":\"List[DotClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[DotClassAttribute]\",\"compositions\":[\"DotClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:return_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:return_args", "target": "{\"name\":\"return_args\",\"type_\":\"Optional[DotReturn]\",\"default_\":\"\",\"description\":\"return_args : Optional[DotReturn]\",\"compositions\":[\"DotReturn\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassMethod:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotClassMethod'\",\"description\":\"'DotClassMethod'\",\"compositions\":[\"DotClassMethod\"]},\"description\":\"parse(v: str): 'DotClassMethod'\",\"aggregations\":[\"DotClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"name\":\"DotClassRelationship\",\"package\":\"metagpt/repo_parser.py:DotClassRelationship\",\"attributes\":{\"dest\":{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]},\"label\":{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]},\"src\":{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:dest"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:label"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:relationship"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "metagpt/repo_parser.py:DotClassRelationship:src"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"lineno\":175,\"end_lineno\":179,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotClassRelationship\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotClassRelationship", "target": "{\"name\":\"DotClassRelationship\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dest\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"label\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:dest", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:dest", "target": "{\"name\":\"dest\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"dest : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:label", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:label", "target": "{\"name\":\"label\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"label : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:relationship", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:relationship", "target": "{\"name\":\"relationship\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"relationship : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassRelationship:src", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotClassRelationship:src", "target": "{\"name\":\"src\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"src : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"name\":\"DotReturn\",\"package\":\"metagpt/repo_parser.py:DotReturn\",\"attributes\":{\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"type_\":{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}},\"methods\":{\"parse\":{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]},\"sort\":{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"DotReturn\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:compositions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:description"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:type_"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:parse"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:DotReturn", "target": "metagpt/repo_parser.py:DotReturn:sort"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:DotReturn", "target": "?:DotReturn\\"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"lineno\":182,\"end_lineno\":199,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"DotReturn\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:DotReturn", "target": "{\"name\":\"DotReturn\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"type_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:type_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:type_", "target": "{\"name\":\"type_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:parse", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:parse", "target": "{\"name\":\"parse\",\"args\":[{\"name\":\"v\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"v: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'DotReturn'\\\\|None\",\"description\":\"'DotReturn' \\\\| None\",\"compositions\":[\"DotReturn\\\\\"]},\"description\":\"parse(v: str): 'DotReturn' \\\\| None\",\"aggregations\":[\"DotReturn\\\\\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotReturn:sort", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:DotReturn:sort", "target": "{\"name\":\"sort\",\"args\":[{\"name\":\"lst\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"lst: List\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"sort(lst: List): List\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"name\":\"Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Embedding\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]},\"object\":{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:index"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding:object"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"lineno\":19,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Embedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding", "target": "{\"name\":\"Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"List[float]\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"object\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"embedding : List[float]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:index", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:index", "target": "{\"name\":\"index\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"index : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:object", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Embedding:object", "target": "{\"name\":\"object\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/engineer.py", "target": "metagpt/roles/engineer.py:Engineer"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"name\":\"Engineer\",\"package\":\"metagpt/roles/engineer.py:Engineer\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"code_todos\":{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"n_borg\":{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]},\"n_summarize\":{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"next_todo_action\":{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"summarize_todos\":{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]},\"use_code_review\":{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:action_description"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:code_todos"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:n_borg"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:n_summarize"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:next_todo_action"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:src_workspace"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:summarize_todos"}, {"predicate": "has_class_property", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:use_code_review"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_parse_tasks"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_write_code"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_summarize"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_is_pass"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_coding_context"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_coding_doc"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_code_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/engineer.py:Engineer", "target": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"lineno\":62,\"end_lineno\":360,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Engineer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"name\":\"Engineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_borg\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_summarize\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"next_todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"summarize_todos\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"use_code_review\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/engineer.py:Engineer", "target": "{\"description\":\"The source code represents an Engineer role responsible for writing and possibly reviewing code. It includes attributes and methods for writing and reviewing code, summarizing code, and writing code plan and change. It also includes methods for determining the mode of action, thinking, and acting based on whether code review is used.\",\"use_cases\":[{\"description\":\"Write Code\",\"inputs\":[\"coding_context\"],\"outputs\":[\"changed_files\"],\"actors\":[\"Engineer\"],\"steps\":[\"Select essential information from the historical data to reduce the length of the prompt\",\"Run the code review if enabled\",\"Save the changed files and relevant messages\",\"Return the changed files\"],\"reason\":\"When the engineer needs to write code\"},{\"description\":\"Summarize Code\",\"inputs\":[\"summary\"],\"outputs\":[\"tasks\"],\"actors\":[\"Engineer\"],\"steps\":[\"Run the code summary for each pair of (system_design_doc, task_doc)\",\"Save the summary and check if it passes\",\"Send the summary to QA Engineer if needed\",\"Return the tasks if not passed\"],\"reason\":\"When the engineer needs to summarize code\"},{\"description\":\"Write Code Plan and Change\",\"inputs\":[\"files\",\"requirement\"],\"outputs\":[\"code_plan_and_change\"],\"actors\":[\"Engineer\"],\"steps\":[\"Write code plan and change that guides subsequent WriteCode and WriteCodeReview\",\"Save the code plan and change\",\"Return the code plan and change\"],\"reason\":\"When the engineer needs to write code plan and change\"}],\"relationship\":[\"Write Code is performed by Engineer\",\"Summarize Code is performed by Engineer\",\"Write Code Plan and Change is performed by Engineer\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/engineer.py:Engineer", "target": "\nsequenceDiagram\n participant Engineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:action_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:code_todos", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:code_todos", "target": "{\"name\":\"code_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"code_todos : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:n_borg", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:n_borg", "target": "{\"name\":\"n_borg\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_borg : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:n_summarize", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:n_summarize", "target": "{\"name\":\"n_summarize\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_summarize : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:next_todo_action", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:next_todo_action", "target": "{\"name\":\"next_todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"next_todo_action : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:summarize_todos", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:summarize_todos", "target": "{\"name\":\"summarize_todos\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"summarize_todos : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:use_code_review", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/engineer.py:Engineer:use_code_review", "target": "{\"name\":\"use_code_review\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_code_review : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"name\":\"EnronTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:EnronTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "metagpt/tools/prompt_writer.py:EnronTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"lineno\":77,\"end_lineno\":92,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"EnronTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:EnronTemplate", "target": "{\"name\":\"EnronTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"subj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"subj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen(subj)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"name\":\"Entity\",\"package\":\"metagpt/learn/skill_loader.py:Entity\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]},\"skills\":{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}},\"methods\":{},\"compositions\":[\"Skill\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Entity:name"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Entity:skills"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Entity", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"lineno\":53,\"end_lineno\":55,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Entity\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Entity", "target": "{\"name\":\"Entity\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"skills\",\"visibility\":\"+\",\"value_type\":\"List[Skill]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Entity", "target": "?:Skill"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity:name", "target": "{\"name\":\"name\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"name : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Entity:skills", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Entity:skills", "target": "{\"name\":\"skills\",\"type_\":\"List[Skill]\",\"default_\":\"\",\"description\":\"skills : List[Skill]\",\"compositions\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/environment.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/environment.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/environment.py", "target": "metagpt/environment.py:Environment"}, {"predicate": "is", "source": "metagpt/environment.py:Environment", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment", "target": "{\"name\":\"Environment\",\"package\":\"metagpt/environment.py:Environment\",\"attributes\":{\"context\":{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"member_addrs\":{\"name\":\"member_addrs\",\"type_\":\"dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : dict[Role, Set]\",\"compositions\":[\"Role\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"roles\":{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny[Role]]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}},\"methods\":{\"add_role\":{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: Role)\",\"aggregations\":[\"Role\"]},\"add_roles\":{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable[Role]\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable[Role])\",\"aggregations\":[\"Role\",\"Iterable\"]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]},\"get_addresses\":{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]},\"get_role\":{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Role\",\"description\":\"Role\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): Role\",\"aggregations\":[\"Role\"]},\"get_roles\":{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,Role]\",\"description\":\"dict[str, Role]\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, Role]\",\"aggregations\":[\"Role\"]},\"init_roles\":{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]},\"role_names\":{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}},\"compositions\":[\"Role\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\",\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:context"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:desc"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:history"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:is_idle"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:member_addrs"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:model_config"}, {"predicate": "has_class_property", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:roles"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:add_role"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:add_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:archive"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_addresses"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_role"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:get_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:init_roles"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:publish_message"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:role_names"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:run"}, {"predicate": "has_class_method", "source": "metagpt/environment.py:Environment", "target": "metagpt/environment.py:Environment:set_addresses"}, {"predicate": "isCompositeOf", "source": "metagpt/environment.py:Environment", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/environment.py:Environment", "target": "?:Iterable"}, {"predicate": "isAggregateOf", "source": "metagpt/environment.py:Environment", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/environment.py:Environment", "target": "metagpt/team.py:Team"}, {"predicate": "isCompositeOn", "source": "metagpt/environment.py:Environment", "target": "metagpt/team.py:Team:env"}, {"predicate": "is_composite_of", "source": "metagpt/environment.py:Environment", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:Environment", "target": "{\"lineno\":26,\"end_lineno\":131,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Environment\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/environment.py:Environment", "target": "{\"name\":\"Environment\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"member_addrs\",\"visibility\":\"+\",\"value_type\":\"dict[Role,Set]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"roles\",\"visibility\":\"+\",\"value_type\":\"dict[str,SerializeAsAny[Role]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/environment.py:Environment", "target": "?:Role"}, {"predicate": "has_class_use_case", "source": "metagpt/environment.py:Environment", "target": "{\"description\":\"The source code defines an Environment class that hosts a batch of roles. Roles can publish messages to the environment and can be observed by other roles. The environment also provides methods to add roles, publish messages, run role processes, and manage role addresses.\",\"use_cases\":[{\"description\":\"Add a role to the current environment\",\"inputs\":[\"role: Role\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Add the role to the roles dictionary of the environment\",\"Set the environment for the role\",\"Set the context for the role\"],\"reason\":\"When a new role needs to be added to the environment\"},{\"description\":\"Add a batch of roles to the current environment\",\"inputs\":[\"roles: Iterable[Role]\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Add each role to the roles dictionary of the environment\",\"Set the environment for each role\",\"Set the context for each role\"],\"reason\":\"When multiple roles need to be added to the environment\"},{\"description\":\"Publish a message to the recipients in the environment\",\"inputs\":[\"message: Message\",\"peekable: bool\"],\"outputs\":[\"bool\"],\"actors\":[\"Environment\"],\"steps\":[\"Iterate through the member addresses of the environment\",\"Check if the message is to be sent to the current recipient\",\"If found, put the message in the recipient's queue\",\"Update the history of the environment\"],\"reason\":\"When a message needs to be distributed to the recipients in the environment\"},{\"description\":\"Process all role runs at once\",\"inputs\":[\"k: int\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"For each role, initiate a run process\",\"Gather all the run processes using asyncio\",\"Check if all actions have been executed\"],\"reason\":\"When all role processes need to be executed at once\"},{\"description\":\"Get all roles in the environment\",\"inputs\":[],\"outputs\":[\"dict[str, Role]\"],\"actors\":[\"Environment\"],\"steps\":[\"Return the roles dictionary of the environment\"],\"reason\":\"When all roles in the environment need to be retrieved\"},{\"description\":\"Get a specific role in the environment\",\"inputs\":[\"name: str\"],\"outputs\":[\"Role\"],\"actors\":[\"Environment\"],\"steps\":[\"Return the role with the specified name from the roles dictionary of the environment\"],\"reason\":\"When a specific role in the environment needs to be retrieved\"},{\"description\":\"Get all role names in the environment\",\"inputs\":[],\"outputs\":[\"list[str]\"],\"actors\":[\"Environment\"],\"steps\":[\"Return a list of names of all roles in the environment\"],\"reason\":\"When all role names in the environment need to be retrieved\"},{\"description\":\"Get the addresses of the object\",\"inputs\":[\"obj\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Return the addresses of the specified object from the member addresses of the environment\"],\"reason\":\"When the addresses of a specific object in the environment need to be retrieved\"},{\"description\":\"Set the addresses of the object\",\"inputs\":[\"obj\",\"addresses\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"Set the addresses of the specified object in the member addresses of the environment\"],\"reason\":\"When the addresses of a specific object in the environment need to be updated\"},{\"description\":\"Archive the environment\",\"inputs\":[\"auto_archive: bool\"],\"outputs\":[],\"actors\":[\"Environment\"],\"steps\":[\"If auto_archive is true and the environment has a git repository, archive the repository\"],\"reason\":\"When the environment needs to be archived, and auto archiving is enabled\"}],\"relationship\":[\"The 'Add a role to the current environment' use case is related to the 'Add a batch of roles to the current environment' use case as it involves adding roles to the environment.\",\"The 'Publish a message to the recipients in the environment' use case is related to the 'Process all role runs at once' use case as it involves distributing messages to the roles in the environment and processing their runs.\",\"The 'Get all roles in the environment' use case is related to the 'Get a specific role in the environment' use case and the 'Get all role names in the environment' use case as it involves retrieving information about roles in the environment.\",\"The 'Get the addresses of the object' use case is related to the 'Set the addresses of the object' use case as it involves managing addresses of objects in the environment.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/environment.py:Environment", "target": "\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:context", "target": "{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:history", "target": "{\"name\":\"history\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:is_idle", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:is_idle", "target": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:is_idle", "target": "class_method"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:member_addrs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:member_addrs", "target": "{\"name\":\"member_addrs\",\"type_\":\"dict[Role,Set]\",\"default_\":\"\",\"description\":\"member_addrs : dict[Role, Set]\",\"compositions\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:roles", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:roles", "target": "{\"name\":\"roles\",\"type_\":\"dict[str,SerializeAsAny[Role]]\",\"default_\":\"\",\"description\":\"roles : dict[str, SerializeAsAny[Role]]\",\"compositions\":[\"Role\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:add_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:add_role", "target": "{\"name\":\"add_role\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_role(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:add_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:add_roles", "target": "{\"name\":\"add_roles\",\"args\":[{\"name\":\"roles\",\"type_\":\"Iterable[Role]\",\"default_\":\"\",\"description\":\"roles: Iterable[Role]\",\"compositions\":[\"Iterable\",\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_roles(roles: Iterable[Role])\",\"aggregations\":[\"Role\",\"Iterable\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:archive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:archive", "target": "{\"name\":\"archive\",\"args\":[{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(auto_archive)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:get_addresses", "target": "{\"name\":\"get_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_addresses(obj)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:get_role", "target": "{\"name\":\"get_role\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Role\",\"description\":\"Role\",\"compositions\":[\"Role\"]},\"description\":\"get_role(name: str): Role\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:get_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:get_roles", "target": "{\"name\":\"get_roles\",\"args\":[],\"return_args\":{\"type_\":\"dict[str,Role]\",\"description\":\"dict[str, Role]\",\"compositions\":[\"Role\"]},\"description\":\"get_roles(): dict[str, Role]\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:init_roles", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:init_roles", "target": "{\"name\":\"init_roles\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"init_roles()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:publish_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:publish_message", "target": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"peekable\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"peekable: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"publish_message(message: Message, peekable: bool): bool\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:role_names", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:role_names", "target": "{\"name\":\"role_names\",\"args\":[],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"role_names(): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(k)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/environment.py:Environment:set_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/environment.py:Environment:set_addresses", "target": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"obj\",\"type_\":\"\",\"default_\":\"\",\"description\":\"obj\",\"compositions\":[]},{\"name\":\"addresses\",\"type_\":\"\",\"default_\":\"\",\"description\":\"addresses\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(obj, addresses)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"name\":\"Example\",\"package\":\"metagpt/learn/skill_loader.py:Example\",\"attributes\":{\"answer\":{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]},\"ask\":{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Example", "target": "metagpt/learn/skill_loader.py:Example:answer"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Example", "target": "metagpt/learn/skill_loader.py:Example:ask"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"lineno\":19,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Example\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Example", "target": "{\"name\":\"Example\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"answer\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ask\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example:answer", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example:answer", "target": "{\"name\":\"answer\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"answer : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Example:ask", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Example:ask", "target": "{\"name\":\"ask\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ask : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/execute_task.py", "target": "metagpt/actions/execute_task.py:ExecuteTask"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"name\":\"ExecuteTask\",\"package\":\"metagpt/actions/execute_task.py:ExecuteTask\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run ()\",\"aggregations\":[]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/execute_task.py:ExecuteTask:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ExecuteTask\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "{\"name\":\"ExecuteTask\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"list[Message]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/execute_task.py:ExecuteTask", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"i_context : list[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/execute_task.py:ExecuteTask:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/execute_task.py:ExecuteTask:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/faiss_store.py", "target": "metagpt/document_store/faiss_store.py:FaissStore"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"name\":\"FaissStore\",\"package\":\"metagpt/document_store/faiss_store.py:FaissStore\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]},\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]},\"asearch\":{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete ()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}},\"compositions\":[\"OpenAIEmbeddings\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:content_col"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:embedding"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:meta_col"}, {"predicate": "has_class_property", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:store"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:asearch"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "?:OpenAIEmbeddings"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/base_store.py:LocalStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:__init__"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:_load"}, {"predicate": "has_class_method", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "metagpt/document_store/faiss_store.py:FaissStore:_write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"lineno\":21,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FaissStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/faiss_store.py:FaissStore", "target": "{\"name\":\"FaissStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:content_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:content_col", "target": "{\"name\":\"content_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:meta_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:meta_col", "target": "{\"name\":\"meta_col\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"meta_col : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:store", "target": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"texts\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"texts: list[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"add(texts: list[str]): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:asearch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:asearch", "target": "{\"name\":\"asearch\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"asearch()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:delete", "target": "{\"name\":\"delete\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"expand_cols\",\"type_\":\"\",\"default_\":\"\",\"description\":\"expand_cols\",\"compositions\":[]},{\"name\":\"sep\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sep\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, expand_cols, sep)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/faiss_store.py:FaissStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/file.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/file.py", "target": "metagpt/utils/file.py:File"}, {"predicate": "is", "source": "metagpt/utils/file.py:File", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File", "target": "{\"name\":\"File\",\"package\":\"metagpt/utils/file.py:File\",\"attributes\":{\"CHUNK_SIZE\":{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}},\"methods\":{\"read\":{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"bytes\",\"Path\"]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"bytes\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"bytes\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:CHUNK_SIZE"}, {"predicate": "has_class_method", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:read"}, {"predicate": "has_class_method", "source": "metagpt/utils/file.py:File", "target": "metagpt/utils/file.py:File:write"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file.py:File", "target": "?:bytes"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file.py:File", "target": "?:Path"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:File", "target": "{\"lineno\":17,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"File\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/file.py:File", "target": "{\"name\":\"File\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CHUNK_SIZE\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:CHUNK_SIZE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:CHUNK_SIZE", "target": "{\"name\":\"CHUNK_SIZE\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"CHUNK_SIZE : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:read", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:read", "target": "{\"name\":\"read\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"chunk_size\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"chunk_size: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"read(file_path: Path, chunk_size: int): bytes\",\"aggregations\":[\"bytes\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/file.py:File:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file.py:File:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"root_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"root_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"bytes\",\"default_\":\"\",\"description\":\"content: bytes\",\"compositions\":[\"bytes\"]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"write(root_path: Path, filename: str, content: bytes): Path\",\"aggregations\":[\"bytes\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/file_repository.py", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"name\":\"FileRepository\",\"package\":\"metagpt/utils/file_repository.py:FileRepository\",\"attributes\":{\"all_files\":{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]},\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"root_path\":{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]},\"get_all\":{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]},\"get_change_dir_files\":{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]},\"get_changed_dependency\":{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]},\"new_filename\":{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Path\\\\\",\"Document\"]},\"save_doc\":{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]},\"save_pdf\":{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"Document\\\\\",\"Document\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:all_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:changed_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:root_path"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_all"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:get_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:new_filename"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_doc"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:save_pdf"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Path\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Document\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"predicate": "has_class_method", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "metagpt/utils/file_repository.py:FileRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"lineno\":25,\"end_lineno\":240,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FileRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"name\":\"FileRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"root_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "{\"description\":\"This source code defines a class representing a FileRepository associated with a Git repository. The class includes methods for saving, getting, and deleting files, as well as managing file dependencies and generating new filenames.\",\"use_cases\":[{\"description\":\"Save content to a file and update its dependencies.\",\"inputs\":[\"filename\",\"content\",\"dependencies\"],\"outputs\":[\"Document\"],\"actors\":[\"Document\",\"Path\",\"List\"],\"steps\":[\"Create the pathname for the file within the repository.\",\"Write the content to the file.\",\"Update the dependencies if provided.\",\"Return the saved document.\"],\"reason\":\"When new content needs to be saved to a file and its dependencies need to be updated.\"},{\"description\":\"Get the dependencies of a file.\",\"inputs\":[\"filename\"],\"outputs\":[\"Set\"],\"actors\":[\"Path\"],\"steps\":[\"Retrieve the pathname of the file within the repository.\",\"Get the dependencies of the file.\",\"Return the set of dependencies.\"],\"reason\":\"When the dependencies of a file need to be retrieved.\"},{\"description\":\"Get the dependencies of a file that have changed.\",\"inputs\":[\"filename\"],\"outputs\":[\"Set\"],\"actors\":[\"Path\"],\"steps\":[\"Get the dependencies of the file.\",\"Identify the changed dependent files.\",\"Return the set of changed dependencies.\"],\"reason\":\"When the dependencies of a file that have changed need to be retrieved.\"},{\"description\":\"Read the content of a file.\",\"inputs\":[\"filename\"],\"outputs\":[\"Document\",\"None\"],\"actors\":[\"Path\"],\"steps\":[\"Create a document instance for the file.\",\"Read the content of the file.\",\"Return the document with the content or None if the file does not exist.\"],\"reason\":\"When the content of a file needs to be read.\"},{\"description\":\"Get the content of all files in the repository.\",\"inputs\":[\"filter_ignored\"],\"outputs\":[\"List[Document]\"],\"actors\":[\"Path\"],\"steps\":[\"Retrieve the content of all files in the repository.\",\"Return a list of document instances representing the files.\"],\"reason\":\"When the content of all files in the repository needs to be retrieved.\"},{\"description\":\"Get the files in a directory that have changed.\",\"inputs\":[\"dir\"],\"outputs\":[\"List\"],\"actors\":[\"Path\"],\"steps\":[\"Identify the changed files within the directory.\",\"Return the list of changed files.\"],\"reason\":\"When the changed files within a directory need to be retrieved.\"},{\"description\":\"Generate a new filename based on the current timestamp and a UUID suffix.\",\"inputs\":[],\"outputs\":[\"str\"],\"actors\":[],\"steps\":[\"Generate a new filename based on the current timestamp and a UUID suffix.\",\"Return the new filename.\"],\"reason\":\"When a new filename needs to be generated.\"},{\"description\":\"Save content to a file and update its dependencies using a Document instance.\",\"inputs\":[\"doc\",\"dependencies\"],\"outputs\":[],\"actors\":[\"Document\",\"List\"],\"steps\":[\"Save the content of the document to a file.\",\"Update the dependencies if provided.\"],\"reason\":\"When the content of a document needs to be saved to a file and its dependencies need to be updated.\"},{\"description\":\"Save a Document instance as a PDF file.\",\"inputs\":[\"doc\",\"with_suffix\",\"dependencies\"],\"outputs\":[],\"actors\":[\"Document\",\"List\"],\"steps\":[\"Convert the content of the document to Markdown.\",\"Save it to a file with an optional specified suffix.\",\"Log the saved file.\"],\"reason\":\"When a document instance needs to be saved as a PDF file.\"},{\"description\":\"Delete a file from the file repository.\",\"inputs\":[\"filename\"],\"outputs\":[],\"actors\":[\"Path\"],\"steps\":[\"Delete the file from the file repository.\"],\"reason\":\"When a file needs to be deleted from the file repository.\"}],\"relationship\":[\"Save content to a file and update its dependencies is related to Get the dependencies of a file.\",\"Save content to a file and update its dependencies is related to Get the dependencies of a file that have changed.\",\"Save content to a file and update its dependencies is related to Read the content of a file.\",\"Save content to a file and update its dependencies is related to Get the content of all files in the repository.\",\"Save content to a file and update its dependencies is related to Get the files in a directory that have changed.\",\"Save content to a file and update its dependencies is related to Generate a new filename based on the current timestamp and a UUID suffix.\",\"Save content to a file and update its dependencies is related to Save content to a file and update its dependencies using a Document instance.\",\"Save content to a file and update its dependencies is related to Save a Document instance as a PDF file.\",\"Save content to a file and update its dependencies is related to Delete a file from the file repository.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/file_repository.py:FileRepository", "target": "\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "{\"name\":\"all_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:all_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:changed_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "{\"name\":\"root_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"root_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:root_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(filename: Path \\\\| str)\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Document\\\\|None\",\"description\":\"Document \\\\| None\",\"compositions\":[\"Document\\\\\"]},\"description\":\"get(filename: Path \\\\| str): Document \\\\| None\",\"aggregations\":[\"Path\\\\\",\"Document\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_all", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_all", "target": "{\"name\":\"get_all\",\"args\":[{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[Document]\",\"description\":\"List[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_all(filter_ignored): List[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_change_dir_files", "target": "{\"name\":\"get_change_dir_files\",\"args\":[{\"name\":\"dir\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"dir: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_change_dir_files(dir: Path \\\\| str): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_changed_dependency", "target": "{\"name\":\"get_changed_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_changed_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:get_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:get_dependency", "target": "{\"name\":\"get_dependency\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"Set[str]\",\"description\":\"Set[str]\",\"compositions\":[]},\"description\":\"get_dependency(filename: Path \\\\| str): Set[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:new_filename", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:new_filename", "target": "{\"name\":\"new_filename\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_filename()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"filename\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"filename: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Document\",\"description\":\"Document\",\"compositions\":[\"Document\"]},\"description\":\"save(filename: Path \\\\| str, content, dependencies: List[str]): Document\",\"aggregations\":[\"Path\\\\\",\"Document\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_doc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save_doc", "target": "{\"name\":\"save_doc\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_doc(doc: Document, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:save_pdf", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/file_repository.py:FileRepository:save_pdf", "target": "{\"name\":\"save_pdf\",\"args\":[{\"name\":\"doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"with_suffix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"with_suffix: str\",\"compositions\":[]},{\"name\":\"dependencies\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"dependencies: List[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save_pdf(doc: Document, with_suffix: str, dependencies: List[str])\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/fireworks_api.py", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager"}, {"predicate": "has_class", "source": "metagpt/provider/fireworks_api.py", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"name\":\"FireworksCostManager\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]},\"total_cost\":{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}},\"methods\":{\"model_grade_token_costs\":{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]},\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"lineno\":32,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager", "target": "{\"name\":\"FireworksCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_cost\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_completion_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_cost", "target": "{\"name\":\"total_cost\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_cost\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:model_grade_token_costs", "target": "{\"name\":\"model_grade_token_costs\",\"args\":[{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,float]\",\"description\":\"dict[str, float]\",\"compositions\":[]},\"description\":\"model_grade_token_costs(model: str): dict[str, float]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksCostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens: int\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"completion_tokens: int\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens: int, completion_tokens: int, model: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"name\":\"FireworksLLM\",\"package\":\"metagpt/provider/fireworks_api.py:FireworksLLM\",\"attributes\":{\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}},\"methods\":{\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"lineno\":74,\"end_lineno\":131,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FireworksLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/fireworks_api.py:FireworksLLM", "target": "{\"name\":\"FireworksLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:auto_max_tokens", "target": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/fix_bug.py", "target": "metagpt/actions/fix_bug.py:FixBug"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"name\":\"FixBug\",\"package\":\"metagpt/actions/fix_bug.py:FixBug\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "metagpt/actions/fix_bug.py:FixBug:name"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"FixBug\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/fix_bug.py:FixBug", "target": "{\"name\":\"FixBug\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/fix_bug.py:FixBug:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/fix_bug.py:FixBug:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"name\":\"GPTPromptGenerator\",\"package\":\"metagpt/tools/prompt_writer.py:GPTPromptGenerator\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]},\"gen_chatbot_style\":{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]},\"gen_instruction_style\":{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]},\"gen_query_style\":{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GPTPromptGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator", "target": "{\"name\":\"GPTPromptGenerator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"example\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"example: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"style: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Union[list[str],str]\",\"description\":\"Union[list[str], str]\",\"compositions\":[]},\"description\":\"gen(example: str, style: str): Union[list[str], str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_chatbot_style", "target": "{\"name\":\"gen_chatbot_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_chatbot_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_instruction_style", "target": "{\"name\":\"gen_instruction_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_instruction_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:gen_query_style", "target": "{\"name\":\"gen_query_style\",\"args\":[{\"name\":\"example\",\"type_\":\"\",\"default_\":\"\",\"description\":\"example\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_query_style(example)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/google_gemini_api.py", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel"}, {"predicate": "has_class", "source": "metagpt/provider/google_gemini_api.py", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"name\":\"GeminiGenerativeModel\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiGenerativeModel\",\"attributes\":{},\"methods\":{\"count_tokens\":{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]},\"count_tokens_async\":{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}},\"compositions\":[],\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "?:content_types.ContentsType"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "?:glm.CountTokensResponse"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"lineno\":29,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiGenerativeModel\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel", "target": "{\"name\":\"GeminiGenerativeModel\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens", "target": "{\"name\":\"count_tokens\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiGenerativeModel:count_tokens_async", "target": "{\"name\":\"count_tokens_async\",\"args\":[{\"name\":\"contents\",\"type_\":\"content_types.ContentsType\",\"default_\":\"\",\"description\":\"contents: content_types.ContentsType\",\"compositions\":[\"content_types.ContentsType\"]}],\"return_args\":{\"type_\":\"glm.CountTokensResponse\",\"description\":\"glm.CountTokensResponse\",\"compositions\":[\"glm.CountTokensResponse\"]},\"description\":\"count_tokens_async(contents: content_types.ContentsType): glm.CountTokensResponse\",\"aggregations\":[\"content_types.ContentsType\",\"glm.CountTokensResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"name\":\"GeminiLLM\",\"package\":\"metagpt/provider/google_gemini_api.py:GeminiLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"aget_usage\":{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "?:GenerateContentResponse"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"lineno\":45,\"end_lineno\":143,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeminiLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM", "target": "{\"name\":\"GeminiLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:aget_usage", "target": "{\"name\":\"aget_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aget_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:completion", "target": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'GenerateContentResponse'\",\"description\":\"'GenerateContentResponse'\",\"compositions\":[\"GenerateContentResponse\"]},\"description\":\"completion(messages: list[dict]): 'GenerateContentResponse'\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"GenerateContentResponse\",\"default_\":\"\",\"description\":\"resp: GenerateContentResponse\",\"compositions\":[\"GenerateContentResponse\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: GenerateContentResponse): str\",\"aggregations\":[\"GenerateContentResponse\"]}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:get_usage", "target": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"resp_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"resp_text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(messages: list[dict], resp_text: str): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:parse_stream_helper"}, {"predicate": "has_function", "source": "metagpt/provider/general_api_requestor.py", "target": "metagpt/provider/general_api_requestor.py:parse_stream"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"name\":\"GeneralAPIRequestor\",\"package\":\"metagpt/provider/general_api_requestor.py:GeneralAPIRequestor\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_base.py:APIRequestor"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"lineno\":38,\"end_lineno\":104,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GeneralAPIRequestor\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor", "target": "{\"name\":\"GeneralAPIRequestor\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/generate_questions.py", "target": "metagpt/actions/generate_questions.py:GenerateQuestions"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"name\":\"GenerateQuestions\",\"package\":\"metagpt/actions/generate_questions.py:GenerateQuestions\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}},\"compositions\":[],\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/generate_questions.py:GenerateQuestions:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/generate_questions.py:GenerateQuestions:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "?:ActionNode"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"lineno\":18,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateQuestions\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/generate_questions.py:GenerateQuestions", "target": "{\"name\":\"GenerateQuestions\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/generate_questions.py:GenerateQuestions:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionNode\",\"description\":\"ActionNode\",\"compositions\":[\"ActionNode\"]},\"description\":\"run(context): ActionNode\",\"aggregations\":[\"ActionNode\"]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:GenerateTable"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR"}, {"predicate": "has_class", "source": "metagpt/actions/invoice_ocr.py", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"name\":\"GenerateTable\",\"package\":\"metagpt/actions/invoice_ocr.py:GenerateTable\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/invoice_ocr.py:GenerateTable:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"lineno\":122,\"end_lineno\":163,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GenerateTable\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:GenerateTable", "target": "{\"name\":\"GenerateTable\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:GenerateTable:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"ocr_results\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_results: list\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(ocr_results: list, filename: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:SparkLLM"}, {"predicate": "has_class", "source": "metagpt/provider/spark_api.py", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"name\":\"GetMessageFromWeb\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb\",\"attributes\":{\"domain\":{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]},\"ret\":{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]},\"spark_api_key\":{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]},\"spark_api_secret\":{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]},\"spark_appid\":{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]},\"text\":{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}},\"methods\":{\"gen_params\":{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]},\"on_close\":{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close (ws, one, two)\",\"aggregations\":[]},\"on_error\":{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]},\"on_message\":{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]},\"on_open\":{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"send\":{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:text"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:run"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:send"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"lineno\":46,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GetMessageFromWeb\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb", "target": "{\"name\":\"GetMessageFromWeb\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"ret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"spark_api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_appid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"text\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:domain", "target": "{\"name\":\"domain\",\"type_\":\"\",\"default_\":\"\",\"description\":\"domain\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:ret", "target": "{\"name\":\"ret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ret : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_key", "target": "{\"name\":\"spark_api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_api_secret", "target": "{\"name\":\"spark_api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_api_secret\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_appid", "target": "{\"name\":\"spark_appid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_appid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:spark_url", "target": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:text", "target": "{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:gen_params", "target": "{\"name\":\"gen_params\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"gen_params()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_close", "target": "{\"name\":\"on_close\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"one\",\"type_\":\"\",\"default_\":\"\",\"description\":\"one\",\"compositions\":[]},{\"name\":\"two\",\"type_\":\"\",\"default_\":\"\",\"description\":\"two\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_close (ws, one, two)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_error", "target": "{\"name\":\"on_error\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"error\",\"type_\":\"\",\"default_\":\"\",\"description\":\"error\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_error(ws, error)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_message", "target": "{\"name\":\"on_message\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]},{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_message(ws, message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:on_open", "target": "{\"name\":\"on_open\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"on_open(ws)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:send", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:send", "target": "{\"name\":\"send\",\"args\":[{\"name\":\"ws\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ws\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"send(ws)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"name\":\"GitRepository\",\"package\":\"metagpt/utils/git_repository.py:GitRepository\",\"attributes\":{\"changed_files\":{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]},\"is_valid\":{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]},\"status\":{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"add_change\":{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]},\"archive\":{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]},\"commit\":{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]},\"delete_repository\":{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]},\"filter_gitignore\":{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]},\"get_dependency\":{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]},\"get_files\":{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]},\"is_git_dir\":{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]},\"new_file_repository\":{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"Path\\\\\",\"FileRepository\"]},\"open\":{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]},\"rename_root\":{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Path\\\\\",\"DependencyFile\",\"FileRepository\",\"Path\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:changed_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:is_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:status"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:add_change"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:archive"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:commit"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:delete_repository"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:get_dependency"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:get_files"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:is_git_dir"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:new_file_repository"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:open"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:rename_root"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:Path\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:DependencyFile"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:FileRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "?:Path"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/context.py:Context:git_repo"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isAggregateOn", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/project_repo.py:ProjectRepo:_git_repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "metagpt/utils/git_repository.py:GitRepository:_init"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"lineno\":35,\"end_lineno\":285,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GitRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"name\":\"GitRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"changed_files\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"is_valid\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"status\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "{\"description\":\"This source code defines a class `GitRepository` that represents a Git repository. It provides methods to interact with the repository, such as opening an existing repository, initializing a new repository, adding or removing files from the staging area, committing changes, deleting the repository, and more.\",\"use_cases\":[{\"description\":\"Open an existing Git repository or initialize a new one.\",\"inputs\":[\"local_path\",\"auto_init\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the provided path is a Git repository\",\"If it is a Git repository, open it and set the repository attribute\",\"If it is not a Git repository and auto_init is True, initialize a new Git repository at the provided path\"],\"reason\":\"When a user wants to open an existing Git repository or initialize a new one for further operations.\"},{\"description\":\"Add or remove files from the staging area based on the provided changes.\",\"inputs\":[\"files\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Iterate through the provided files and their change types\",\"Add or remove files from the staging area based on the change types\"],\"reason\":\"When a user wants to stage changes in the Git repository.\"},{\"description\":\"Commit the staged changes with the given comments.\",\"inputs\":[\"comments\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Commit the staged changes with the provided comments\"],\"reason\":\"When a user wants to commit the staged changes in the Git repository.\"},{\"description\":\"Delete the entire repository directory.\",\"inputs\":[],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Delete the entire repository directory if it is valid\"],\"reason\":\"When a user wants to delete the entire Git repository directory.\"},{\"description\":\"Return a dictionary of changed files and their change types.\",\"inputs\":[],\"outputs\":[\"changed_files\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Retrieve the untracked files and their change types\",\"Retrieve the changed files and their change types from the index\",\"Combine the untracked and changed files into a dictionary\"],\"reason\":\"When a user wants to get the changed files in the Git repository.\"},{\"description\":\"Check if the specified directory is a Git repository.\",\"inputs\":[\"local_path\"],\"outputs\":[\"is_git_dir\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the specified directory contains a .git directory\"],\"reason\":\"When a user wants to check if a directory is a Git repository.\"},{\"description\":\"Check if the Git repository is valid (exists and is initialized).\",\"inputs\":[],\"outputs\":[\"is_valid\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Check if the repository attribute is not None\"],\"reason\":\"When a user wants to check if the Git repository is valid.\"},{\"description\":\"Return the Git repository's status as a string.\",\"inputs\":[],\"outputs\":[\"status\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Return the status of the Git repository using GitPython\"],\"reason\":\"When a user wants to get the status of the Git repository.\"},{\"description\":\"Return the path to the working directory of the Git repository.\",\"inputs\":[],\"outputs\":[\"workdir\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Return the path to the working directory if the repository is valid\"],\"reason\":\"When a user wants to get the working directory of the Git repository.\"},{\"description\":\"Archive the current state of the Git repository.\",\"inputs\":[\"comments\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Add all changed files to the staging area\",\"Commit the changes with the provided comments\"],\"reason\":\"When a user wants to archive the current state of the Git repository.\"},{\"description\":\"Create a new instance of FileRepository associated with this Git repository.\",\"inputs\":[\"relative_path\"],\"outputs\":[\"FileRepository\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Create a new instance of FileRepository with the provided relative path\"],\"reason\":\"When a user wants to create a new instance of FileRepository associated with the Git repository.\"},{\"description\":\"Get the dependency file associated with the Git repository.\",\"inputs\":[],\"outputs\":[\"DependencyFile\"],\"actors\":[\"FileRepository\"],\"steps\":[\"If the dependency file is not available, create a new instance of DependencyFile\"],\"reason\":\"When a user wants to get the dependency file associated with the Git repository.\"},{\"description\":\"Rename the root directory of the Git repository.\",\"inputs\":[\"new_dir_name\"],\"outputs\":[],\"actors\":[\"FileRepository\"],\"steps\":[\"Rename the root directory of the Git repository to the provided new name\"],\"reason\":\"When a user wants to rename the root directory of the Git repository.\"},{\"description\":\"Retrieve a list of files in the specified relative path.\",\"inputs\":[\"relative_path\",\"root_relative_path\",\"filter_ignored\"],\"outputs\":[\"List\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Retrieve the list of files in the specified relative path\",\"Recursively retrieve files from subdirectories if present\",\"Filter the files based on .gitignore rules if required\"],\"reason\":\"When a user wants to retrieve a list of files in the specified relative path within the Git repository.\"},{\"description\":\"Filter a list of filenames based on .gitignore rules.\",\"inputs\":[\"filenames\",\"root_relative_path\"],\"outputs\":[\"List\"],\"actors\":[\"FileRepository\"],\"steps\":[\"Filter the list of filenames based on .gitignore rules\"],\"reason\":\"When a user wants to filter a list of filenames based on .gitignore rules.\"}],\"relationship\":[\"Open an existing Git repository or initialize a new one can be performed by FileRepository\",\"Add or remove files from the staging area based on the provided changes can be performed by FileRepository\",\"Commit the staged changes with the given comments can be performed by FileRepository\",\"Delete the entire repository directory can be performed by FileRepository\",\"Return a dictionary of changed files and their change types can be performed by FileRepository\",\"Check if the specified directory is a Git repository can be performed by FileRepository\",\"Check if the Git repository is valid (exists and is initialized) can be performed by FileRepository\",\"Return the Git repository's status as a string can be performed by FileRepository\",\"Return the path to the working directory of the Git repository can be performed by FileRepository\",\"Archive the current state of the Git repository can be performed by FileRepository\",\"Create a new instance of FileRepository associated with this Git repository can be performed by FileRepository\",\"Get the dependency file associated with the Git repository can be performed by FileRepository\",\"Rename the root directory of the Git repository can be performed by FileRepository\",\"Retrieve a list of files in the specified relative path can be performed by FileRepository\",\"Filter a list of filenames based on .gitignore rules can be performed by FileRepository\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/git_repository.py:GitRepository", "target": "\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "{\"name\":\"changed_files\",\"type_\":\"\",\"default_\":\"\",\"description\":\"changed_files\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:changed_files", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "{\"name\":\"is_valid\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_valid\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_valid", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:status", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:add_change", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:add_change", "target": "{\"name\":\"add_change\",\"args\":[{\"name\":\"files\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"files: Dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_change(files: Dict)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:archive", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:archive", "target": "{\"name\":\"archive\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"archive(comments)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:commit", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:commit", "target": "{\"name\":\"commit\",\"args\":[{\"name\":\"comments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"comments\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"commit(comments)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:delete_repository", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:delete_repository", "target": "{\"name\":\"delete_repository\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_repository()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:filter_gitignore", "target": "{\"name\":\"filter_gitignore\",\"args\":[{\"name\":\"filenames\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"filenames: List[str]\",\"compositions\":[]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"filter_gitignore(filenames: List[str], root_relative_path: Path \\\\| str): List[str]\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:get_dependency", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:get_dependency", "target": "{\"name\":\"get_dependency\",\"args\":[],\"return_args\":{\"type_\":\"DependencyFile\",\"description\":\"DependencyFile\",\"compositions\":[\"DependencyFile\"]},\"description\":\"get_dependency(): DependencyFile\",\"aggregations\":[\"DependencyFile\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:get_files", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:get_files", "target": "{\"name\":\"get_files\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"root_relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"root_relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]},{\"name\":\"filter_ignored\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filter_ignored\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List\",\"description\":\"List\",\"compositions\":[]},\"description\":\"get_files(relative_path: Path \\\\| str, root_relative_path: Path \\\\| str, filter_ignored): List\",\"aggregations\":[\"Path\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:is_git_dir", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:is_git_dir", "target": "{\"name\":\"is_git_dir\",\"args\":[{\"name\":\"local_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"local_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_git_dir(local_path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:new_file_repository", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:new_file_repository", "target": "{\"name\":\"new_file_repository\",\"args\":[{\"name\":\"relative_path\",\"type_\":\"Path\\\\|str\",\"default_\":\"\",\"description\":\"relative_path: Path \\\\| str\",\"compositions\":[\"Path\\\\\"]}],\"return_args\":{\"type_\":\"FileRepository\",\"description\":\"FileRepository\",\"compositions\":[\"FileRepository\"]},\"description\":\"new_file_repository(relative_path: Path \\\\| str): FileRepository\",\"aggregations\":[\"Path\\\\\",\"FileRepository\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:open", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:open", "target": "{\"name\":\"open\",\"args\":[{\"name\":\"local_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"local_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"auto_init\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_init\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"open(local_path: Path, auto_init)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:rename_root", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/git_repository.py:GitRepository:rename_root", "target": "{\"name\":\"rename_root\",\"args\":[{\"name\":\"new_dir_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"new_dir_name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rename_root(new_dir_name)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_googleapi.py", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper"}, {"predicate": "has_function", "source": "metagpt/tools/search_engine_googleapi.py", "target": "metagpt/tools/search_engine_googleapi.py:safe_google_results"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"name\":\"GoogleAPIWrapper\",\"package\":\"metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper\",\"attributes\":{\"executor\":{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]},\"google_api_client\":{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]},\"google_api_key\":{\"name\":\"google_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_api_key : Optional[str]\",\"compositions\":[]},\"google_cse_id\":{\"name\":\"google_cse_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_cse_id : Optional[str]\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"check_google_api_key\":{\"name\":\"check_google_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_api_key(val: str)\",\"aggregations\":[]},\"check_google_cse_id\":{\"name\":\"check_google_cse_id\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_cse_id(val: str)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}},\"compositions\":[\"futures.Executor\",\"asyncio.AbstractEventLoop\"],\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:futures.Executor"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:asyncio.AbstractEventLoop"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "?:\\"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"lineno\":27,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GoogleAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper", "target": "{\"name\":\"GoogleAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"Optional[futures.Executor]\",\"default_value\":\"\"},{\"name\":\"google_api_client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"google_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"google_cse_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"Optional[asyncio.AbstractEventLoop]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"Optional[futures.Executor]\",\"default_\":\"\",\"description\":\"executor : Optional[futures.Executor]\",\"compositions\":[\"futures.Executor\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "{\"name\":\"google_api_client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"google_api_client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_api_key", "target": "{\"name\":\"google_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:google_cse_id", "target": "{\"name\":\"google_cse_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"google_cse_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"Optional[asyncio.AbstractEventLoop]\",\"default_\":\"\",\"description\":\"loop : Optional[asyncio.AbstractEventLoop]\",\"compositions\":[\"asyncio.AbstractEventLoop\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_api_key", "target": "{\"name\":\"check_google_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_api_key(val: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:check_google_cse_id", "target": "{\"name\":\"check_google_cse_id\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_google_cse_id(val: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_googleapi.py:GoogleAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]},{\"name\":\"focus\",\"type_\":\"list[str]\\\\|None\",\"default_\":\"\",\"description\":\"focus: list[str] \\\\| None\",\"compositions\":[\"\\\\\"]}],\"return_args\":{\"type_\":\"str\\\\|list[dict]\",\"description\":\"str \\\\| list[dict]\",\"compositions\":[\"str\\\\\"]},\"description\":\"run(query: str, max_results: int, as_string: bool, focus: list[str] \\\\| None): str \\\\| list[dict]\",\"aggregations\":[\"str\\\\\",\"\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:GraphKeyword"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class", "source": "metagpt/utils/graph_repository.py", "target": "metagpt/utils/graph_repository.py:SPO"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"name\":\"GraphKeyword\",\"package\":\"metagpt/utils/graph_repository.py:GraphKeyword\",\"attributes\":{\"CLASS\":{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]},\"CLASS_METHOD\":{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]},\"CLASS_PROPERTY\":{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]},\"FUNCTION\":{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]},\"GLOBAL_VARIABLE\":{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]},\"HAS_CLASS\":{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]},\"HAS_CLASS_METHOD\":{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]},\"HAS_CLASS_PROPERTY\":{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]},\"HAS_CLASS_USE_CASE\":{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]},\"HAS_CLASS_VIEW\":{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]},\"HAS_DETAIL\":{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]},\"HAS_FUNCTION\":{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]},\"HAS_PAGE_INFO\":{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]},\"HAS_PARTICIPANT\":{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]},\"HAS_SEQUENCE_VIEW\":{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]},\"IS\":{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]},\"IS_AGGREGATE_OF\":{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]},\"IS_COMPOSITE_OF\":{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]},\"NULL\":{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]},\"OF\":{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]},\"ON\":{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]},\"SOURCE_CODE\":{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:NULL"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:OF"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:ON"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"lineno\":21,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphKeyword\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:GraphKeyword", "target": "{\"name\":\"GraphKeyword\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"GLOBAL_VARIABLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_METHOD\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_PROPERTY\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_USE_CASE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_CLASS_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_DETAIL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_FUNCTION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PAGE_INFO\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_PARTICIPANT\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"HAS_SEQUENCE_VIEW\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_AGGREGATE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"IS_COMPOSITE_OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"NULL\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"OF\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ON\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"SOURCE_CODE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS", "target": "{\"name\":\"CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_METHOD", "target": "{\"name\":\"CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_METHOD : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:CLASS_PROPERTY", "target": "{\"name\":\"CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:FUNCTION", "target": "{\"name\":\"FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FUNCTION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:GLOBAL_VARIABLE", "target": "{\"name\":\"GLOBAL_VARIABLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"GLOBAL_VARIABLE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS", "target": "{\"name\":\"HAS_CLASS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_METHOD", "target": "{\"name\":\"HAS_CLASS_METHOD\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_METHOD : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_PROPERTY", "target": "{\"name\":\"HAS_CLASS_PROPERTY\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_PROPERTY : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_USE_CASE", "target": "{\"name\":\"HAS_CLASS_USE_CASE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_USE_CASE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_CLASS_VIEW", "target": "{\"name\":\"HAS_CLASS_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_CLASS_VIEW : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_DETAIL", "target": "{\"name\":\"HAS_DETAIL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_DETAIL : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_FUNCTION", "target": "{\"name\":\"HAS_FUNCTION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_FUNCTION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PAGE_INFO", "target": "{\"name\":\"HAS_PAGE_INFO\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PAGE_INFO : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_PARTICIPANT", "target": "{\"name\":\"HAS_PARTICIPANT\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_PARTICIPANT : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:HAS_SEQUENCE_VIEW", "target": "{\"name\":\"HAS_SEQUENCE_VIEW\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"HAS_SEQUENCE_VIEW : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS", "target": "{\"name\":\"IS\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_AGGREGATE_OF", "target": "{\"name\":\"IS_AGGREGATE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_AGGREGATE_OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:IS_COMPOSITE_OF", "target": "{\"name\":\"IS_COMPOSITE_OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"IS_COMPOSITE_OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:NULL", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:NULL", "target": "{\"name\":\"NULL\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"NULL : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:OF", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:OF", "target": "{\"name\":\"OF\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"OF : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:ON", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:ON", "target": "{\"name\":\"ON\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ON : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphKeyword:SOURCE_CODE", "target": "{\"name\":\"SOURCE_CODE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"SOURCE_CODE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"name\":\"GraphRepository\",\"package\":\"metagpt/utils/graph_repository.py:GraphRepository\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete (subject: str, predicate: str, object_: str): int\",\"aggregations\":[]},\"insert\":{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert (subject: str, predicate: str, object_: str)\",\"aggregations\":[]},\"rebuild_composition_relationship\":{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]},\"save\":{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save ()\",\"aggregations\":[]},\"select\":{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select (subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]},\"update_graph_db_with_class_relationship_views\":{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]},\"update_graph_db_with_class_views\":{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]},\"update_graph_db_with_file_info\":{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}},\"compositions\":[],\"aggregations\":[\"GraphRepository\",\"SPO\",\"DotClassRelationship\",\"DotClassInfo\",\"RepoFileInfo\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:name"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:delete"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:insert"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:save"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:select"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:GraphRepository"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:SPO"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:DotClassRelationship"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:DotClassInfo"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "?:RepoFileInfo"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "metagpt/utils/graph_repository.py:GraphRepository:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"lineno\":52,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"GraphRepository\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:GraphRepository", "target": "{\"name\":\"GraphRepository\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"delete (subject: str, predicate: str, object_: str): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:insert", "target": "{\"name\":\"insert\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"insert (subject: str, predicate: str, object_: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:rebuild_composition_relationship", "target": "{\"name\":\"rebuild_composition_relationship\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_composition_relationship(graph_db: 'GraphRepository')\",\"aggregations\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:save", "target": "{\"name\":\"save\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:select", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:select", "target": "{\"name\":\"select\",\"args\":[{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject: str\",\"compositions\":[]},{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate: str\",\"compositions\":[]},{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[SPO]\",\"description\":\"List[SPO]\",\"compositions\":[\"SPO\"]},\"description\":\"select (subject: str, predicate: str, object_: str): List[SPO]\",\"aggregations\":[\"SPO\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_relationship_views", "target": "{\"name\":\"update_graph_db_with_class_relationship_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"relationship_views\",\"type_\":\"List[DotClassRelationship]\",\"default_\":\"\",\"description\":\"relationship_views: List[DotClassRelationship]\",\"compositions\":[\"DotClassRelationship\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_relationship_views(graph_db: 'GraphRepository', relationship_views: List[DotClassRelationship])\",\"aggregations\":[\"GraphRepository\",\"DotClassRelationship\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_class_views", "target": "{\"name\":\"update_graph_db_with_class_views\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"class_views\",\"type_\":\"List[DotClassInfo]\",\"default_\":\"\",\"description\":\"class_views: List[DotClassInfo]\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_class_views(graph_db: 'GraphRepository', class_views: List[DotClassInfo])\",\"aggregations\":[\"GraphRepository\",\"DotClassInfo\"]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:GraphRepository:update_graph_db_with_file_info", "target": "{\"name\":\"update_graph_db_with_file_info\",\"args\":[{\"name\":\"graph_db\",\"type_\":\"GraphRepository\",\"default_\":\"\",\"description\":\"graph_db: 'GraphRepository'\",\"compositions\":[\"GraphRepository\"]},{\"name\":\"file_info\",\"type_\":\"RepoFileInfo\",\"default_\":\"\",\"description\":\"file_info: RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_graph_db_with_file_info(graph_db: 'GraphRepository', file_info: RepoFileInfo)\",\"aggregations\":[\"GraphRepository\",\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/human_interaction.py", "target": "metagpt/utils/human_interaction.py:HumanInteraction"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"name\":\"HumanInteraction\",\"package\":\"metagpt/utils/human_interaction.py:HumanInteraction\",\"attributes\":{\"stop_list\":{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}},\"methods\":{\"check_input_type\":{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]},\"input_num_until_valid\":{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]},\"input_until_valid\":{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]},\"interact_with_instruct_content\":{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]},\"multilines_input\":{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}},\"compositions\":[\"tuple\"],\"aggregations\":[\"Type\",\"BaseModel\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:tuple"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:Type"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "?:BaseModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"lineno\":14,\"end_lineno\":107,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanInteraction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/human_interaction.py:HumanInteraction", "target": "{\"name\":\"HumanInteraction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stop_list\",\"visibility\":\"+\",\"value_type\":\"tuple\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:stop_list", "target": "{\"name\":\"stop_list\",\"type_\":\"tuple\",\"default_\":\"\",\"description\":\"stop_list : tuple\",\"compositions\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:check_input_type", "target": "{\"name\":\"check_input_type\",\"args\":[{\"name\":\"input_str\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"input_str: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Tuple[bool,Any]\",\"description\":\"Tuple[bool, Any]\",\"compositions\":[]},\"description\":\"check_input_type(input_str: str, req_type: Type): Tuple[bool, Any]\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_num_until_valid", "target": "{\"name\":\"input_num_until_valid\",\"args\":[{\"name\":\"num_max\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"num_max: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"input_num_until_valid(num_max: int): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:input_until_valid", "target": "{\"name\":\"input_until_valid\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]},{\"name\":\"req_type\",\"type_\":\"Type\",\"default_\":\"\",\"description\":\"req_type: Type\",\"compositions\":[\"Type\"]}],\"return_args\":{\"type_\":\"Any\",\"description\":\"Any\",\"compositions\":[]},\"description\":\"input_until_valid(prompt: str, req_type: Type): Any\",\"aggregations\":[\"Type\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:interact_with_instruct_content", "target": "{\"name\":\"interact_with_instruct_content\",\"args\":[{\"name\":\"instruct_content\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"instruct_content: BaseModel\",\"compositions\":[\"BaseModel\"]},{\"name\":\"mapping\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"mapping: dict\",\"compositions\":[]},{\"name\":\"interact_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"interact_type: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,Any]\",\"description\":\"dict[str, Any]\",\"compositions\":[]},\"description\":\"interact_with_instruct_content(instruct_content: BaseModel, mapping: dict, interact_type: str): dict[str, Any]\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/human_interaction.py:HumanInteraction:multilines_input", "target": "{\"name\":\"multilines_input\",\"args\":[{\"name\":\"prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prompt: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"multilines_input(prompt: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/human_provider.py", "target": "metagpt/provider/human_provider.py:HumanProvider"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"name\":\"HumanProvider\",\"package\":\"metagpt/provider/human_provider.py:HumanProvider\",\"attributes\":{\"system_prompt\":{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}},\"methods\":{\"aask\":{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"ask\":{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:aask"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:ask"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/roles/role.py:Role:llm"}, {"predicate": "has_class_method", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "metagpt/provider/human_provider.py:HumanProvider:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"HumanProvider\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/human_provider.py:HumanProvider", "target": "{\"name\":\"HumanProvider\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"system_prompt\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:system_prompt", "target": "{\"name\":\"system_prompt\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_prompt : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:aask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:aask", "target": "{\"name\":\"aask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"system_msgs\",\"type_\":\"Optional[list[str]]\",\"default_\":\"\",\"description\":\"system_msgs: Optional[list[str]]\",\"compositions\":[]},{\"name\":\"format_msgs\",\"type_\":\"Optional[list[dict[str,str]]]\",\"default_\":\"\",\"description\":\"format_msgs: Optional[list[dict[str, str]]]\",\"compositions\":[]},{\"name\":\"generator\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"generator: bool\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"aask(msg: str, system_msgs: Optional[list[str]], format_msgs: Optional[list[dict[str, str]]], generator: bool, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:ask", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/human_provider.py:HumanProvider:ask", "target": "{\"name\":\"ask\",\"args\":[{\"name\":\"msg\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"msg: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"ask(msg: str, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"name\":\"IFlyTekTTS\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTS\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}},\"methods\":{\"synthesize_speech\":{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"lineno\":51,\"end_lineno\":113,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTS\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS", "target": "{\"name\":\"IFlyTekTTS\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_secret : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"app_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:synthesize_speech", "target": "{\"name\":\"synthesize_speech\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"output_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"output_file: str\",\"compositions\":[]},{\"name\":\"voice\",\"type_\":\"\",\"default_\":\"\",\"description\":\"voice\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"synthesize_speech(text, output_file: str, voice)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"name\":\"IFlyTekTTSResponse\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse\",\"attributes\":{\"code\":{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]},\"sid\":{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"AudioData\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid"}, {"predicate": "is_composite_of", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "metagpt/tools/iflytek_tts.py:AudioData"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"lineno\":41,\"end_lineno\":45,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSResponse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "{\"name\":\"IFlyTekTTSResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Optional[AudioData]\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"sid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse", "target": "?:AudioData"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:code", "target": "{\"name\":\"code\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"code : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:data", "target": "{\"name\":\"data\",\"type_\":\"Optional[AudioData]\",\"default_\":\"\",\"description\":\"data : Optional[AudioData]\",\"compositions\":[\"AudioData\"]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:message", "target": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSResponse:sid", "target": "{\"name\":\"sid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sid : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"name\":\"IFlyTekTTSStatus\",\"package\":\"metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"lineno\":29,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IFlyTekTTSStatus\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus", "target": "{\"name\":\"IFlyTekTTSStatus\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTSStatus:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult"}, {"predicate": "has_class", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image"}, {"predicate": "has_function", "source": "metagpt/tools/metagpt_text_to_image.py", "target": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "{\"name\":\"ImageResult\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult\",\"attributes\":{\"images\":{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters"}, {"predicate": "has_class_view", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult", "target": "{\"name\":\"ImageResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"images\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:images", "target": "{\"name\":\"images\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"images : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image:ImageResult:parameters", "target": "{\"name\":\"parameters\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"parameters : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument", "target": "{\"name\":\"IndexableDocument\",\"package\":\"metagpt/document.py:IndexableDocument\",\"attributes\":{\"content_col\":{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]},\"data\":{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]},\"meta_col\":{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]},\"get_docs_and_metadatas\":{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}},\"compositions\":[\"pd.DataFrame\"],\"aggregations\":[\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:content_col"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:data"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:meta_col"}, {"predicate": "has_class_property", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:model_config"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:IndexableDocument", "target": "?:pd.DataFrame"}, {"predicate": "isAggregateOf", "source": "metagpt/document.py:IndexableDocument", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:Document"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df"}, {"predicate": "has_class_method", "source": "metagpt/document.py:IndexableDocument", "target": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain"}, {"predicate": "has_page_info", "source": "metagpt/document.py:IndexableDocument", "target": "{\"lineno\":114,\"end_lineno\":161,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"IndexableDocument\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:IndexableDocument", "target": "{\"name\":\"IndexableDocument\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"Union[pd.DataFrame,list]\",\"default_value\":\"\"},{\"name\":\"meta_col\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:content_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:content_col", "target": "{\"name\":\"content_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content_col : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:data", "target": "{\"name\":\"data\",\"type_\":\"Union[pd.DataFrame,list]\",\"default_\":\"\",\"description\":\"data : Union[pd.DataFrame, list]\",\"compositions\":[\"pd.DataFrame\"]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:meta_col", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:meta_col", "target": "{\"name\":\"meta_col\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"meta_col : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"data_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"content_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content_col\",\"compositions\":[]},{\"name\":\"meta_col\",\"type_\":\"\",\"default_\":\"\",\"description\":\"meta_col\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(data_path: Path, content_col, meta_col)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:IndexableDocument:get_docs_and_metadatas", "target": "{\"name\":\"get_docs_and_metadatas\",\"args\":[{\"name\":\")\",\"type_\":\"(list\",\"default_\":\"\",\"description\":\"): (list\",\"compositions\":[]},{\"name\":\"list\",\"type_\":\"\",\"default_\":\"\",\"description\":\"list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_docs_and_metadatas(): (list, list)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:OCRResults"}, {"predicate": "has_class", "source": "metagpt/roles/invoice_ocr_assistant.py", "target": "metagpt/roles/invoice_ocr_assistant.py:ReplyData"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"name\":\"InvoiceData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceData\",\"attributes\":{\"invoice_data\":{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData", "target": "{\"name\":\"InvoiceData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"invoice_data\",\"visibility\":\"+\",\"value_type\":\"list[dict]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceData:invoice_data", "target": "{\"name\":\"invoice_data\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"invoice_data : list[dict]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"name\":\"InvoiceOCR\",\"package\":\"metagpt/actions/invoice_ocr.py:InvoiceOCR\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"lineno\":31,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCR\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR", "target": "{\"name\":\"InvoiceOCR\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"list\",\"description\":\"list\",\"compositions\":[]},\"description\":\"run(file_path: Path): list\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"name\":\"InvoiceOCRAssistant\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"orc_data\":{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]},\"origin_query\":{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"lineno\":39,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoiceOCRAssistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant", "target": "{\"name\":\"InvoiceOCRAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"orc_data\",\"visibility\":\"+\",\"value_type\":\"Optional[list]\",\"default_value\":\"\"},{\"name\":\"origin_query\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:orc_data", "target": "{\"name\":\"orc_data\",\"type_\":\"Optional[list]\",\"default_\":\"\",\"description\":\"orc_data : Optional[list]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:origin_query", "target": "{\"name\":\"origin_query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"origin_query : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"name\":\"InvoicePath\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:InvoicePath\",\"attributes\":{\"file_path\":{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "?:Path"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"lineno\":23,\"end_lineno\":24,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"InvoicePath\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath", "target": "{\"name\":\"InvoicePath\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"file_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoicePath:file_path", "target": "{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/llm_config.py", "target": "metagpt/configs/llm_config.py:LLMConfig"}, {"predicate": "has_class", "source": "metagpt/configs/llm_config.py", "target": "metagpt/configs/llm_config.py:LLMType"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"name\":\"LLMConfig\",\"package\":\"metagpt/configs/llm_config.py:LLMConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"api_version\":{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]},\"base_url\":{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]},\"best_of\":{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]},\"calc_usage\":{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]},\"domain\":{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]},\"frequency_penalty\":{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]},\"logprobs\":{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]},\"max_token\":{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]},\"n\":{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]},\"presence_penalty\":{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]},\"repetition_penalty\":{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]},\"stop\":{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]},\"stream\":{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]},\"temperature\":{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]},\"timeout\":{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]},\"top_k\":{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]},\"top_logprobs\":{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]},\"top_p\":{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}},\"methods\":{\"check_llm_key\":{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:api_version"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:app_id"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:base_url"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:best_of"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:calc_usage"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:domain"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:logprobs"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:max_token"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:model"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:n"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:proxy"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:stop"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:stream"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:temperature"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:timeout"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_k"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:top_p"}, {"predicate": "has_class_method", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/config2.py:Config:llm"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/base_llm.py:BaseLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/anthropic_api.py:Claude2"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/anthropic_api.py:Claude2:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/google_gemini_api.py:GeminiLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/spark_api.py:SparkLLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"lineno\":32,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"name\":\"LLMConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_version\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"base_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"best_of\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"calc_usage\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"domain\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"frequency_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[bool]\",\"default_value\":\"\"},{\"name\":\"max_token\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"n\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"presence_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"repetition_penalty\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"stop\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"stream\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"temperature\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"timeout\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_k\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"top_logprobs\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"top_p\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "{\"description\":\"This source code defines a class LLMConfig which represents the configuration for an LLM (Language Model) system. It includes various fields such as API key, base URL, model, app ID, and other parameters for controlling the behavior of the LLM system.\",\"use_cases\":[{\"description\":\"Configure LLM system\",\"inputs\":[\"api_key\",\"api_type\",\"base_url\",\"api_version\",\"model\",\"app_id\",\"api_secret\",\"domain\",\"max_token\",\"temperature\",\"top_p\",\"top_k\",\"repetition_penalty\",\"stop\",\"presence_penalty\",\"frequency_penalty\",\"best_of\",\"n\",\"stream\",\"logprobs\",\"top_logprobs\",\"timeout\",\"proxy\",\"calc_usage\"],\"outputs\":[],\"actors\":[\"System Administrator\"],\"steps\":[\"The system administrator provides the configuration parameters for the LLM system.\",\"The system validates the provided configuration parameters.\",\"The LLM system is configured with the provided parameters.\"],\"reason\":\"The external system needs to configure the LLM system with specific parameters to control its behavior and functionality.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/configs/llm_config.py:LLMConfig", "target": "\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_secret : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:api_version", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:api_version", "target": "{\"name\":\"api_version\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_version : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"app_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:base_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:base_url", "target": "{\"name\":\"base_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"base_url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:best_of", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:best_of", "target": "{\"name\":\"best_of\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"best_of : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:calc_usage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:calc_usage", "target": "{\"name\":\"calc_usage\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"calc_usage : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:domain", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:domain", "target": "{\"name\":\"domain\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"domain : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:frequency_penalty", "target": "{\"name\":\"frequency_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"frequency_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:logprobs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:logprobs", "target": "{\"name\":\"logprobs\",\"type_\":\"Optional[bool]\",\"default_\":\"\",\"description\":\"logprobs : Optional[bool]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:max_token", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:max_token", "target": "{\"name\":\"max_token\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_token : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:model", "target": "{\"name\":\"model\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"model : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:n", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:n", "target": "{\"name\":\"n\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"n : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:presence_penalty", "target": "{\"name\":\"presence_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"presence_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"proxy : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:repetition_penalty", "target": "{\"name\":\"repetition_penalty\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"repetition_penalty : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:stop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:stop", "target": "{\"name\":\"stop\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"stop : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:stream", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:stream", "target": "{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:temperature", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:temperature", "target": "{\"name\":\"temperature\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"temperature : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:timeout", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:timeout", "target": "{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_k", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_k", "target": "{\"name\":\"top_k\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"top_k : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_logprobs", "target": "{\"name\":\"top_logprobs\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"top_logprobs : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:top_p", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:top_p", "target": "{\"name\":\"top_p\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"top_p : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMConfig:check_llm_key", "target": "{\"name\":\"check_llm_key\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_llm_key(v)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry"}, {"predicate": "has_function", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:register_provider"}, {"predicate": "has_function", "source": "metagpt/provider/llm_provider_registry.py", "target": "metagpt/provider/llm_provider_registry.py:create_llm_instance"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"name\":\"LLMProviderRegistry\",\"package\":\"metagpt/provider/llm_provider_registry.py:LLMProviderRegistry\",\"attributes\":{\"providers\":{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}},\"methods\":{\"get_provider\":{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]},\"register\":{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"LLMType\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "?:LLMType"}, {"predicate": "has_class_method", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"lineno\":12,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMProviderRegistry\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry", "target": "{\"name\":\"LLMProviderRegistry\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"providers\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:providers", "target": "{\"name\":\"providers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"providers : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:get_provider", "target": "{\"name\":\"get_provider\",\"args\":[{\"name\":\"enum\",\"type_\":\"LLMType\",\"default_\":\"\",\"description\":\"enum: LLMType\",\"compositions\":[\"LLMType\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_provider(enum: LLMType)\",\"aggregations\":[\"LLMType\"]}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:register", "target": "{\"name\":\"register\",\"args\":[{\"name\":\"key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"key\",\"compositions\":[]},{\"name\":\"provider_cls\",\"type_\":\"\",\"default_\":\"\",\"description\":\"provider_cls\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"register(key, provider_cls)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"name\":\"LLMType\",\"package\":\"metagpt/configs/llm_config.py:LLMType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMConfig:api_type"}, {"predicate": "has_class_method", "source": "metagpt/configs/llm_config.py:LLMType", "target": "metagpt/configs/llm_config.py:LLMType:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"lineno\":16,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LLMType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/llm_config.py:LLMType", "target": "{\"name\":\"LLMType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/llm_config.py:LLMType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/lancedb_store.py", "target": "metagpt/document_store/lancedb_store.py:LanceStore"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"name\":\"LanceStore\",\"package\":\"metagpt/document_store/lancedb_store.py:LanceStore\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"table\":{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]},\"drop\":{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]},\"write\":{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}},\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\",\"LanceTable\",\"RemoteTable\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:db"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:name"}, {"predicate": "has_class_property", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:table"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:delete"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:drop"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:persist"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:LanceDBConnection"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:RemoteDBConnection"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:LanceTable"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "?:RemoteTable"}, {"predicate": "has_class_method", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "metagpt/document_store/lancedb_store.py:LanceStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"lineno\":14,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LanceStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/lancedb_store.py:LanceStore", "target": "{\"name\":\"LanceStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"LanceDBConnection,RemoteDBConnection\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"table\",\"visibility\":\"+\",\"value_type\":\"LanceTable,NoneType,RemoteTable\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:db", "target": "{\"name\":\"db\",\"type_\":\"LanceDBConnection,RemoteDBConnection\",\"default_\":\"\",\"description\":\"db : LanceDBConnection, RemoteDBConnection\",\"compositions\":[\"LanceDBConnection\",\"RemoteDBConnection\"]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:table", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:table", "target": "{\"name\":\"table\",\"type_\":\"LanceTable,NoneType,RemoteTable\",\"default_\":\"\",\"description\":\"table : LanceTable, NoneType, RemoteTable\",\"compositions\":[\"LanceTable\",\"RemoteTable\"]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadata\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadata\",\"compositions\":[]},{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(data, metadata, _id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"_id\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(_id)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:drop", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:drop", "target": "{\"name\":\"drop\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"drop(name)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_results\",\"compositions\":[]},{\"name\":\"metric\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metric\",\"compositions\":[]},{\"name\":\"nprobes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"nprobes\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query, n_results, metric, nprobes)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/lancedb_store.py:LanceStore:write", "target": "{\"name\":\"write\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"metadatas\",\"type_\":\"\",\"default_\":\"\",\"description\":\"metadatas\",\"compositions\":[]},{\"name\":\"ids\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ids\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write(data, metadatas, ids)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"name\":\"LocalStore\",\"package\":\"metagpt/document_store/base_store.py:LocalStore\",\"attributes\":{\"cache_dir\":{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]},\"fname\":{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]},\"raw_data_path\":{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:cache_dir"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:fname"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:raw_data_path"}, {"predicate": "has_class_property", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:store"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:__init__"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_load"}, {"predicate": "has_class_method", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "metagpt/document_store/base_store.py:LocalStore:_write"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"lineno\":28,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LocalStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/base_store.py:LocalStore", "target": "{\"name\":\"LocalStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cache_dir\",\"visibility\":\"+\",\"value_type\":\"Optional[Path]\",\"default_value\":\"\"},{\"name\":\"fname\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"raw_data_path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:cache_dir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:cache_dir", "target": "{\"name\":\"cache_dir\",\"type_\":\"Optional[Path]\",\"default_\":\"\",\"description\":\"cache_dir : Optional[Path]\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:fname", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:fname", "target": "{\"name\":\"fname\",\"type_\":\"\",\"default_\":\"\",\"description\":\"fname\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:raw_data_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:raw_data_path", "target": "{\"name\":\"raw_data_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"raw_data_path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/base_store.py:LocalStore:store", "target": "{\"name\":\"store\",\"type_\":\"\",\"default_\":\"\",\"description\":\"store\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/longterm_memory.py", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"name\":\"LongTermMemory\",\"package\":\"metagpt/memory/longterm_memory.py:LongTermMemory\",\"attributes\":{\"memory_storage\":{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_from_recover\":{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}},\"compositions\":[\"RoleContext\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover"}, {"predicate": "has_class_property", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:clear"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:delete"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news"}, {"predicate": "has_class_method", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/memory/memory.py:Memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"lineno\":18,\"end_lineno\":77,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"LongTermMemory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "{\"name\":\"LongTermMemory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"memory_storage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_from_recover\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"Optional[RoleContext]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/longterm_memory.py:LongTermMemory", "target": "?:RoleContext"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage", "target": "{\"name\":\"memory_storage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory_storage\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:msg_from_recover", "target": "{\"name\":\"msg_from_recover\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"msg_from_recover : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:rc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:rc", "target": "{\"name\":\"rc\",\"type_\":\"Optional[RoleContext]\",\"default_\":\"\",\"description\":\"rc : Optional[RoleContext]\",\"compositions\":[\"RoleContext\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:clear", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:clear", "target": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:find_news", "target": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/longterm_memory.py:LongTermMemory:recover_memory", "target": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]},{\"name\":\"rc\",\"type_\":\"RoleContext\",\"default_\":\"\",\"description\":\"rc: RoleContext\",\"compositions\":[\"RoleContext\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"recover_memory(role_id: str, rc: RoleContext)\",\"aggregations\":[\"RoleContext\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"name\":\"MCTSSolver\",\"package\":\"metagpt/strategy/tot.py:MCTSSolver\",\"attributes\":{},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:MCTSSolver:solve"}, {"predicate": "isGeneralizeOf", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"lineno\":230,\"end_lineno\":232,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MCTSSolver\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:MCTSSolver", "target": "{\"name\":\"MCTSSolver\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:MCTSSolver:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:MCTSSolver:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"name\":\"MeilisearchEngine\",\"package\":\"metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}},\"methods\":{\"add_documents\":{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]},\"set_index\":{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}},\"compositions\":[\"Client\"],\"aggregations\":[\"DataSource\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "?:Client"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "?:DataSource"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"lineno\":23,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MeilisearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine", "target": "{\"name\":\"MeilisearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"Client\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:client", "target": "{\"name\":\"client\",\"type_\":\"Client\",\"default_\":\"\",\"description\":\"client : Client\",\"compositions\":[\"Client\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:add_documents", "target": "{\"name\":\"add_documents\",\"args\":[{\"name\":\"data_source\",\"type_\":\"DataSource\",\"default_\":\"\",\"description\":\"data_source: DataSource\",\"compositions\":[\"DataSource\"]},{\"name\":\"documents\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"documents: List[dict]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_documents(data_source: DataSource, documents: List[dict])\",\"aggregations\":[\"DataSource\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(query)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:set_index", "target": "{\"name\":\"set_index\",\"args\":[{\"name\":\"index\",\"type_\":\"\",\"default_\":\"\",\"description\":\"index\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_index(index)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/memory.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/memory.py", "target": "metagpt/memory/memory.py:Memory"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory", "target": "{\"name\":\"Memory\",\"package\":\"metagpt/memory/memory.py:Memory\",\"attributes\":{\"ignore_id\":{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]},\"index\":{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]},\"storage\":{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]},\"add_batch\":{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]},\"clear\":{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]},\"count\":{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]},\"delete\":{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]},\"delete_newest\":{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]},\"find_news\":{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_action\":{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_actions\":{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_content\":{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]},\"get_by_role\":{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]},\"try_remember\":{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"],\"aggregations\":[\"Iterable\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:ignore_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:index"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:storage"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:add_batch"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:clear"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:count"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:delete"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:delete_newest"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:find_news"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_action"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_actions"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_content"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:get_by_role"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/memory/memory.py:Memory:try_remember"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:DefaultDict"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:Iterable"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/roles/role.py:RoleContext:memory"}, {"predicate": "is_composite_of", "source": "metagpt/memory/memory.py:Memory", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:Memory", "target": "{\"lineno\":19,\"end_lineno\":106,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Memory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/memory.py:Memory", "target": "{\"name\":\"Memory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ignore_id\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"index\",\"visibility\":\"+\",\"value_type\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_value\":\"\"},{\"name\":\"storage\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Message]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory.py:Memory", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:ignore_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:ignore_id", "target": "{\"name\":\"ignore_id\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"ignore_id : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:index", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:index", "target": "{\"name\":\"index\",\"type_\":\"DefaultDict[str,list[SerializeAsAny[Message]]]\",\"default_\":\"\",\"description\":\"index : DefaultDict[str, list[SerializeAsAny[Message]]]\",\"compositions\":[\"DefaultDict\",\"Message\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:storage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:storage", "target": "{\"name\":\"storage\",\"type_\":\"list[SerializeAsAny[Message]]\",\"default_\":\"\",\"description\":\"storage : list[SerializeAsAny[Message]]\",\"compositions\":[\"Message\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:add_batch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:add_batch", "target": "{\"name\":\"add_batch\",\"args\":[{\"name\":\"messages\",\"type_\":\"Iterable[Message]\",\"default_\":\"\",\"description\":\"messages: Iterable[Message]\",\"compositions\":[\"Iterable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_batch(messages: Iterable[Message])\",\"aggregations\":[\"Message\",\"Iterable\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:clear", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:clear", "target": "{\"name\":\"clear\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clear()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:count", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:count", "target": "{\"name\":\"count\",\"args\":[],\"return_args\":{\"type_\":\"int\",\"description\":\"int\",\"compositions\":[]},\"description\":\"count(): int\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:delete", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:delete", "target": "{\"name\":\"delete\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete(message: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:delete_newest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:delete_newest", "target": "{\"name\":\"delete_newest\",\"args\":[],\"return_args\":{\"type_\":\"'Message'\",\"description\":\"'Message'\",\"compositions\":[\"Message\"]},\"description\":\"delete_newest(): 'Message'\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:find_news", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:find_news", "target": "{\"name\":\"find_news\",\"args\":[{\"name\":\"observed\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"observed: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"find_news(observed: list[Message], k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_action", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_action", "target": "{\"name\":\"get_by_action\",\"args\":[{\"name\":\"action\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_action(action): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_actions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_actions", "target": "{\"name\":\"get_by_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"Set\",\"default_\":\"\",\"description\":\"actions: Set\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_actions(actions: Set): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_content", "target": "{\"name\":\"get_by_content\",\"args\":[{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_content(content: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:get_by_role", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:get_by_role", "target": "{\"name\":\"get_by_role\",\"args\":[{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_by_role(role: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory.py:Memory:try_remember", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory.py:Memory:try_remember", "target": "{\"name\":\"try_remember\",\"args\":[{\"name\":\"keyword\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"keyword: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"try_remember(keyword: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/memory/memory_storage.py", "target": "metagpt/memory/memory_storage.py:MemoryStorage"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"name\":\"MemoryStorage\",\"package\":\"metagpt/memory/memory_storage.py:MemoryStorage\",\"attributes\":{\"embedding\":{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]},\"is_initialized\":{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]},\"mem_ttl\":{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]},\"role_mem_path\":{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]},\"store\":{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]},\"threshold\":{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]},\"clean\":{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]},\"persist\":{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]},\"recover_memory\":{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]},\"search_dissimilar\":{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"OpenAIEmbeddings\",\"Path\",\"FAISS\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:embedding"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:role_id"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:store"}, {"predicate": "has_class_property", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:threshold"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:add"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:clean"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:persist"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:OpenAIEmbeddings"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:Path"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:FAISS"}, {"predicate": "isAggregateOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/document_store/faiss_store.py:FaissStore"}, {"predicate": "isCompositeOf", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "isCompositeOn", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:memory_storage"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:__init__"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:_load"}, {"predicate": "has_class_method", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"lineno\":21,\"end_lineno\":117,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MemoryStorage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/memory/memory_storage.py:MemoryStorage", "target": "{\"name\":\"MemoryStorage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"embedding\",\"visibility\":\"+\",\"value_type\":\"OpenAIEmbeddings\",\"default_value\":\"\"},{\"name\":\"is_initialized\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"mem_ttl\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"role_mem_path\",\"visibility\":\"+\",\"value_type\":\"Optional[str],Path\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"NoneType,Optional[FAISS]\",\"default_value\":\"\"},{\"name\":\"threshold\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:embedding", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:embedding", "target": "{\"name\":\"embedding\",\"type_\":\"OpenAIEmbeddings\",\"default_\":\"\",\"description\":\"embedding : OpenAIEmbeddings\",\"compositions\":[\"OpenAIEmbeddings\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "{\"name\":\"is_initialized\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_initialized\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:is_initialized", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:mem_ttl", "target": "{\"name\":\"mem_ttl\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"mem_ttl : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_id", "target": "{\"name\":\"role_id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"role_id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:role_mem_path", "target": "{\"name\":\"role_mem_path\",\"type_\":\"Optional[str],Path\",\"default_\":\"\",\"description\":\"role_mem_path : Optional[str], Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:store", "target": "{\"name\":\"store\",\"type_\":\"NoneType,Optional[FAISS]\",\"default_\":\"\",\"description\":\"store : NoneType, Optional[FAISS]\",\"compositions\":[\"FAISS\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:threshold", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:threshold", "target": "{\"name\":\"threshold\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"threshold : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"add(message: Message): bool\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:clean", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:clean", "target": "{\"name\":\"clean\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"clean()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:persist", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:persist", "target": "{\"name\":\"persist\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"persist()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:recover_memory", "target": "{\"name\":\"recover_memory\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"recover_memory(role_id: str): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/memory/memory_storage.py:MemoryStorage:search_dissimilar", "target": "{\"name\":\"search_dissimilar\",\"args\":[{\"name\":\"message\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"message: Message\",\"compositions\":[\"Message\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"search_dissimilar(message: Message, k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/mermaid_config.py", "target": "metagpt/configs/mermaid_config.py:MermaidConfig"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"name\":\"MermaidConfig\",\"package\":\"metagpt/configs/mermaid_config.py:MermaidConfig\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]},\"puppeteer_config\":{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:engine"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:path"}, {"predicate": "has_class_property", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "metagpt/config2.py:Config:mermaid"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MermaidConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/mermaid_config.py:MermaidConfig", "target": "{\"name\":\"MermaidConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"puppeteer_config\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:engine", "target": "{\"name\":\"engine\",\"type_\":\"Literal['nodejs','ink','playwright','pyppeteer']\",\"default_\":\"\",\"description\":\"engine : Literal['nodejs', 'ink', 'playwright', 'pyppeteer']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:path", "target": "{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/mermaid_config.py:MermaidConfig:puppeteer_config", "target": "{\"name\":\"puppeteer_config\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"puppeteer_config : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message", "target": "{\"name\":\"Message\",\"package\":\"metagpt/schema.py:Message\",\"attributes\":{\"cause_by\":{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]},\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"id\":{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]},\"instruct_content\":{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]},\"send_to\":{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]},\"sent_from\":{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}},\"methods\":{\"check_cause_by\":{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]},\"check_id\":{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]},\"check_instruct_content\":{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]},\"check_send_to\":{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]},\"check_sent_from\":{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]},\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]},\"ser_instruct_content\":{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]},\"to_dict\":{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}},\"compositions\":[\"BaseModel\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:cause_by"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:id"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:instruct_content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:role"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:send_to"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:sent_from"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_cause_by"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_id"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_send_to"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:check_sent_from"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:dump"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:load"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:ser_instruct_content"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:to_dict"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "?:BaseModel"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:rsp"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/talk_action.py:TalkAction"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:Message", "target": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__init__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__setattr__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__str__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:Message", "target": "metagpt/schema.py:Message:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:Message", "target": "{\"lineno\":189,\"end_lineno\":304,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Message\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:Message", "target": "{\"name\":\"Message\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cause_by\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"instruct_content\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseModel]\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"send_to\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"sent_from\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:Message", "target": "{\"description\":\"This source code defines a Message class that represents a message with various attributes and methods for validation and serialization. It also includes methods for converting the message object to a dictionary and JSON string, as well as loading a message from a JSON string.\",\"use_cases\":[{\"description\":\"Create a new message with the given content, instruct content, role, cause by, sent from, and send to.\",\"inputs\":[\"content\",\"instruct_content\",\"role\",\"cause_by\",\"sent_from\",\"send_to\"],\"outputs\":[\"message_id\"],\"actors\":[\"User\"],\"steps\":[\"Validate and set the message ID if not provided\",\"Validate and set the instruct content if provided\",\"Validate and set the cause by if provided\",\"Validate and set the sent from if provided\",\"Validate and set the send to if provided\",\"Create a new message object with the provided data\",\"Return the message ID\"],\"reason\":\"When a user wants to create a new message with specific attributes.\"},{\"description\":\"Convert the message object to a dictionary containing role and content.\",\"inputs\":[],\"outputs\":[\"message_dict\"],\"actors\":[\"User\"],\"steps\":[\"Create a dictionary with role and content attributes of the message object\",\"Return the created dictionary\"],\"reason\":\"When a user needs to convert a message object to a dictionary.\"},{\"description\":\"Convert the message object to a JSON string.\",\"inputs\":[],\"outputs\":[\"json_string\"],\"actors\":[\"User\"],\"steps\":[\"Convert the message object to a JSON string\",\"Return the JSON string\"],\"reason\":\"When a user needs to convert a message object to a JSON string.\"},{\"description\":\"Load a message object from a JSON string.\",\"inputs\":[\"json_string\"],\"outputs\":[\"message_object\"],\"actors\":[\"User\"],\"steps\":[\"Parse the JSON string to a dictionary\",\"Create a message object from the dictionary\",\"Return the created message object\"],\"reason\":\"When a user needs to load a message object from a JSON string.\"}],\"relationship\":[\"Create a new message use case is related to Convert the message object to a dictionary use case and Convert the message object to a JSON string use case.\",\"Load a message object from a JSON string use case is independent of other use cases.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:Message", "target": "\nsequenceDiagram\n participant User\n participant Message\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n"}, {"predicate": "is", "source": "metagpt/schema.py:Message:cause_by", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:cause_by", "target": "{\"name\":\"cause_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cause_by : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:id", "target": "{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:instruct_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:instruct_content", "target": "{\"name\":\"instruct_content\",\"type_\":\"Optional[BaseModel]\",\"default_\":\"\",\"description\":\"instruct_content : Optional[BaseModel]\",\"compositions\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:role", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:role", "target": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:send_to", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:send_to", "target": "{\"name\":\"send_to\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"send_to : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:sent_from", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:sent_from", "target": "{\"name\":\"sent_from\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"sent_from : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_cause_by", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_cause_by", "target": "{\"name\":\"check_cause_by\",\"args\":[{\"name\":\"cause_by\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"cause_by: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_cause_by(cause_by: Any): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_id", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_id", "target": "{\"name\":\"check_id\",\"args\":[{\"name\":\"id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_id(id: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_instruct_content", "target": "{\"name\":\"check_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"ic: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"BaseModel\",\"description\":\"BaseModel\",\"compositions\":[\"BaseModel\"]},\"description\":\"check_instruct_content(ic: Any): BaseModel\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_send_to", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_send_to", "target": "{\"name\":\"check_send_to\",\"args\":[{\"name\":\"send_to\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"send_to: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"set\",\"description\":\"set\",\"compositions\":[]},\"description\":\"check_send_to(send_to: Any): set\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:check_sent_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:check_sent_from", "target": "{\"name\":\"check_sent_from\",\"args\":[{\"name\":\"sent_from\",\"type_\":\"Any\",\"default_\":\"\",\"description\":\"sent_from: Any\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"check_sent_from(sent_from: Any): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:dump", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:dump", "target": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"val\",\"type_\":\"\",\"default_\":\"\",\"description\":\"val\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load(val)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:ser_instruct_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:ser_instruct_content", "target": "{\"name\":\"ser_instruct_content\",\"args\":[{\"name\":\"ic\",\"type_\":\"BaseModel\",\"default_\":\"\",\"description\":\"ic: BaseModel\",\"compositions\":[\"BaseModel\"]}],\"return_args\":{\"type_\":\"Union[dict,None]\",\"description\":\"Union[dict, None]\",\"compositions\":[]},\"description\":\"ser_instruct_content(ic: BaseModel): Union[dict, None]\",\"aggregations\":[\"BaseModel\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:Message:to_dict", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:Message:to_dict", "target": "{\"name\":\"to_dict\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"to_dict(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue", "target": "{\"name\":\"MessageQueue\",\"package\":\"metagpt/schema.py:MessageQueue\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"dump\":{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]},\"empty\":{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]},\"pop\":{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"pop_all\":{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]},\"push\":{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"MessageQueue\",\"Message\\\\\",\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:model_config"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:dump"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:empty"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:load"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:pop"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:pop_all"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/schema.py:MessageQueue:push"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:MessageQueue"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:Message\\"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:MessageQueue", "target": "?:Message"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:MessageQueue", "target": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:MessageQueue", "target": "{\"lineno\":334,\"end_lineno\":403,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageQueue\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:MessageQueue", "target": "{\"name\":\"MessageQueue\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:dump", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:dump", "target": "{\"name\":\"dump\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"dump(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:empty", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:empty", "target": "{\"name\":\"empty\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"empty()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"'MessageQueue'\",\"description\":\"'MessageQueue'\",\"compositions\":[\"MessageQueue\"]},\"description\":\"load(data): 'MessageQueue'\",\"aggregations\":[\"MessageQueue\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:pop", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:pop", "target": "{\"name\":\"pop\",\"args\":[],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"pop(): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:pop_all", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:pop_all", "target": "{\"name\":\"pop_all\",\"args\":[],\"return_args\":{\"type_\":\"List[Message]\",\"description\":\"List[Message]\",\"compositions\":[\"Message\"]},\"description\":\"pop_all(): List[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:MessageQueue:push", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:MessageQueue:push", "target": "{\"name\":\"push\",\"args\":[{\"name\":\"msg\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"msg: Message\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"push(msg: Message)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:MessageType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"name\":\"MessageType\",\"package\":\"metagpt/roles/assistant.py:MessageType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/assistant.py:MessageType", "target": "metagpt/roles/assistant.py:MessageType:name"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"lineno\":32,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MessageType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/assistant.py:MessageType", "target": "{\"name\":\"MessageType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:MessageType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/assistant.py:MessageType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/metagpt_api.py", "target": "metagpt/provider/metagpt_api.py:MetaGPTLLM"}, {"predicate": "is", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"name\":\"MetaGPTLLM\",\"package\":\"metagpt/provider/metagpt_api.py:MetaGPTLLM\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"lineno\":14,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/metagpt_api.py:MetaGPTLLM", "target": "{\"name\":\"MetaGPTLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"name\":\"MetaGPTText2Image\",\"package\":\"metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image\",\"attributes\":{\"model_url\":{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}},\"methods\":{\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url"}, {"predicate": "has_class_method", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image"}, {"predicate": "has_class_method", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"lineno\":19,\"end_lineno\":81,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MetaGPTText2Image\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image", "target": "{\"name\":\"MetaGPTText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:model_url", "target": "{\"name\":\"model_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:text_2_image", "target": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:MethodSelect"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:Strategy"}, {"predicate": "has_class", "source": "metagpt/strategy/tot_schema.py", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"name\":\"MethodSelect\",\"package\":\"metagpt/strategy/tot_schema.py:MethodSelect\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "metagpt/strategy/tot_schema.py:MethodSelect:name"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"MethodSelect\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:MethodSelect", "target": "{\"name\":\"MethodSelect\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:MethodSelect:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:MethodSelect:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/moderation.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/moderation.py", "target": "metagpt/tools/moderation.py:Moderation"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"name\":\"Moderation\",\"package\":\"metagpt/tools/moderation.py:Moderation\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"amoderation_with_categories\":{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]},\"handle_moderation_results\":{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:llm"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:amoderation"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:handle_moderation_results"}, {"predicate": "has_class_method", "source": "metagpt/tools/moderation.py:Moderation", "target": "metagpt/tools/moderation.py:Moderation:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"lineno\":13,\"end_lineno\":40,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Moderation\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/moderation.py:Moderation", "target": "{\"name\":\"Moderation\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:amoderation", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:amoderation", "target": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:amoderation_with_categories", "target": "{\"name\":\"amoderation_with_categories\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation_with_categories(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:handle_moderation_results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/moderation.py:Moderation:handle_moderation_results", "target": "{\"name\":\"handle_moderation_results\",\"args\":[{\"name\":\"results\",\"type_\":\"\",\"default_\":\"\",\"description\":\"results\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"handle_moderation_results(results)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"name\":\"NoMoneyException\",\"package\":\"metagpt/utils/common.py:NoMoneyException\",\"attributes\":{\"amount\":{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:amount"}, {"predicate": "has_class_property", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:message"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:NoMoneyException", "target": "metagpt/utils/common.py:NoMoneyException:__str__"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"lineno\":307,\"end_lineno\":316,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"NoMoneyException\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"name\":\"NoMoneyException\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"amount\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/common.py:NoMoneyException", "target": "{\"description\":\"The source code defines a custom exception class called NoMoneyException, which is raised when an operation cannot be completed due to insufficient funds. The exception includes the amount required and a message indicating the insufficient funds.\",\"use_cases\":[],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/common.py:NoMoneyException", "target": "\nsequenceDiagram\n participant User\n participant SourceCode\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:amount", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException:amount", "target": "{\"name\":\"amount\",\"type_\":\"\",\"default_\":\"\",\"description\":\"amount\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:NoMoneyException:message", "target": "{\"name\":\"message\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"message : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"name\":\"OCRResults\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:OCRResults\",\"attributes\":{\"ocr_result\":{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"lineno\":27,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OCRResults\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults", "target": "{\"name\":\"OCRResults\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"ocr_result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:OCRResults:ocr_result", "target": "{\"name\":\"ocr_result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ocr_result : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/ollama_api.py", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"name\":\"OllamaLLM\",\"package\":\"metagpt/provider/ollama_api.py:OllamaLLM\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"http_method\":{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]},\"suffix_url\":{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]},\"get_usage\":{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:client"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:http_method"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url"}, {"predicate": "has_class_property", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"lineno\":27,\"end_lineno\":126,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OllamaLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/ollama_api.py:OllamaLLM", "target": "{\"name\":\"OllamaLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"http_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"suffix_url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:client", "target": "{\"name\":\"client\",\"type_\":\"\",\"default_\":\"\",\"description\":\"client\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:http_method", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:http_method", "target": "{\"name\":\"http_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"http_method : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:suffix_url", "target": "{\"name\":\"suffix_url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"suffix_url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(resp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/ollama_api.py:OllamaLLM:get_usage", "target": "{\"name\":\"get_usage\",\"args\":[{\"name\":\"resp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"resp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_usage(resp: dict): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/openai_api.py", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_function", "source": "metagpt/provider/openai_api.py", "target": "metagpt/provider/openai_api.py:log_and_reraise"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"name\":\"OpenAILLM\",\"package\":\"metagpt/provider/openai_api.py:OpenAILLM\",\"attributes\":{\"aclient\":{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]},\"auto_max_tokens\":{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]},\"model\":{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}},\"methods\":{\"aask_code\":{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]]): dict\",\"aggregations\":[\"Message\"]},\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"amoderation\":{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]},\"aspeech_to_text\":{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]},\"atext_to_speech\":{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]},\"get_choice_function_arguments\":{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]},\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[\"AsyncOpenAI\",\"CostManager\"],\"aggregations\":[\"Message\",\"ChatCompletion\",\"Costs\"]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aclient"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:model"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aask_code"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:amoderation"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:get_costs"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:AsyncOpenAI"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:ChatCompletion"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "is_composite_of", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_init_model"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_init_client"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_process_message"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"lineno\":52,\"end_lineno\":245,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "{\"name\":\"OpenAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aclient\",\"visibility\":\"+\",\"value_type\":\"AsyncOpenAI\",\"default_value\":\"\"},{\"name\":\"auto_max_tokens\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"Optional[CostManager]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/provider/openai_api.py:OpenAILLM", "target": "?:CostManager"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aclient", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aclient", "target": "{\"name\":\"aclient\",\"type_\":\"AsyncOpenAI\",\"default_\":\"\",\"description\":\"aclient : AsyncOpenAI\",\"compositions\":[\"AsyncOpenAI\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:auto_max_tokens", "target": "{\"name\":\"auto_max_tokens\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"auto_max_tokens : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"Optional[CostManager]\",\"default_\":\"\",\"description\":\"cost_manager : Optional[CostManager]\",\"compositions\":[\"CostManager\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aask_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aask_code", "target": "{\"name\":\"aask_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"Union[str,Message,list[dict]]\",\"default_\":\"\",\"description\":\"messages: Union[str, Message, list[dict]]\",\"compositions\":[\"Message\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"aask_code(messages: Union[str, Message, list[dict]]): dict\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ChatCompletion\",\"description\":\"ChatCompletion\",\"compositions\":[\"ChatCompletion\"]},\"description\":\"acompletion(messages: list[dict], timeout): ChatCompletion\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:amoderation", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:amoderation", "target": "{\"name\":\"amoderation\",\"args\":[{\"name\":\"content\",\"type_\":\"Union[str,list[str]]\",\"default_\":\"\",\"description\":\"content: Union[str, list[str]]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"amoderation(content: Union[str, list[str]])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:aspeech_to_text", "target": "{\"name\":\"aspeech_to_text\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"aspeech_to_text()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:atext_to_speech", "target": "{\"name\":\"atext_to_speech\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"atext_to_speech()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_function_arguments", "target": "{\"name\":\"get_choice_function_arguments\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_choice_function_arguments(rsp: ChatCompletion): dict\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"ChatCompletion\",\"default_\":\"\",\"description\":\"rsp: ChatCompletion\",\"compositions\":[\"ChatCompletion\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: ChatCompletion): str\",\"aggregations\":[\"ChatCompletion\"]}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/openai_api.py:OpenAILLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"name\":\"OpenAIResponse\",\"package\":\"metagpt/provider/general_api_base.py:OpenAIResponse\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},\"operation_location\":{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]},\"organization\":{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]},\"request_id\":{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]},\"response_ms\":{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]},\"retry_after\":{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:data"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:organization"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after"}, {"predicate": "has_class_method", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"lineno\":123,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIResponse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/general_api_base.py:OpenAIResponse", "target": "{\"name\":\"OpenAIResponse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"operation_location\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"organization\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"request_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"response_ms\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"retry_after\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:data", "target": "{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "{\"name\":\"operation_location\",\"type_\":\"\",\"default_\":\"\",\"description\":\"operation_location\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:operation_location", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "{\"name\":\"organization\",\"type_\":\"\",\"default_\":\"\",\"description\":\"organization\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:organization", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "{\"name\":\"request_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"request_id\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:request_id", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "{\"name\":\"response_ms\",\"type_\":\"\",\"default_\":\"\",\"description\":\"response_ms\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:response_ms", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "{\"name\":\"retry_after\",\"type_\":\"\",\"default_\":\"\",\"description\":\"retry_after\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:retry_after", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"name\":\"OpenAIText2Embedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"proxy\":{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}},\"methods\":{\"text_2_embedding\":{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"lineno\":44,\"end_lineno\":71,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Embedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding", "target": "{\"name\":\"OpenAIText2Embedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"proxy\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:proxy", "target": "{\"name\":\"proxy\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"proxy : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:text_2_embedding", "target": "{\"name\":\"text_2_embedding\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_embedding(text, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/openai_text_to_image.py", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image"}, {"predicate": "has_function", "source": "metagpt/tools/openai_text_to_image.py", "target": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"name\":\"OpenAIText2Image\",\"package\":\"metagpt/tools/openai_text_to_image.py:OpenAIText2Image\",\"attributes\":{\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}},\"methods\":{\"get_image_data\":{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]},\"text_2_image\":{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image"}, {"predicate": "has_class_method", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"lineno\":17,\"end_lineno\":53,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenAIText2Image\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image", "target": "{\"name\":\"OpenAIText2Image\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:get_image_data", "target": "{\"name\":\"get_image_data\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_image_data(url)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:text_2_image", "target": "{\"name\":\"text_2_image\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"size_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"size_type\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"text_2_image(text, size_type)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/open_llm_api.py", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"name\":\"OpenLLM\",\"package\":\"metagpt/provider/open_llm_api.py:OpenLLM\",\"attributes\":{},\"methods\":{\"get_costs\":{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}},\"compositions\":[],\"aggregations\":[\"Costs\"]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "?:Costs"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/openai_api.py:OpenAILLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage"}, {"predicate": "has_class_method", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"lineno\":16,\"end_lineno\":47,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OpenLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/open_llm_api.py:OpenLLM", "target": "{\"name\":\"OpenLLM\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/open_llm_api.py:OpenLLM:get_costs", "target": "{\"name\":\"get_costs\",\"args\":[],\"return_args\":{\"type_\":\"Costs\",\"description\":\"Costs\",\"compositions\":[\"Costs\"]},\"description\":\"get_costs(): Costs\",\"aggregations\":[\"Costs\"]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"name\":\"OutputParser\",\"package\":\"metagpt/utils/common.py:OutputParser\",\"attributes\":{},\"methods\":{\"extract_content\":{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]},\"extract_struct\":{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]},\"parse_blocks\":{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]},\"parse_code\":{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]},\"parse_data\":{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]},\"parse_data_with_mapping\":{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]},\"parse_file_list\":{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]},\"parse_python_code\":{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]},\"parse_str\":{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"type\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:extract_content"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:extract_struct"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_blocks"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_data"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_file_list"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_python_code"}, {"predicate": "has_class_method", "source": "metagpt/utils/common.py:OutputParser", "target": "metagpt/utils/common.py:OutputParser:parse_str"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/common.py:OutputParser", "target": "?:type"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"lineno\":57,\"end_lineno\":231,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"OutputParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/common.py:OutputParser", "target": "{\"name\":\"OutputParser\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:extract_content", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:extract_content", "target": "{\"name\":\"extract_content\",\"args\":[{\"name\":\"text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"text\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tag\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"extract_content(text, tag)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:extract_struct", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:extract_struct", "target": "{\"name\":\"extract_struct\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"data_type\",\"type_\":\"Union[type(list),type(dict)]\",\"default_\":\"\",\"description\":\"data_type: Union[type(list), type(dict)]\",\"compositions\":[\"type\"]}],\"return_args\":{\"type_\":\"Union[list,dict]\",\"description\":\"Union[list, dict]\",\"compositions\":[]},\"description\":\"extract_struct(text: str, data_type: Union[type(list), type(dict)]): Union[list, dict]\",\"aggregations\":[\"type\"]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_blocks", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_blocks", "target": "{\"name\":\"parse_blocks\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_blocks(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_code", "target": "{\"name\":\"parse_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"lang: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_code(text: str, lang: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_data", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_data", "target": "{\"name\":\"parse_data\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data(data)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_data_with_mapping", "target": "{\"name\":\"parse_data_with_mapping\",\"args\":[{\"name\":\"data\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data\",\"compositions\":[]},{\"name\":\"mapping\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mapping\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_data_with_mapping(data, mapping)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_file_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_file_list", "target": "{\"name\":\"parse_file_list\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"parse_file_list(text: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_python_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_python_code", "target": "{\"name\":\"parse_python_code\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"parse_python_code(text: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/common.py:OutputParser:parse_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/common.py:OutputParser:parse_str", "target": "{\"name\":\"parse_str\",\"args\":[{\"name\":\"text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"text: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"parse_str(text: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"name\":\"Parameter\",\"package\":\"metagpt/learn/skill_loader.py:Parameter\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "metagpt/learn/skill_loader.py:Parameter:description"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "metagpt/learn/skill_loader.py:Parameter:type"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Parameter\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Parameter", "target": "{\"name\":\"Parameter\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter:description", "target": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Parameter:type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Parameter:type", "target": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_playwright.py", "target": "metagpt/tools/web_browser_engine_playwright.py:_log_stream"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"name\":\"PlaywrightWrapper\",\"package\":\"metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit'] \\\\| None\",\"compositions\":[\"Literal\\\\\"]},\"launch_kwargs\":{\"name\":\"launch_kwargs\",\"type_\":\"dict\\\\|None\",\"default_\":\"\",\"description\":\"launch_kwargs : dict \\\\| None\",\"compositions\":[\"dict\\\\\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}},\"compositions\":[\"Literal\\\\\",\"dict\\\\\"],\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:Literal\\"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:dict\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:WebPage\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "?:WebPage"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"lineno\":18,\"end_lineno\":95,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PlaywrightWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper", "target": "{\"name\":\"PlaywrightWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_value\":\"\"},{\"name\":\"launch_kwargs\",\"visibility\":\"+\",\"value_type\":\"dict\\\\|None\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:browser_type", "target": "{\"name\":\"browser_type\",\"type_\":\"Literal['chromium','firefox','webkit']\\\\|None\",\"default_\":\"\",\"description\":\"browser_type : Literal['chromium', 'firefox', 'webkit'] \\\\| None\",\"compositions\":[\"Literal\\\\\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:launch_kwargs", "target": "{\"name\":\"launch_kwargs\",\"type_\":\"dict\\\\|None\",\"default_\":\"\",\"description\":\"launch_kwargs : dict \\\\| None\",\"compositions\":[\"dict\\\\\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/prepare_documents.py", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"name\":\"PrepareDocuments\",\"package\":\"metagpt/actions/prepare_documents.py:PrepareDocuments\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:config"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"lineno\":21,\"end_lineno\":52,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareDocuments\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments", "target": "{\"name\":\"PrepareDocuments\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:config", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/prepare_interview.py", "target": "metagpt/actions/prepare_interview.py:PrepareInterview"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"name\":\"PrepareInterview\",\"package\":\"metagpt/actions/prepare_interview.py:PrepareInterview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/prepare_interview.py:PrepareInterview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/prepare_interview.py:PrepareInterview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PrepareInterview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/prepare_interview.py:PrepareInterview", "target": "{\"name\":\"PrepareInterview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/prepare_interview.py:PrepareInterview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/product_manager.py", "target": "metagpt/roles/product_manager.py:ProductManager"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"name\":\"ProductManager\",\"package\":\"metagpt/roles/product_manager.py:ProductManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"todo_action\":{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:todo_action"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "metagpt/roles/product_manager.py:ProductManager:_observe"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"lineno\":16,\"end_lineno\":51,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProductManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"name\":\"ProductManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"todo_action\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "{\"description\":\"The source code represents a Product Manager role responsible for product development and management. It includes attributes such as name, profile, goal, and constraints. The role has methods to decide what to do and observe the environment.\",\"use_cases\":[{\"description\":\"Decide what to do\",\"inputs\":[],\"outputs\":[],\"actors\":[\"Product Manager\"],\"steps\":[\"Check if the git repository exists and the configuration for git reinitialization is not set\",\"Set the state to 1 if the conditions are met\",\"If the conditions are not met, set the state to 0, set the git reinitialization configuration to false, and update the todo action to WritePRD\",\"Return a boolean indicating if there are any pending actions\"],\"reason\":\"When the system needs to decide the next action to take based on the current state and environment\"},{\"description\":\"Observe the environment\",\"inputs\":[],\"outputs\":[],\"actors\":[\"Product Manager\"],\"steps\":[\"Call the observe method of the superclass with ignore_memory set to True\"],\"reason\":\"When the system needs to observe the environment and update its internal state\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/product_manager.py:ProductManager", "target": "\nsequenceDiagram\n participant ProductManager\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:todo_action", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/product_manager.py:ProductManager:todo_action", "target": "{\"name\":\"todo_action\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"todo_action : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/project_manager.py", "target": "metagpt/roles/project_manager.py:ProjectManager"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"name\":\"ProjectManager\",\"package\":\"metagpt/roles/project_manager.py:ProjectManager\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:profile"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "metagpt/roles/project_manager.py:ProjectManager:__init__"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"name\":\"ProjectManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "{\"description\":\"The source code defines a Project Manager role with attributes such as name, profile, goal, and constraints. It also sets actions and watches for the Project Manager role.\",\"use_cases\":[{\"description\":\"Write Tasks\",\"inputs\":[\"task_list\",\"task_dependencies\"],\"outputs\":[\"task_breakdown\"],\"actors\":[\"Project Manager\"],\"steps\":[\"Receive task list and task dependencies\",\"Analyze task dependencies\",\"Generate task breakdown\"],\"reason\":\"When the Project Manager needs to break down tasks according to PRD/technical design and analyze task dependencies.\"},{\"description\":\"Write Design\",\"inputs\":[\"user_requirement\",\"technical_design\"],\"outputs\":[\"task_list\"],\"actors\":[\"Project Manager\"],\"steps\":[\"Receive user requirement and technical design\",\"Generate a task list\"],\"reason\":\"When the Project Manager needs to generate a task list based on user requirement and technical design.\"}],\"relationship\":[\"Write Tasks is required by Project Manager to break down tasks according to PRD/technical design and analyze task dependencies.\",\"Write Design is required by Project Manager to generate a task list based on user requirement and technical design.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/project_manager.py:ProjectManager", "target": "\nsequenceDiagram\n participant ProjectManager\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/project_manager.py:ProjectManager:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"name\":\"ProjectRepo\",\"package\":\"metagpt/utils/project_repo.py:ProjectRepo\",\"attributes\":{\"docs\":{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"requirement\":{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]},\"resources\":{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]},\"src_relative_path\":{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]},\"srcs\":{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]},\"test_outputs\":{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]},\"tests\":{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]},\"workdir\":{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}},\"methods\":{\"code_files_exists\":{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]},\"with_src_path\":{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:docs"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:git_repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:requirement"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:srcs"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:tests"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:workdir"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:ProjectRepo"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/context.py:Context"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/context.py:Context:repo"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "metagpt/utils/project_repo.py:ProjectRepo:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"lineno\":90,\"end_lineno\":142,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ProjectRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"name\":\"ProjectRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"requirement\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"resources\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"src_relative_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"srcs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"test_outputs\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tests\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"workdir\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "{\"description\":\"The source code defines a class 'ProjectRepo' which is a file repository for a project. It contains methods to interact with the project's files and resources.\",\"use_cases\":[{\"description\":\"Retrieve project requirements\",\"inputs\":[],\"outputs\":[\"requirement\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class retrieves the project requirements from the 'docs' attribute using the 'requirement' property.\"],\"reason\":\"When the system needs to access the project requirements.\"},{\"description\":\"Check if code files exist\",\"inputs\":[],\"outputs\":[\"code_files_exist\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class checks if the code files exist by accessing the 'srcs' attribute and its 'all_files' property.\"],\"reason\":\"When the system needs to verify the existence of code files.\"},{\"description\":\"Set source path for the project\",\"inputs\":[\"path\"],\"outputs\":[\"ProjectRepo\"],\"actors\":[\"ProjectRepo\"],\"steps\":[\"The 'ProjectRepo' class sets the source path for the project by using the 'with_src_path' method with the specified 'path'.\"],\"reason\":\"When the system needs to update the source path for the project.\"}],\"relationship\":[\"The 'Retrieve project requirements' use case is related to the 'Check if code files exist' use case as both involve accessing project files and resources.\",\"The 'Set source path for the project' use case is related to the 'Check if code files exist' use case as setting the source path may impact the existence of code files.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/project_repo.py:ProjectRepo", "target": "\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:docs", "target": "{\"name\":\"docs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"docs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:git_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "{\"name\":\"requirement\",\"type_\":\"\",\"default_\":\"\",\"description\":\"requirement\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:requirement", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:resources", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:resources", "target": "{\"name\":\"resources\",\"type_\":\"\",\"default_\":\"\",\"description\":\"resources\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "{\"name\":\"src_relative_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_relative_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:src_relative_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "{\"name\":\"srcs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"srcs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:srcs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:test_outputs", "target": "{\"name\":\"test_outputs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"test_outputs\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:tests", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:tests", "target": "{\"name\":\"tests\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tests\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "{\"name\":\"workdir\",\"type_\":\"\",\"default_\":\"\",\"description\":\"workdir\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:workdir", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:code_files_exists", "target": "{\"name\":\"code_files_exists\",\"args\":[],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"code_files_exists(): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ProjectRepo:with_src_path", "target": "{\"name\":\"with_src_path\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"ProjectRepo\",\"description\":\"ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},\"description\":\"with_src_path(path: str \\\\| Path): ProjectRepo\",\"aggregations\":[\"str\\\\\",\"ProjectRepo\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/prompt.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/prompt.py", "target": "metagpt/roles/prompt.py:PromptString"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PromptString", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"name\":\"PromptString\",\"package\":\"metagpt/roles/prompt.py:PromptString\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/prompt.py:PromptString", "target": "metagpt/roles/prompt.py:PromptString:name"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"lineno\":27,\"end_lineno\":46,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"PromptString\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/prompt.py:PromptString", "target": "{\"name\":\"PromptString\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PromptString:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/prompt.py:PromptString:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/qa_engineer.py", "target": "metagpt/roles/qa_engineer.py:QaEngineer"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"name\":\"QaEngineer\",\"package\":\"metagpt/roles/qa_engineer.py:QaEngineer\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"test_round\":{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]},\"test_round_allowed\":{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:test_round"}, {"predicate": "has_class_property", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "metagpt/roles/qa_engineer.py:QaEngineer:_observe"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"lineno\":27,\"end_lineno\":181,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QaEngineer\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/qa_engineer.py:QaEngineer", "target": "{\"name\":\"QaEngineer\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_round\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"test_round_allowed\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round", "target": "{\"name\":\"test_round\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/qa_engineer.py:QaEngineer:test_round_allowed", "target": "{\"name\":\"test_round_allowed\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"test_round_allowed : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/document_store/qdrant_store.py", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection"}, {"predicate": "has_class", "source": "metagpt/document_store/qdrant_store.py", "target": "metagpt/document_store/qdrant_store.py:QdrantStore"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"name\":\"QdrantConnection\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantConnection\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:host"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:port"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "metagpt/document_store/qdrant_store.py:QdrantConnection:url"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"lineno\":11,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantConnection\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection", "target": "{\"name\":\"QdrantConnection\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"Optional[int]\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:host", "target": "{\"name\":\"host\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"host : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:memory", "target": "{\"name\":\"memory\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"memory : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:port", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:port", "target": "{\"name\":\"port\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"port : Optional[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantConnection:url", "target": "{\"name\":\"url\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"url : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"name\":\"QdrantStore\",\"package\":\"metagpt/document_store/qdrant_store.py:QdrantStore\",\"attributes\":{\"client\":{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}},\"methods\":{\"add\":{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]},\"create_collection\":{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]},\"delete_collection\":{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]},\"has_collection\":{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]},\"search\":{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]},\"write\":{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}},\"compositions\":[\"QdrantClient\"],\"aggregations\":[\"PointStruct\",\"VectorParams\",\"Filter\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:client"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:add"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:search"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:write"}, {"predicate": "isCompositeOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:QdrantClient"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:PointStruct"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:VectorParams"}, {"predicate": "isAggregateOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "?:Filter"}, {"predicate": "isGeneralizeOf", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_method", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"lineno\":28,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"QdrantStore\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document_store/qdrant_store.py:QdrantStore", "target": "{\"name\":\"QdrantStore\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"client\",\"visibility\":\"+\",\"value_type\":\"QdrantClient\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:client", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:client", "target": "{\"name\":\"client\",\"type_\":\"QdrantClient\",\"default_\":\"\",\"description\":\"client : QdrantClient\",\"compositions\":[\"QdrantClient\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:add", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:add", "target": "{\"name\":\"add\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"points\",\"type_\":\"List[PointStruct]\",\"default_\":\"\",\"description\":\"points: List[PointStruct]\",\"compositions\":[\"PointStruct\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add(collection_name: str, points: List[PointStruct])\",\"aggregations\":[\"PointStruct\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:create_collection", "target": "{\"name\":\"create_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"vectors_config\",\"type_\":\"VectorParams\",\"default_\":\"\",\"description\":\"vectors_config: VectorParams\",\"compositions\":[\"VectorParams\"]},{\"name\":\"force_recreate\",\"type_\":\"\",\"default_\":\"\",\"description\":\"force_recreate\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_collection(collection_name: str, vectors_config: VectorParams, force_recreate)\",\"aggregations\":[\"VectorParams\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:delete_collection", "target": "{\"name\":\"delete_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"delete_collection(collection_name: str, timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:has_collection", "target": "{\"name\":\"has_collection\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"has_collection(collection_name: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:search", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:search", "target": "{\"name\":\"search\",\"args\":[{\"name\":\"collection_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"collection_name: str\",\"compositions\":[]},{\"name\":\"query\",\"type_\":\"List[float]\",\"default_\":\"\",\"description\":\"query: List[float]\",\"compositions\":[]},{\"name\":\"query_filter\",\"type_\":\"Filter\",\"default_\":\"\",\"description\":\"query_filter: Filter\",\"compositions\":[\"Filter\"]},{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]},{\"name\":\"return_vector\",\"type_\":\"\",\"default_\":\"\",\"description\":\"return_vector\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"search(collection_name: str, query: List[float], query_filter: Filter, k, return_vector)\",\"aggregations\":[\"Filter\"]}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:write", "target": "{\"name\":\"write\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write ()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_class_view.py", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"name\":\"RebuildClassView\",\"package\":\"metagpt/actions/rebuild_class_view.py:RebuildClassView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"lineno\":32,\"end_lineno\":156,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "{\"name\":\"RebuildClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView", "target": "?:GraphRepository"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase"}, {"predicate": "has_class", "source": "metagpt/actions/rebuild_sequence_view.py", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"name\":\"RebuildSequenceView\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}},\"methods\":{\"parse_participant\":{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}},\"compositions\":[\"GraphRepository\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/utils/graph_repository.py:GraphRepository"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant"}, {"predicate": "has_class_method", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"lineno\":53,\"end_lineno\":397,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RebuildSequenceView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "{\"name\":\"RebuildSequenceView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"Optional[GraphRepository]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView", "target": "?:GraphRepository"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"Optional[GraphRepository]\",\"default_\":\"\",\"description\":\"graph_db : Optional[GraphRepository]\",\"compositions\":[\"GraphRepository\"]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:parse_participant", "target": "{\"name\":\"parse_participant\",\"args\":[{\"name\":\"mermaid_sequence_diagram\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mermaid_sequence_diagram: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_participant(mermaid_sequence_diagram: str): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"\",\"default_\":\"\",\"description\":\"format\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages, format)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/redis.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/redis.py", "target": "metagpt/utils/redis.py:Redis"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis", "target": "{\"name\":\"Redis\",\"package\":\"metagpt/utils/redis.py:Redis\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}},\"methods\":{\"close\":{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}},\"compositions\":[\"RedisConfig\"],\"aggregations\":[\"bytes\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:config"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:close"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:get"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:set"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/redis.py:Redis", "target": "?:bytes\\"}, {"predicate": "is_composite_of", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:__init__"}, {"predicate": "has_class_method", "source": "metagpt/utils/redis.py:Redis", "target": "metagpt/utils/redis.py:Redis:_connect"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:Redis", "target": "{\"lineno\":19,\"end_lineno\":63,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Redis\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/redis.py:Redis", "target": "{\"name\":\"Redis\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"Optional[RedisConfig]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/redis.py:Redis", "target": "?:RedisConfig"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:config", "target": "{\"name\":\"config\",\"type_\":\"Optional[RedisConfig]\",\"default_\":\"\",\"description\":\"config : Optional[RedisConfig]\",\"compositions\":[\"RedisConfig\"]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:close", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:close", "target": "{\"name\":\"close\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"close()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\\\\|None\",\"description\":\"bytes \\\\| None\",\"compositions\":[\"bytes\\\\\"]},\"description\":\"get(key: str): bytes \\\\| None\",\"aggregations\":[\"bytes\\\\\"]}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/redis.py:Redis:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"key: str\",\"compositions\":[]},{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"timeout_sec\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout_sec: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(key: str, data: str, timeout_sec: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/redis_config.py", "target": "metagpt/configs/redis_config.py:RedisConfig"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"name\":\"RedisConfig\",\"package\":\"metagpt/configs/redis_config.py:RedisConfig\",\"attributes\":{\"db\":{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]},\"password\":{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]},\"port\":{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]},\"username\":{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}},\"methods\":{\"to_kwargs\":{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]},\"to_url\":{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:db"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:host"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:password"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:port"}, {"predicate": "has_class_property", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:username"}, {"predicate": "has_class_method", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/configs/redis_config.py:RedisConfig:to_url"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"lineno\":11,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RedisConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/redis_config.py:RedisConfig", "target": "{\"name\":\"RedisConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"db\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"password\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"port\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"username\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:db", "target": "{\"name\":\"db\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"db : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:host", "target": "{\"name\":\"host\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"host : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:password", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:password", "target": "{\"name\":\"password\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"password : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:port", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:port", "target": "{\"name\":\"port\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"port : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:username", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:username", "target": "{\"name\":\"username\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"username : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:to_kwargs", "target": "{\"name\":\"to_kwargs\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_kwargs()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/redis_config.py:RedisConfig:to_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/redis_config.py:RedisConfig:to_url", "target": "{\"name\":\"to_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:RepairType"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_json_format"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output"}, {"predicate": "has_function", "source": "metagpt/utils/repair_llm_raw_output.py", "target": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"name\":\"RepairType\",\"package\":\"metagpt/utils/repair_llm_raw_output.py:RepairType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "metagpt/utils/repair_llm_raw_output.py:RepairType:name"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"lineno\":17,\"end_lineno\":21,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepairType\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType", "target": "{\"name\":\"RepairType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/repair_llm_raw_output.py:RepairType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"name\":\"ReplyData\",\"package\":\"metagpt/roles/invoice_ocr_assistant.py:ReplyData\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"lineno\":35,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyData\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData", "target": "{\"name\":\"ReplyData\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/invoice_ocr_assistant.py:ReplyData:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"name\":\"ReplyQuestion\",\"package\":\"metagpt/actions/invoice_ocr.py:ReplyQuestion\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language"}, {"predicate": "has_class_method", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"lineno\":166,\"end_lineno\":189,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReplyQuestion\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion", "target": "{\"name\":\"ReplyQuestion\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/invoice_ocr.py:ReplyQuestion:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"ocr_result\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"ocr_result: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, ocr_result: list): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo", "target": "{\"name\":\"Repo\",\"package\":\"metagpt/document.py:Repo\",\"attributes\":{\"assets\":{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"codes\":{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"docs\":{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"eda\":{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]},\"from_path\":{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]},\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]},\"get_text_documents\":{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]},\"set\":{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]},\"to_path\":{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}},\"compositions\":[\"Document\",\"Path\"],\"aggregations\":[\"RepoMetadata\"]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:assets"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:codes"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:docs"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:eda"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:from_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:get"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:get_text_documents"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:set"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:to_path"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Repo", "target": "?:Document"}, {"predicate": "isCompositeOf", "source": "metagpt/document.py:Repo", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/document.py:Repo", "target": "?:RepoMetadata"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:_path"}, {"predicate": "has_class_method", "source": "metagpt/document.py:Repo", "target": "metagpt/document.py:Repo:_set"}, {"predicate": "has_page_info", "source": "metagpt/document.py:Repo", "target": "{\"lineno\":171,\"end_lineno\":235,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Repo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:Repo", "target": "{\"name\":\"Repo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"assets\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"codes\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"docs\",\"visibility\":\"+\",\"value_type\":\"dict[Path,Document]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:assets", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:assets", "target": "{\"name\":\"assets\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"assets : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:codes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:codes", "target": "{\"name\":\"codes\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"codes : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:docs", "target": "{\"name\":\"docs\",\"type_\":\"dict[Path,Document]\",\"default_\":\"\",\"description\":\"docs : dict[Path, Document]\",\"compositions\":[\"Document\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:eda", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:eda", "target": "{\"name\":\"eda\",\"args\":[],\"return_args\":{\"type_\":\"RepoMetadata\",\"description\":\"RepoMetadata\",\"compositions\":[\"RepoMetadata\"]},\"description\":\"eda(): RepoMetadata\",\"aggregations\":[\"RepoMetadata\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:from_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:from_path", "target": "{\"name\":\"from_path\",\"args\":[{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"from_path(path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Optional[Document]\",\"description\":\"Optional[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get(filename: str): Optional[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:get_text_documents", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:get_text_documents", "target": "{\"name\":\"get_text_documents\",\"args\":[],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_text_documents(): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:set", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:set", "target": "{\"name\":\"set\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set(filename: str, content: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:Repo:to_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/document.py:Repo:to_path", "target": "{\"name\":\"to_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"to_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"name\":\"RepoFileInfo\",\"package\":\"metagpt/repo_parser.py:RepoFileInfo\",\"attributes\":{\"classes\":{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]},\"file\":{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]},\"functions\":{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]},\"globals\":{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]},\"page_info\":{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:classes"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:file"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:functions"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:globals"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "metagpt/repo_parser.py:RepoFileInfo:page_info"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoFileInfo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:RepoFileInfo", "target": "{\"name\":\"RepoFileInfo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"classes\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"functions\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"globals\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"},{\"name\":\"page_info\",\"visibility\":\"+\",\"value_type\":\"List\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:classes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:classes", "target": "{\"name\":\"classes\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"classes : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:file", "target": "{\"name\":\"file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:functions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:functions", "target": "{\"name\":\"functions\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"functions : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:globals", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:globals", "target": "{\"name\":\"globals\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"globals : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoFileInfo:page_info", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoFileInfo:page_info", "target": "{\"name\":\"page_info\",\"type_\":\"List\",\"default_\":\"\",\"description\":\"page_info : List\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata", "target": "{\"name\":\"RepoMetadata\",\"package\":\"metagpt/document.py:RepoMetadata\",\"attributes\":{\"n_chars\":{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]},\"n_docs\":{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"symbols\":{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:n_chars"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:n_docs"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:name"}, {"predicate": "has_class_property", "source": "metagpt/document.py:RepoMetadata", "target": "metagpt/document.py:RepoMetadata:symbols"}, {"predicate": "has_page_info", "source": "metagpt/document.py:RepoMetadata", "target": "{\"lineno\":164,\"end_lineno\":168,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoMetadata\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/document.py:RepoMetadata", "target": "{\"name\":\"RepoMetadata\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"n_chars\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_docs\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"symbols\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:n_chars", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:n_chars", "target": "{\"name\":\"n_chars\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_chars : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:n_docs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:n_docs", "target": "{\"name\":\"n_docs\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_docs : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/document.py:RepoMetadata:symbols", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/document.py:RepoMetadata:symbols", "target": "{\"name\":\"symbols\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"symbols : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"name\":\"RepoParser\",\"package\":\"metagpt/repo_parser.py:RepoParser\",\"attributes\":{\"base_directory\":{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}},\"methods\":{\"extract_class_and_function_info\":{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]},\"generate_dataframe_structure\":{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path)\",\"aggregations\":[]},\"generate_json_structure\":{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path)\",\"aggregations\":[]},\"generate_structure\":{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path, mode): Path\",\"aggregations\":[\"Path\"]},\"generate_symbols\":{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]},\"node_to_str\":{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]},\"rebuild_class_views\":{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[\"Path\"],\"aggregations\":[\"RepoFileInfo\",\"CodeBlockInfo\\\\\",\"str\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:base_directory"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_json_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_structure"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:generate_symbols"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:node_to_str"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:rebuild_class_views"}, {"predicate": "isCompositeOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:RepoFileInfo"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:CodeBlockInfo\\"}, {"predicate": "isAggregateOf", "source": "metagpt/repo_parser.py:RepoParser", "target": "?:str\\"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_file"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_expr"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_name"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_if"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_if_compare"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_variable"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_assign"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_classes"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_split_class_line"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_split_relationship_line"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_get_label"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_create_path_mapping"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_repair_namespaces"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_repair_ns"}, {"predicate": "has_class_method", "source": "metagpt/repo_parser.py:RepoParser", "target": "metagpt/repo_parser.py:RepoParser:_find_root"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"lineno\":267,\"end_lineno\":634,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RepoParser\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/repo_parser.py:RepoParser", "target": "{\"name\":\"RepoParser\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"base_directory\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:base_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:base_directory", "target": "{\"name\":\"base_directory\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"base_directory : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:extract_class_and_function_info", "target": "{\"name\":\"extract_class_and_function_info\",\"args\":[{\"name\":\"tree\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tree\",\"compositions\":[]},{\"name\":\"file_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"file_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"RepoFileInfo\",\"description\":\"RepoFileInfo\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"extract_class_and_function_info(tree, file_path): RepoFileInfo\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_dataframe_structure", "target": "{\"name\":\"generate_dataframe_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_dataframe_structure(output_path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_json_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_json_structure", "target": "{\"name\":\"generate_json_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"generate_json_structure(output_path)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_structure", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_structure", "target": "{\"name\":\"generate_structure\",\"args\":[{\"name\":\"output_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"output_path\",\"compositions\":[]},{\"name\":\"mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"mode\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Path\",\"description\":\"Path\",\"compositions\":[\"Path\"]},\"description\":\"generate_structure(output_path, mode): Path\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:generate_symbols", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:generate_symbols", "target": "{\"name\":\"generate_symbols\",\"args\":[],\"return_args\":{\"type_\":\"List[RepoFileInfo]\",\"description\":\"List[RepoFileInfo]\",\"compositions\":[\"RepoFileInfo\"]},\"description\":\"generate_symbols(): List[RepoFileInfo]\",\"aggregations\":[\"RepoFileInfo\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:node_to_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:node_to_str", "target": "{\"name\":\"node_to_str\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"CodeBlockInfo\\\\|None\",\"description\":\"CodeBlockInfo \\\\| None\",\"compositions\":[\"CodeBlockInfo\\\\\"]},\"description\":\"node_to_str(node): CodeBlockInfo \\\\| None\",\"aggregations\":[\"CodeBlockInfo\\\\\"]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:rebuild_class_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/repo_parser.py:RepoParser:rebuild_class_views", "target": "{\"name\":\"rebuild_class_views\",\"args\":[{\"name\":\"path\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"path: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"rebuild_class_views(path: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/researcher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/researcher.py", "target": "metagpt/roles/researcher.py:Report"}, {"predicate": "has_class", "source": "metagpt/roles/researcher.py", "target": "metagpt/roles/researcher.py:Researcher"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report", "target": "{\"name\":\"Report\",\"package\":\"metagpt/roles/researcher.py:Report\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"links\":{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]},\"summaries\":{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"tuple\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:content"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:links"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:summaries"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Report", "target": "metagpt/roles/researcher.py:Report:topic"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/researcher.py:Report", "target": "?:tuple"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:Report", "target": "{\"lineno\":21,\"end_lineno\":25,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Report\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/researcher.py:Report", "target": "{\"name\":\"Report\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"links\",\"visibility\":\"+\",\"value_type\":\"Optional[dict[str,list[str]]]\",\"default_value\":\"\"},{\"name\":\"summaries\",\"visibility\":\"+\",\"value_type\":\"Optional[list[tuple[str,str]]]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:links", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:links", "target": "{\"name\":\"links\",\"type_\":\"Optional[dict[str,list[str]]]\",\"default_\":\"\",\"description\":\"links : Optional[dict[str, list[str]]]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:summaries", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:summaries", "target": "{\"name\":\"summaries\",\"type_\":\"Optional[list[tuple[str,str]]]\",\"default_\":\"\",\"description\":\"summaries : Optional[list[tuple[str, str]]]\",\"compositions\":[\"tuple\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Report:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Report:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"name\":\"Researcher\",\"package\":\"metagpt/roles/researcher.py:Researcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"research_system_text\":{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]},\"write_report\":{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Message\",\"Action\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:react"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:research_system_text"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:write_report"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "?:Action"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/researcher.py:Researcher", "target": "metagpt/roles/researcher.py:Researcher:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"lineno\":28,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Researcher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/researcher.py:Researcher", "target": "{\"name\":\"Researcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:research_system_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:research_system_text", "target": "{\"name\":\"research_system_text\",\"args\":[{\"name\":\"topic\",\"type_\":\"\",\"default_\":\"\",\"description\":\"topic\",\"compositions\":[]},{\"name\":\"current_task\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"current_task: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"research_system_text(topic, current_task: Action): str\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:write_report", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/researcher.py:Researcher:write_report", "target": "{\"name\":\"write_report\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]},{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_report(topic: str, content: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"name\":\"ResourceFileRepositories\",\"package\":\"metagpt/utils/project_repo.py:ResourceFileRepositories\",\"attributes\":{\"api_spec_and_task\":{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]},\"code_plan_and_change\":{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]},\"code_summary\":{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]},\"competitive_analysis\":{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]},\"data_api_design\":{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]},\"graph_repo\":{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]},\"sd_output\":{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]},\"seq_flow\":{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]},\"system_design\":{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow"}, {"predicate": "has_class_property", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ProjectRepo:resources"}, {"predicate": "has_class_method", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"lineno\":63,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResourceFileRepositories\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"name\":\"ResourceFileRepositories\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_spec_and_task\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_plan_and_change\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"code_summary\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"competitive_analysis\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"data_api_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"graph_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"sd_output\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"seq_flow\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"system_design\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "{\"description\":\"The source code defines a class ResourceFileRepositories that extends FileRepository and initializes multiple file repositories for different types of resources.\",\"use_cases\":[{\"description\":\"Create Resource File Repositories\",\"inputs\":[\"git_repo\"],\"outputs\":[\"competitive_analysis\",\"data_api_design\",\"seq_flow\",\"system_design\",\"prd\",\"api_spec_and_task\",\"code_summary\",\"sd_output\",\"code_plan_and_change\",\"graph_repo\"],\"actors\":[\"System\"],\"steps\":[\"Initialize a new instance of ResourceFileRepositories with a git repository\",\"Create file repositories for competitive analysis, data API design, sequence flow, system design, PRD, API spec and task, code summary, SD output, code plan and change, and graph repository\"],\"reason\":\"The system needs to manage and organize different types of resource files in a git repository\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories", "target": "\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:api_spec_and_task", "target": "{\"name\":\"api_spec_and_task\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_spec_and_task\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_plan_and_change", "target": "{\"name\":\"code_plan_and_change\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_plan_and_change\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:code_summary", "target": "{\"name\":\"code_summary\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_summary\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:competitive_analysis", "target": "{\"name\":\"competitive_analysis\",\"type_\":\"\",\"default_\":\"\",\"description\":\"competitive_analysis\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:data_api_design", "target": "{\"name\":\"data_api_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"data_api_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:graph_repo", "target": "{\"name\":\"graph_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:prd", "target": "{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:sd_output", "target": "{\"name\":\"sd_output\",\"type_\":\"\",\"default_\":\"\",\"description\":\"sd_output\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:seq_flow", "target": "{\"name\":\"seq_flow\",\"type_\":\"\",\"default_\":\"\",\"description\":\"seq_flow\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:system_design", "target": "{\"name\":\"system_design\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_design\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"name\":\"ResultEmbedding\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:ResultEmbedding\",\"attributes\":{\"data\":{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"usage\":{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Embedding\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"predicate": "is_composite_of", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "metagpt/tools/openai_text_to_embedding.py:Embedding"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"lineno\":34,\"end_lineno\":41,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ResultEmbedding\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "{\"name\":\"ResultEmbedding\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"data\",\"visibility\":\"+\",\"value_type\":\"List[Embedding]\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"usage\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding", "target": "?:Embedding"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:data", "target": "{\"name\":\"data\",\"type_\":\"List[Embedding]\",\"default_\":\"\",\"description\":\"data : List[Embedding]\",\"compositions\":[\"Embedding\"]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:object_", "target": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage", "target": "{\"name\":\"usage\",\"type_\":\"\",\"default_\":\"\",\"description\":\"usage\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"name\":\"Returns\",\"package\":\"metagpt/learn/skill_loader.py:Returns\",\"attributes\":{\"format\":{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]},\"type\":{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Returns:format"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Returns:type"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Skill"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Returns", "target": "metagpt/learn/skill_loader.py:Skill:returns"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"lineno\":24,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Returns\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Returns", "target": "{\"name\":\"Returns\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"format\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns:format", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns:format", "target": "{\"name\":\"format\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"format : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Returns:type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Returns:type", "target": "{\"name\":\"type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"name\":\"ReviewMode\",\"package\":\"metagpt/actions/action_node.py:ReviewMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "metagpt/actions/action_node.py:ReviewMode:name"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviewMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ReviewMode", "target": "{\"name\":\"ReviewMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviewMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviewMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"name\":\"ReviseMode\",\"package\":\"metagpt/actions/action_node.py:ReviseMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "metagpt/actions/action_node.py:ReviseMode:name"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"lineno\":31,\"end_lineno\":34,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ReviseMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ReviseMode", "target": "{\"name\":\"ReviseMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ReviseMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ReviseMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/role.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "has_class", "source": "metagpt/roles/role.py", "target": "metagpt/roles/role.py:RoleReactMode"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role", "target": "{\"name\":\"Role\",\"package\":\"metagpt/roles/role.py:Role\",\"attributes\":{\"action_description\":{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]},\"actions\":{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]},\"addresses\":{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]},\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"git_repo\":{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"is_human\":{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]},\"is_idle\":{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]},\"latest_observed_msg\":{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"project_name\":{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]},\"project_path\":{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]},\"project_repo\":{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]},\"prompt_schema\":{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]},\"rc\":{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]},\"recovered\":{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]},\"role_id\":{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]},\"src_workspace\":{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]},\"states\":{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}},\"methods\":{\"act\":{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]},\"check_addresses\":{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]},\"get_memories\":{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]},\"is_watch\":{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]},\"publish_message\":{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]},\"put_message\":{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]},\"pydantic_rebuild_model\":{\"name\":\"pydantic_rebuild_model\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pydantic_rebuild_model()\",\"aggregations\":[]},\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]},\"set_action\":{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]},\"set_actions\":{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]},\"set_addresses\":{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]},\"set_env\":{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]},\"set_todo\":{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]},\"think\":{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}},\"compositions\":[\"Action\",\"SerializeAsAny\",\"Message\"],\"aggregations\":[\"ActionOutput\",\"Message\\\\\",\"Type\",\"Environment\"]}"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:action_description"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:actions"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:addresses"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:desc"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:git_repo"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_human"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_idle"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:latest_observed_msg"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:llm"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:model_config"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_name"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_path"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:project_repo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:prompt_schema"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:rc"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:recovered"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:role_id"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:src_workspace"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:states"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:todo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:act"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:check_addresses"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:get_memories"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:is_watch"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:publish_message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:put_message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:pydantic_rebuild_model"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:react"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:run"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_action"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_addresses"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_env"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:set_todo"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:think"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:SerializeAsAny"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:ActionOutput"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Message\\"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Type"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:Role", "target": "?:Environment"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/role.py:Role", "target": "metagpt/context_mixin.py:ContextMixin"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/role.py:Role", "target": "metagpt/schema.py:SerializationMixin"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:Role", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:Role", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_reset"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_setting"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_check_actions"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_init_action"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_set_react_mode"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_watch"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_set_state"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_get_prefix"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_observe"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_react"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_act_by_order"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:Role", "target": "metagpt/roles/role.py:Role:_plan_and_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:Role", "target": "{\"lineno\":121,\"end_lineno\":556,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Role\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:Role", "target": "{\"name\":\"Role\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"action_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"actions\",\"visibility\":\"+\",\"value_type\":\"list[SerializeAsAny[Action]]\",\"default_value\":\"\"},{\"name\":\"addresses\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"},{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"git_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"is_human\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"is_idle\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"latest_observed_msg\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"project_repo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_schema\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"recovered\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"role_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"src_workspace\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"states\",\"visibility\":\"+\",\"value_type\":\"list[str]\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:Action"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:Role", "target": "?:Message"}, {"predicate": "has_class_use_case", "source": "metagpt/roles/role.py:Role", "target": "{\"description\":\"This source code defines a Role class that represents a role or agent in a system. The Role class contains methods for setting actions, thinking, acting, observing, and reacting to messages. It also includes properties for managing the role's state and environment.\",\"use_cases\":[{\"description\":\"Set action to do and update context\",\"inputs\":[\"value\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Check if the value is not None\",\"If the value is not None, set the value as the action to do and update the context\"],\"reason\":\"This use case is executed when the system needs to set an action for the role to perform and update the context.\"},{\"description\":\"Add actions to the role\",\"inputs\":[\"actions\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Reset the role's states and actions\",\"Iterate through the list of actions\",\"Initialize each action if it is not already initialized\",\"Set the long-term memory (llm) and prefix for each action\",\"Add the action to the role's list of actions\",\"Update the role's states with the action descriptions\"],\"reason\":\"This use case is executed when the system needs to add multiple actions to the role and update its states and long-term memory.\"},{\"description\":\"Set the strategy of the role reacting to observed messages\",\"inputs\":[\"react_mode\",\"max_react_loop\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Check if the react_mode is valid\",\"Set the role's react mode and maximum react loop based on the inputs\"],\"reason\":\"This use case is executed when the system needs to set the strategy for the role's reaction to observed messages.\"},{\"description\":\"Watch actions of interest\",\"inputs\":[\"actions\"],\"outputs\":[],\"actors\":[\"Role\"],\"steps\":[\"Set the role to watch messages caused by the specified actions\"],\"reason\":\"This use case is executed when the system needs the role to watch specific actions of interest.\"},{\"description\":\"Observe, think, and act based on the results of the observation\",\"inputs\":[\"with_message\"],\"outputs\":[\"rsp\"],\"actors\":[\"Role\"],\"steps\":[\"If a message is provided, place the message into the role's private message buffer\",\"If there is no new information, suspend and wait\",\"Observe new messages and filter out messages of interest\",\"React to the observed messages and get the response message\",\"Reset the next action to be taken\",\"Publish the response message to the environment\"],\"reason\":\"This use case is executed when the role needs to observe, think, and act based on the results of the observation.\"}],\"relationship\":[\"The 'Set action to do and update context' use case is related to the 'Add actions to the role' use case as it involves updating the role's context and actions.\",\"The 'Set the strategy of the role reacting to observed messages' use case is related to the 'Observe, think, and act based on the results of the observation' use case as it determines the strategy for the role's reaction to observed messages.\",\"The 'Watch actions of interest' use case is related to the 'Observe, think, and act based on the results of the observation' use case as it involves watching specific actions of interest during the observation process.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/roles/role.py:Role", "target": "\nsequenceDiagram\n participant Role\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:action_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:action_description", "target": "{\"name\":\"action_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"action_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:action_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:actions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:actions", "target": "{\"name\":\"actions\",\"type_\":\"list[SerializeAsAny[Action]]\",\"default_\":\"\",\"description\":\"actions : list[SerializeAsAny[Action]]\",\"compositions\":[\"Action\",\"SerializeAsAny\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:addresses", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:addresses", "target": "{\"name\":\"addresses\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"addresses : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:git_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:git_repo", "target": "{\"name\":\"git_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"git_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:git_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_human", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_human", "target": "{\"name\":\"is_human\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"is_human : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_idle", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_idle", "target": "{\"name\":\"is_idle\",\"type_\":\"\",\"default_\":\"\",\"description\":\"is_idle\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_idle", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:latest_observed_msg", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:latest_observed_msg", "target": "{\"name\":\"latest_observed_msg\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"latest_observed_msg : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_path", "target": "{\"name\":\"project_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_repo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:project_repo", "target": "{\"name\":\"project_repo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"project_repo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:project_repo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "{\"name\":\"prompt_schema\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_schema\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:prompt_schema", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:rc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:rc", "target": "{\"name\":\"rc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"rc\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:recovered", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:recovered", "target": "{\"name\":\"recovered\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"recovered : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:role_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:role_id", "target": "{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "{\"name\":\"src_workspace\",\"type_\":\"\",\"default_\":\"\",\"description\":\"src_workspace\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:src_workspace", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:states", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:states", "target": "{\"name\":\"states\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"states : list[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:todo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:todo", "target": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:todo", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:act", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:act", "target": "{\"name\":\"act\",\"args\":[],\"return_args\":{\"type_\":\"ActionOutput\",\"description\":\"ActionOutput\",\"compositions\":[\"ActionOutput\"]},\"description\":\"act(): ActionOutput\",\"aggregations\":[\"ActionOutput\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:check_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:check_addresses", "target": "{\"name\":\"check_addresses\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_addresses()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:get_memories", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:get_memories", "target": "{\"name\":\"get_memories\",\"args\":[{\"name\":\"k\",\"type_\":\"\",\"default_\":\"\",\"description\":\"k\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Message]\",\"description\":\"list[Message]\",\"compositions\":[\"Message\"]},\"description\":\"get_memories(k): list[Message]\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:is_watch", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:is_watch", "target": "{\"name\":\"is_watch\",\"args\":[{\"name\":\"caused_by\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"caused_by: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"is_watch(caused_by: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:publish_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:publish_message", "target": "{\"name\":\"publish_message\",\"args\":[{\"name\":\"msg\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"publish_message(msg)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:put_message", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:put_message", "target": "{\"name\":\"put_message\",\"args\":[{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"put_message(message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:pydantic_rebuild_model", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:pydantic_rebuild_model", "target": "{\"name\":\"pydantic_rebuild_model\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"pydantic_rebuild_model()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\\\\|None\",\"description\":\"Message \\\\| None\",\"compositions\":[\"Message\\\\\"]},\"description\":\"run(with_message): Message \\\\| None\",\"aggregations\":[\"Message\\\\\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_action", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_action", "target": "{\"name\":\"set_action\",\"args\":[{\"name\":\"action\",\"type_\":\"Action\",\"default_\":\"\",\"description\":\"action: Action\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_action(action: Action)\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_actions", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_actions", "target": "{\"name\":\"set_actions\",\"args\":[{\"name\":\"actions\",\"type_\":\"list[Union[Action,Type[Action]]]\",\"default_\":\"\",\"description\":\"actions: list[Union[Action, Type[Action]]]\",\"compositions\":[\"Action\",\"Type\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_actions(actions: list[Union[Action, Type[Action]]])\",\"aggregations\":[\"Action\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_addresses", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_addresses", "target": "{\"name\":\"set_addresses\",\"args\":[{\"name\":\"addresses\",\"type_\":\"Set[str]\",\"default_\":\"\",\"description\":\"addresses: Set[str]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_addresses(addresses: Set[str])\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_env", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_env", "target": "{\"name\":\"set_env\",\"args\":[{\"name\":\"env\",\"type_\":\"Environment\",\"default_\":\"\",\"description\":\"env: 'Environment'\",\"compositions\":[\"Environment\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_env(env: 'Environment')\",\"aggregations\":[\"Environment\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:set_todo", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:set_todo", "target": "{\"name\":\"set_todo\",\"args\":[{\"name\":\"value\",\"type_\":\"Optional[Action]\",\"default_\":\"\",\"description\":\"value: Optional[Action]\",\"compositions\":[\"Action\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_todo(value: Optional[Action])\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:think", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:Role:think", "target": "{\"name\":\"think\",\"args\":[],\"return_args\":{\"type_\":\"Action\",\"description\":\"Action\",\"compositions\":[\"Action\"]},\"description\":\"think(): Action\",\"aggregations\":[\"Action\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"name\":\"RoleContext\",\"package\":\"metagpt/roles/role.py:RoleContext\",\"attributes\":{\"env\":{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]},\"history\":{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]},\"important_memory\":{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]},\"max_react_loop\":{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]},\"memory\":{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"msg_buffer\":{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]},\"news\":{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]},\"react_mode\":{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]},\"state\":{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]},\"todo\":{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]},\"watch\":{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}},\"methods\":{\"check\":{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check (role_id: str)\",\"aggregations\":[]}},\"compositions\":[\"Message\",\"Type\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:env"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:history"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:important_memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:max_react_loop"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:memory"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:model_config"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:msg_buffer"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:news"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:react_mode"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:state"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:todo"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:watch"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:RoleContext:check"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "?:Type"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:Role"}, {"predicate": "isCompositeOn", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/roles/role.py:Role:rc"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/memory/longterm_memory.py:LongTermMemory"}, {"predicate": "isAggregateOn", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/memory/longterm_memory.py:LongTermMemory:rc"}, {"predicate": "is_composite_of", "source": "metagpt/roles/role.py:RoleContext", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"lineno\":83,\"end_lineno\":118,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:RoleContext", "target": "{\"name\":\"RoleContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"history\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"important_memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_react_loop\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"memory\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"msg_buffer\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"news\",\"visibility\":\"+\",\"value_type\":\"list[Type[Message]]\",\"default_value\":\"\"},{\"name\":\"react_mode\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"state\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"todo\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"watch\",\"visibility\":\"+\",\"value_type\":\"set[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleContext", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:env", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:env", "target": "{\"name\":\"env\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"env : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:history", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:history", "target": "{\"name\":\"history\",\"type_\":\"\",\"default_\":\"\",\"description\":\"history\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:history", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "{\"name\":\"important_memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"important_memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:important_memory", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:max_react_loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:max_react_loop", "target": "{\"name\":\"max_react_loop\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_react_loop : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:memory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:memory", "target": "{\"name\":\"memory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"memory\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:msg_buffer", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:msg_buffer", "target": "{\"name\":\"msg_buffer\",\"type_\":\"\",\"default_\":\"\",\"description\":\"msg_buffer\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:news", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:news", "target": "{\"name\":\"news\",\"type_\":\"list[Type[Message]]\",\"default_\":\"\",\"description\":\"news : list[Type[Message]]\",\"compositions\":[\"Message\",\"Type\"]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:react_mode", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:react_mode", "target": "{\"name\":\"react_mode\",\"type_\":\"\",\"default_\":\"\",\"description\":\"react_mode\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:state", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:state", "target": "{\"name\":\"state\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"state : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:todo", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:todo", "target": "{\"name\":\"todo\",\"type_\":\"\",\"default_\":\"\",\"description\":\"todo\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:watch", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:watch", "target": "{\"name\":\"watch\",\"type_\":\"set[str]\",\"default_\":\"\",\"description\":\"watch : set[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleContext:check", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleContext:check", "target": "{\"name\":\"check\",\"args\":[{\"name\":\"role_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role_id: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check (role_id: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"name\":\"RoleReactMode\",\"package\":\"metagpt/roles/role.py:RoleReactMode\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{\"values\":{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleReactMode:name"}, {"predicate": "has_class_method", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleReactMode:values"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleContext"}, {"predicate": "isCompositeOn", "source": "metagpt/roles/role.py:RoleReactMode", "target": "metagpt/roles/role.py:RoleContext:react_mode"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"lineno\":73,\"end_lineno\":80,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RoleReactMode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/role.py:RoleReactMode", "target": "{\"name\":\"RoleReactMode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/role.py:RoleReactMode:values", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/role.py:RoleReactMode:values", "target": "{\"name\":\"values\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"values()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/run_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/run_code.py", "target": "metagpt/actions/run_code.py:RunCode"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"name\":\"RunCode\",\"package\":\"metagpt/actions/run_code.py:RunCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]},\"run_script\":{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]},\"run_text\":{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"RunCodeResult\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run_script"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:run_text"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/run_code.py:RunCode", "target": "?:RunCodeResult"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_requirements"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_pytest"}, {"predicate": "has_class_method", "source": "metagpt/actions/run_code.py:RunCode", "target": "metagpt/actions/run_code.py:RunCode:_install_dependencies"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"lineno\":78,\"end_lineno\":173,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/run_code.py:RunCode", "target": "{\"name\":\"RunCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"RunCodeResult\",\"description\":\"RunCodeResult\",\"compositions\":[\"RunCodeResult\"]},\"description\":\"run(): RunCodeResult\",\"aggregations\":[\"RunCodeResult\"]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run_script", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run_script", "target": "{\"name\":\"run_script\",\"args\":[{\"name\":\"working_directory\",\"type_\":\"\",\"default_\":\"\",\"description\":\"working_directory\",\"compositions\":[]},{\"name\":\"additional_python_paths\",\"type_\":\"\",\"default_\":\"\",\"description\":\"additional_python_paths\",\"compositions\":[]},{\"name\":\"command\",\"type_\":\"\",\"default_\":\"\",\"description\":\"command\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_script(working_directory, additional_python_paths, command): Tuple[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:run_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/run_code.py:RunCode:run_text", "target": "{\"name\":\"run_text\",\"args\":[{\"name\":\"code\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Tuple[str,str]\",\"description\":\"Tuple[str, str]\",\"compositions\":[]},\"description\":\"run_text(code): Tuple[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"name\":\"RunCodeContext\",\"package\":\"metagpt/schema.py:RunCodeContext\",\"attributes\":{\"additional_python_paths\":{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]},\"code\":{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]},\"code_filename\":{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]},\"command\":{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]},\"mode\":{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]},\"output\":{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]},\"output_filename\":{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]},\"test_code\":{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]},\"test_filename\":{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]},\"working_directory\":{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:additional_python_paths"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:code_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:command"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:mode"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:output"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:output_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:test_code"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:test_filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:RunCodeContext:working_directory"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/debug_error.py:DebugError"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/debug_error.py:DebugError:i_context"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/run_code.py:RunCode"}, {"predicate": "isCompositeOn", "source": "metagpt/schema.py:RunCodeContext", "target": "metagpt/actions/run_code.py:RunCode:i_context"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"lineno\":431,\"end_lineno\":441,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"name\":\"RunCodeContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"additional_python_paths\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"code_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"command\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"mode\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"output\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"output_filename\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_code\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"test_filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"working_directory\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:RunCodeContext", "target": "{\"description\":\"The source code defines a class RunCodeContext which contains attributes related to running code such as mode, code, test code, command, working directory, additional python paths, output filename, and output.\",\"use_cases\":[{\"description\":\"Run code in script mode\",\"inputs\":[\"code\",\"working_directory\",\"additional_python_paths\"],\"outputs\":[\"output\"],\"actors\":[\"User\"],\"steps\":[\"User provides the code to be executed\",\"User specifies the working directory for code execution\",\"User may provide additional python paths if required\",\"System runs the provided code in script mode\",\"System generates an output after executing the code\"],\"reason\":\"When the user wants to execute a piece of code in script mode\"},{\"description\":\"Run code in test mode\",\"inputs\":[\"test_code\",\"working_directory\",\"additional_python_paths\"],\"outputs\":[\"output\"],\"actors\":[\"User\"],\"steps\":[\"User provides the test code to be executed\",\"User specifies the working directory for code execution\",\"User may provide additional python paths if required\",\"System runs the provided test code\",\"System generates an output after executing the test code\"],\"reason\":\"When the user wants to execute a piece of code in test mode\"}],\"relationship\":[\"The 'Run code in script mode' use case is related to the 'Run code in test mode' use case as both involve running code with different purposes.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:RunCodeContext", "target": "\nsequenceDiagram\n participant User\n participant System\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:additional_python_paths", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:additional_python_paths", "target": "{\"name\":\"additional_python_paths\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"additional_python_paths : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:code", "target": "{\"name\":\"code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"code : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:code_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:code_filename", "target": "{\"name\":\"code_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:command", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:command", "target": "{\"name\":\"command\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"command : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:mode", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:mode", "target": "{\"name\":\"mode\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"mode : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:output", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:output", "target": "{\"name\":\"output\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:output_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:output_filename", "target": "{\"name\":\"output_filename\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"output_filename : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:test_code", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:test_code", "target": "{\"name\":\"test_code\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"test_code : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:test_filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:test_filename", "target": "{\"name\":\"test_filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"test_filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeContext:working_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeContext:working_directory", "target": "{\"name\":\"working_directory\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"working_directory : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"name\":\"RunCodeResult\",\"package\":\"metagpt/schema.py:RunCodeResult\",\"attributes\":{\"stderr\":{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]},\"stdout\":{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]},\"summary\":{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:stderr"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:stdout"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:RunCodeResult:summary"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:RunCodeResult", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"lineno\":444,\"end_lineno\":447,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"RunCodeResult\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:RunCodeResult", "target": "{\"name\":\"RunCodeResult\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"stderr\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"stdout\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:stderr", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:stderr", "target": "{\"name\":\"stderr\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stderr : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:stdout", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:stdout", "target": "{\"name\":\"stdout\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"stdout : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:RunCodeResult:summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:RunCodeResult:summary", "target": "{\"name\":\"summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/s3.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/s3.py", "target": "metagpt/utils/s3.py:S3"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3", "target": "{\"name\":\"S3\",\"package\":\"metagpt/utils/s3.py:S3\",\"attributes\":{\"auth_config\":{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]},\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"session\":{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}},\"methods\":{\"cache\":{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]},\"download_file\":{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]},\"get_object\":{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]},\"get_object_url\":{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]},\"upload_file\":{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}},\"compositions\":[\"Session\"],\"aggregations\":[\"bytes\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:auth_config"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:config"}, {"predicate": "has_class_property", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:session"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:cache"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:download_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:get_object"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:get_object_url"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:upload_file"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/s3.py:S3", "target": "?:Session"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/s3.py:S3", "target": "?:bytes"}, {"predicate": "has_class_method", "source": "metagpt/utils/s3.py:S3", "target": "metagpt/utils/s3.py:S3:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:S3", "target": "{\"lineno\":16,\"end_lineno\":154,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/s3.py:S3", "target": "{\"name\":\"S3\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"auth_config\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"session\",\"visibility\":\"+\",\"value_type\":\"Session\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:auth_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:auth_config", "target": "{\"name\":\"auth_config\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"auth_config : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:session", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:session", "target": "{\"name\":\"session\",\"type_\":\"Session\",\"default_\":\"\",\"description\":\"session : Session\",\"compositions\":[\"Session\"]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:cache", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:cache", "target": "{\"name\":\"cache\",\"args\":[{\"name\":\"data\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"data: str\",\"compositions\":[]},{\"name\":\"file_ext\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"file_ext: str\",\"compositions\":[]},{\"name\":\"format\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"format: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"cache(data: str, file_ext: str, format: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:download_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:download_file", "target": "{\"name\":\"download_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"chunk_size\",\"type_\":\"Optional[int]\",\"default_\":\"\",\"description\":\"chunk_size: Optional[int]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"download_file(bucket: str, object_name: str, local_path: str, chunk_size: Optional[int]): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:get_object", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:get_object", "target": "{\"name\":\"get_object\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bytes\",\"description\":\"bytes\",\"compositions\":[\"bytes\"]},\"description\":\"get_object(bucket: str, object_name: str): bytes\",\"aggregations\":[\"bytes\"]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:get_object_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:get_object_url", "target": "{\"name\":\"get_object_url\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_object_url(bucket: str, object_name: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:upload_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/s3.py:S3:upload_file", "target": "{\"name\":\"upload_file\",\"args\":[{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket: str\",\"compositions\":[]},{\"name\":\"local_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"local_path: str\",\"compositions\":[]},{\"name\":\"object_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"upload_file(bucket: str, local_path: str, object_name: str): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/s3_config.py", "target": "metagpt/configs/s3_config.py:S3Config"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"name\":\"S3Config\",\"package\":\"metagpt/configs/s3_config.py:S3Config\",\"attributes\":{\"access_key\":{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]},\"bucket\":{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]},\"endpoint\":{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]},\"secret_key\":{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:access_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:bucket"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:endpoint"}, {"predicate": "has_class_property", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/configs/s3_config.py:S3Config:secret_key"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "isAggregateOf", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/s3.py:S3"}, {"predicate": "isAggregateOn", "source": "metagpt/configs/s3_config.py:S3Config", "target": "metagpt/utils/s3.py:S3:config"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"S3Config\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/s3_config.py:S3Config", "target": "{\"name\":\"S3Config\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"access_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"bucket\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"endpoint\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"secret_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:access_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:access_key", "target": "{\"name\":\"access_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"access_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:bucket", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:bucket", "target": "{\"name\":\"bucket\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"bucket : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:endpoint", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:endpoint", "target": "{\"name\":\"endpoint\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"endpoint : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/s3_config.py:S3Config:secret_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/s3_config.py:S3Config:secret_key", "target": "{\"name\":\"secret_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"secret_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"name\":\"SPO\",\"package\":\"metagpt/utils/graph_repository.py:SPO\",\"attributes\":{\"object_\":{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]},\"predicate\":{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]},\"subject\":{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:object_"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:predicate"}, {"predicate": "has_class_property", "source": "metagpt/utils/graph_repository.py:SPO", "target": "metagpt/utils/graph_repository.py:SPO:subject"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"lineno\":46,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SPO\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/graph_repository.py:SPO", "target": "{\"name\":\"SPO\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"object_\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"predicate\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"subject\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:object_", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:object_", "target": "{\"name\":\"object_\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"object_ : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:predicate", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:predicate", "target": "{\"name\":\"predicate\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"predicate : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:SPO:subject", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/graph_repository.py:SPO:subject", "target": "{\"name\":\"subject\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"subject : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "{\"name\":\"SQVUseCase\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:SQVUseCase\",\"attributes\":{\"actors\":{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"inputs\":{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]},\"outputs\":{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]},\"reason\":{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]},\"steps\":{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:actors"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:description"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:inputs"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:outputs"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:reason"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:steps"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "{\"lineno\":38,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SQVUseCase\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase", "target": "{\"name\":\"SQVUseCase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"actors\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"outputs\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"reason\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"steps\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:actors", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:actors", "target": "{\"name\":\"actors\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"actors : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:inputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:inputs", "target": "{\"name\":\"inputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"inputs : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:outputs", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:outputs", "target": "{\"name\":\"outputs\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"outputs : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:reason", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:reason", "target": "{\"name\":\"reason\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"reason : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:steps", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase:steps", "target": "{\"name\":\"steps\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"steps : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "{\"name\":\"SQVUseCaseDetails\",\"package\":\"metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails\",\"attributes\":{\"description\":{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]},\"relationship\":{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]},\"use_cases\":{\"name\":\"use_cases\",\"type_\":\"List[SQVUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[SQVUseCase]\",\"compositions\":[\"SQVUseCase\"]}},\"methods\":{},\"compositions\":[\"SQVUseCase\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:description"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:relationship"}, {"predicate": "has_class_property", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:use_cases"}, {"predicate": "is_composite_of", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "metagpt/actions/rebuild_sequence_view.py:SQVUseCase"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "{\"lineno\":47,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SQVUseCaseDetails\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "{\"name\":\"SQVUseCaseDetails\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"relationship\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"use_cases\",\"visibility\":\"+\",\"value_type\":\"List[SQVUseCase]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails", "target": "?:SQVUseCase"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:description", "target": "{\"name\":\"description\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"description : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:relationship", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:relationship", "target": "{\"name\":\"relationship\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"relationship : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:use_cases", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/rebuild_sequence_view.py:SQVUseCaseDetails:use_cases", "target": "{\"name\":\"use_cases\",\"type_\":\"List[SQVUseCase]\",\"default_\":\"\",\"description\":\"use_cases : List[SQVUseCase]\",\"compositions\":[\"SQVUseCase\"]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/sales.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/sales.py", "target": "metagpt/roles/sales.py:Sales"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales", "target": "{\"name\":\"Sales\",\"package\":\"metagpt/roles/sales.py:Sales\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"store\":{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}},\"methods\":{},\"compositions\":[\"BaseStore\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:store"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/role.py:Role"}, {"predicate": "is_composite_of", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/document_store/base_store.py:BaseStore"}, {"predicate": "has_class_method", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/sales.py:Sales", "target": "metagpt/roles/sales.py:Sales:_set_store"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:Sales", "target": "{\"lineno\":19,\"end_lineno\":42,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Sales\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/sales.py:Sales", "target": "{\"name\":\"Sales\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"store\",\"visibility\":\"+\",\"value_type\":\"Optional[BaseStore]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sales.py:Sales", "target": "?:BaseStore"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:store", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sales.py:Sales:store", "target": "{\"name\":\"store\",\"type_\":\"Optional[BaseStore]\",\"default_\":\"\",\"description\":\"store : Optional[BaseStore]\",\"compositions\":[\"BaseStore\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/search_and_summarize.py", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"name\":\"SearchAndSummarize\",\"package\":\"metagpt/actions/search_and_summarize.py:SearchAndSummarize\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"result\":{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]},\"search_func\":{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]},\"validate_engine_and_run_func\":{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}},\"compositions\":[\"SearchEngineType\",\"SearchEngine\"],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func"}, {"predicate": "has_class_method", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/tools:SearchEngineType"}, {"predicate": "is_composite_of", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"lineno\":105,\"end_lineno\":150,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchAndSummarize\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "{\"name\":\"SearchAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"result\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngine]\",\"default_value\":\"\"},{\"name\":\"search_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "?:SearchEngine"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize", "target": "?:SearchEngineType"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:content", "target": "{\"name\":\"content\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"content : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:engine", "target": "{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:result", "target": "{\"name\":\"result\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"result : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[SearchEngine]\",\"default_\":\"\",\"description\":\"search_engine : Optional[SearchEngine]\",\"compositions\":[\"SearchEngine\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_func", "target": "{\"name\":\"search_func\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_func : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"list[Message]\",\"default_\":\"\",\"description\":\"context: list[Message]\",\"compositions\":[\"Message\"]},{\"name\":\"system_text\",\"type_\":\"\",\"default_\":\"\",\"description\":\"system_text\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(context: list[Message], system_text): str\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:validate_engine_and_run_func", "target": "{\"name\":\"validate_engine_and_run_func\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"validate_engine_and_run_func()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/search_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/search_config.py", "target": "metagpt/configs/search_config.py:SearchConfig"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"name\":\"SearchConfig\",\"package\":\"metagpt/configs/search_config.py:SearchConfig\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]},\"api_type\":{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]},\"cse_id\":{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:api_key"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"predicate": "has_class_property", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/configs/search_config.py:SearchConfig:cse_id"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/search_config.py:SearchConfig", "target": "{\"name\":\"SearchConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"api_type\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"cse_id\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"api_key : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:api_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:api_type", "target": "{\"name\":\"api_type\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_type\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/search_config.py:SearchConfig:cse_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/search_config.py:SearchConfig:cse_id", "target": "{\"name\":\"cse_id\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"cse_id : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine.py", "target": "metagpt/tools/search_engine.py:SearchEngine"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine.py", "target": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"name\":\"SearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SearchEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}},\"compositions\":[\"SearchEngineType\",\"Callable\",\"Coroutine\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:run_func"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:Coroutine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/research.py:CollectLinks"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/research.py:CollectLinks:search_engine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize"}, {"predicate": "isAggregateOn", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/actions/search_and_summarize.py:SearchAndSummarize:search_engine"}, {"predicate": "is_composite_of", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools:SearchEngineType"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "metagpt/tools/search_engine.py:SearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"lineno\":31,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "{\"name\":\"SearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"Optional[SearchEngineType]\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine.py:SearchEngine", "target": "?:SearchEngineType"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:engine", "target": "{\"name\":\"engine\",\"type_\":\"Optional[SearchEngineType]\",\"default_\":\"\",\"description\":\"engine : Optional[SearchEngineType]\",\"compositions\":[\"SearchEngineType\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:run_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:run_func", "target": "{\"name\":\"run_func\",\"type_\":\"Optional[Callable[[str,int,bool],Coroutine[None,None,Union[str,list[str]]]]]\",\"default_\":\"\",\"description\":\"run_func : Optional[Callable[[str, int, bool], Coroutine[None, None, Union[str, list[str]]]]]\",\"compositions\":[\"Callable\",\"Coroutine\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SearchEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"Literal[True]\",\"default_\":\"\",\"description\":\"as_string: Literal[True]\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: Literal[True]): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools", "target": ""}, {"predicate": "has_class", "source": "metagpt/tools", "target": "metagpt/tools:SearchEngineType"}, {"predicate": "has_class", "source": "metagpt/tools", "target": "metagpt/tools:WebBrowserEngineType"}, {"predicate": "is", "source": "metagpt/tools:SearchEngineType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools:SearchEngineType", "target": "{\"name\":\"SearchEngineType\",\"package\":\"metagpt/tools:SearchEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/tools:SearchEngineType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/configs/search_config.py:SearchConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/configs/search_config.py:SearchConfig:api_type"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/roles/searcher.py:Searcher"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:SearchEngineType", "target": "metagpt/roles/searcher.py:Searcher:engine"}, {"predicate": "has_class_view", "source": "metagpt/tools:SearchEngineType", "target": "{\"name\":\"SearchEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools:SearchEngineType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools:SearchEngineType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/searcher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/searcher.py", "target": "metagpt/roles/searcher.py:Searcher"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"name\":\"Searcher\",\"package\":\"metagpt/roles/searcher.py:Searcher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"set_search_func\":{\"name\":\"set_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_func\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_search_func(search_func)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:engine"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:set_search_func"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:_act_sp"}, {"predicate": "has_class_method", "source": "metagpt/roles/searcher.py:Searcher", "target": "metagpt/roles/searcher.py:Searcher:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"lineno\":22,\"end_lineno\":78,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Searcher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/searcher.py:Searcher", "target": "{\"name\":\"Searcher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:set_search_func", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/searcher.py:Searcher:set_search_func", "target": "{\"name\":\"set_search_func\",\"args\":[{\"name\":\"search_func\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_func\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"set_search_func(search_func)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient"}, {"predicate": "has_function", "source": "metagpt/tools/web_browser_engine_selenium.py", "target": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"name\":\"SeleniumWrapper\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper\",\"attributes\":{\"browser_type\":{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]},\"executable_path\":{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]},\"executor\":{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]},\"launch_args\":{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]},\"loop\":{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}},\"compositions\":[],\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "?:WebPage\\"}, {"predicate": "isAggregateOf", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "?:WebPage"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"lineno\":22,\"end_lineno\":83,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SeleniumWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper", "target": "{\"name\":\"SeleniumWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browser_type\",\"visibility\":\"+\",\"value_type\":\"Literal['chrome','firefox','edge','ie']\",\"default_value\":\"\"},{\"name\":\"executable_path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"executor\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"launch_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"loop\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:browser_type", "target": "{\"name\":\"browser_type\",\"type_\":\"Literal['chrome','firefox','edge','ie']\",\"default_\":\"\",\"description\":\"browser_type : Literal['chrome', 'firefox', 'edge', 'ie']\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executable_path", "target": "{\"name\":\"executable_path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executable_path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:executor", "target": "{\"name\":\"executor\",\"type_\":\"\",\"default_\":\"\",\"description\":\"executor : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:launch_args", "target": "{\"name\":\"launch_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"launch_args\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:loop", "target": "{\"name\":\"loop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"loop : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\\\\|list[WebPage]\",\"description\":\"WebPage \\\\| list[WebPage]\",\"compositions\":[\"WebPage\",\"WebPage\\\\\"]},\"description\":\"run(url: str): WebPage \\\\| list[WebPage]\",\"aggregations\":[\"WebPage\\\\\",\"WebPage\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"name\":\"SerializationMixin\",\"package\":\"metagpt/schema.py:SerializationMixin\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SerializationMixin", "target": "metagpt/schema.py:SerializationMixin:__init_subclass__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"lineno\":60,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerializationMixin\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SerializationMixin", "target": "{\"name\":\"SerializationMixin\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_serpapi.py", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"name\":\"SerpAPIWrapper\",\"package\":\"metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"params\":{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]},\"serpapi_api_key\":{\"name\":\"serpapi_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serpapi_api_key : Optional[str]\",\"compositions\":[]}},\"methods\":{\"check_serpapi_api_key\":{\"name\":\"check_serpapi_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serpapi_api_key(val: str)\",\"aggregations\":[]},\"get_params\":{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "?:aiohttp.ClientSession"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"lineno\":16,\"end_lineno\":110,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerpAPIWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper", "target": "{\"name\":\"SerpAPIWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"params\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"serpapi_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:aiosession", "target": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:params", "target": "{\"name\":\"params\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"params : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:serpapi_api_key", "target": "{\"name\":\"serpapi_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serpapi_api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:check_serpapi_api_key", "target": "{\"name\":\"check_serpapi_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serpapi_api_key(val: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:get_params", "target": "{\"name\":\"get_params\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_params(query: str): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:results", "target": "{\"name\":\"results\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(query: str, max_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"\",\"default_\":\"\",\"description\":\"query\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/search_engine_serper.py", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"name\":\"SerperWrapper\",\"package\":\"metagpt/tools/search_engine_serper.py:SerperWrapper\",\"attributes\":{\"aiosession\":{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"payload\":{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]},\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]},\"serper_api_key\":{\"name\":\"serper_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serper_api_key : Optional[str]\",\"compositions\":[]}},\"methods\":{\"check_serper_api_key\":{\"name\":\"check_serper_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serper_api_key(val: str)\",\"aggregations\":[]},\"get_headers\":{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]},\"get_payloads\":{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]},\"results\":{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}},\"compositions\":[\"aiohttp.ClientSession\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:results"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "?:aiohttp.ClientSession"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"lineno\":17,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SerperWrapper\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper", "target": "{\"name\":\"SerperWrapper\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aiosession\",\"visibility\":\"+\",\"value_type\":\"Optional[aiohttp.ClientSession]\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"payload\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"serper_api_key\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:aiosession", "target": "{\"name\":\"aiosession\",\"type_\":\"Optional[aiohttp.ClientSession]\",\"default_\":\"\",\"description\":\"aiosession : Optional[aiohttp.ClientSession]\",\"compositions\":[\"aiohttp.ClientSession\"]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:payload", "target": "{\"name\":\"payload\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"payload : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"search_engine : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:serper_api_key", "target": "{\"name\":\"serper_api_key\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"serper_api_key : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:check_serper_api_key", "target": "{\"name\":\"check_serper_api_key\",\"args\":[{\"name\":\"val\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"val: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_serper_api_key(val: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_headers", "target": "{\"name\":\"get_headers\",\"args\":[],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_headers(): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:get_payloads", "target": "{\"name\":\"get_payloads\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict[str,str]\",\"description\":\"Dict[str, str]\",\"compositions\":[]},\"description\":\"get_payloads(queries: list[str], max_results: int): Dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:results", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:results", "target": "{\"name\":\"results\",\"args\":[{\"name\":\"queries\",\"type_\":\"list[str]\",\"default_\":\"\",\"description\":\"queries: list[str]\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"results(queries: list[str], max_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]},{\"name\":\"max_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_results: int\",\"compositions\":[]},{\"name\":\"as_string\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"as_string: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str, max_results: int, as_string: bool): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"name\":\"SimpleMessage\",\"package\":\"metagpt/schema.py:SimpleMessage\",\"attributes\":{\"content\":{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]},\"role\":{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:SimpleMessage", "target": "metagpt/schema.py:SimpleMessage:content"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:SimpleMessage", "target": "metagpt/schema.py:SimpleMessage:role"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"lineno\":122,\"end_lineno\":124,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SimpleMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SimpleMessage", "target": "{\"name\":\"SimpleMessage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"role\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage:content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage:content", "target": "{\"name\":\"content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SimpleMessage:role", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SimpleMessage:role", "target": "{\"name\":\"role\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"role : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/singleton.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/singleton.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/singleton.py", "target": "metagpt/utils/singleton.py:Singleton"}, {"predicate": "is", "source": "metagpt/utils/singleton.py:Singleton", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"name\":\"Singleton\",\"package\":\"metagpt/utils/singleton.py:Singleton\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/singleton.py:Singleton", "target": "metagpt/utils/singleton.py:Singleton:__call__"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"lineno\":11,\"end_lineno\":22,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Singleton\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/singleton.py:Singleton", "target": "{\"name\":\"Singleton\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/sk_agent.py", "target": "metagpt/roles/sk_agent.py:SkAgent"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"name\":\"SkAgent\",\"package\":\"metagpt/roles/sk_agent.py:SkAgent\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"import_semantic_skill_from_directory\":{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]},\"import_skill\":{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]},\"kernel\":{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"plan\":{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]},\"planner\":{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]},\"planner_cls\":{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Callable\",\"Kernel\",\"Plan\",\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:import_skill"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:kernel"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:plan"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:planner"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:planner_cls"}, {"predicate": "has_class_property", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:profile"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Kernel"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:Plan"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:ActionPlanner"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:BasicPlanner"}, {"predicate": "isCompositeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "?:SequentialPlanner"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "metagpt/roles/sk_agent.py:SkAgent:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"lineno\":26,\"end_lineno\":87,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkAgent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/sk_agent.py:SkAgent", "target": "{\"name\":\"SkAgent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"import_semantic_skill_from_directory\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"import_skill\",\"visibility\":\"+\",\"value_type\":\"Callable\",\"default_value\":\"\"},{\"name\":\"kernel\",\"visibility\":\"+\",\"value_type\":\"Kernel\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"plan\",\"visibility\":\"+\",\"value_type\":\"Plan\",\"default_value\":\"\"},{\"name\":\"planner\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_value\":\"\"},{\"name\":\"planner_cls\",\"visibility\":\"+\",\"value_type\":\"Optional[Any]\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:import_semantic_skill_from_directory", "target": "{\"name\":\"import_semantic_skill_from_directory\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_semantic_skill_from_directory : Callable\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:import_skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:import_skill", "target": "{\"name\":\"import_skill\",\"type_\":\"Callable\",\"default_\":\"\",\"description\":\"import_skill : Callable\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:kernel", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:kernel", "target": "{\"name\":\"kernel\",\"type_\":\"Kernel\",\"default_\":\"\",\"description\":\"kernel : Kernel\",\"compositions\":[\"Kernel\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:plan", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:plan", "target": "{\"name\":\"plan\",\"type_\":\"Plan\",\"default_\":\"\",\"description\":\"plan : Plan\",\"compositions\":[\"Plan\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:planner", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:planner", "target": "{\"name\":\"planner\",\"type_\":\"Optional[Union[BasicPlanner,SequentialPlanner,ActionPlanner]]\",\"default_\":\"\",\"description\":\"planner : Optional[Union[BasicPlanner, SequentialPlanner, ActionPlanner]]\",\"compositions\":[\"ActionPlanner\",\"BasicPlanner\",\"SequentialPlanner\"]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:planner_cls", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:planner_cls", "target": "{\"name\":\"planner_cls\",\"type_\":\"Optional[Any]\",\"default_\":\"\",\"description\":\"planner_cls : Optional[Any]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/sk_agent.py:SkAgent:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"name\":\"SkSearchEngine\",\"package\":\"metagpt/tools/search_engine.py:SkSearchEngine\",\"attributes\":{\"search_engine\":{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:run"}, {"predicate": "has_class_method", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "metagpt/tools/search_engine.py:SkSearchEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"lineno\":16,\"end_lineno\":28,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkSearchEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/search_engine.py:SkSearchEngine", "target": "{\"name\":\"SkSearchEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"search_engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine:search_engine", "target": "{\"name\":\"search_engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"search_engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/search_engine.py:SkSearchEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"query\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"query: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(query: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"name\":\"Skill\",\"package\":\"metagpt/learn/skill_loader.py:Skill\",\"attributes\":{\"arguments\":{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]},\"description\":{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]},\"examples\":{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]},\"id\":{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"parameters\":{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]},\"returns\":{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]},\"x_prerequisite\":{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[\"Example\",\"Parameter\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:arguments"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:description"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:examples"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:id"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:name"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:parameters"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:returns"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Skill:x_prerequisite"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:ArgumentsParingAction:skill"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:SkillAction"}, {"predicate": "isCompositeOn", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Example"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:Skill", "target": "metagpt/learn/skill_loader.py:Parameter"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"lineno\":34,\"end_lineno\":50,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:Skill", "target": "{\"name\":\"Skill\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"arguments\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"description\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"examples\",\"visibility\":\"+\",\"value_type\":\"List[Example]\",\"default_value\":\"\"},{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"parameters\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,Parameter]]\",\"default_value\":\"\"},{\"name\":\"returns\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"x_prerequisite\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "?:Example"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:Skill", "target": "?:Parameter"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "{\"name\":\"arguments\",\"type_\":\"\",\"default_\":\"\",\"description\":\"arguments\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:arguments", "target": "class_method"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:description", "target": "{\"name\":\"description\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"description : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:examples", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:examples", "target": "{\"name\":\"examples\",\"type_\":\"List[Example]\",\"default_\":\"\",\"description\":\"examples : List[Example]\",\"compositions\":[\"Example\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:id", "target": "{\"name\":\"id\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"id : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:parameters", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:parameters", "target": "{\"name\":\"parameters\",\"type_\":\"Optional[Dict[str,Parameter]]\",\"default_\":\"\",\"description\":\"parameters : Optional[Dict[str, Parameter]]\",\"compositions\":[\"Parameter\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:returns", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:returns", "target": "{\"name\":\"returns\",\"type_\":\"\",\"default_\":\"\",\"description\":\"returns\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:Skill:x_prerequisite", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:Skill:x_prerequisite", "target": "{\"name\":\"x_prerequisite\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"x_prerequisite : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"name\":\"SkillAction\",\"package\":\"metagpt/actions/skill_action.py:SkillAction\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]},\"skill\":{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}},\"methods\":{\"find_and_call_function\":{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:args"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:skill"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function"}, {"predicate": "has_class_method", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/skill_action.py:SkillAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"lineno\":82,\"end_lineno\":112,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "{\"name\":\"SkillAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"Dict\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"},{\"name\":\"skill\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/skill_action.py:SkillAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:args", "target": "{\"name\":\"args\",\"type_\":\"Dict\",\"default_\":\"\",\"description\":\"args : Dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:skill", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:skill", "target": "{\"name\":\"skill\",\"type_\":\"\",\"default_\":\"\",\"description\":\"skill\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:find_and_call_function", "target": "{\"name\":\"find_and_call_function\",\"args\":[{\"name\":\"function_name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"function_name\",\"compositions\":[]},{\"name\":\"args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"args\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"find_and_call_function(function_name, args): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/skill_action.py:SkillAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/skill_action.py:SkillAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/management/skill_manager.py", "target": "metagpt/management/skill_manager.py:SkillManager"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"name\":\"SkillManager\",\"package\":\"metagpt/management/skill_manager.py:SkillManager\",\"attributes\":{},\"methods\":{\"add_skill\":{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]},\"del_skill\":{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]},\"generate_skill_desc\":{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]},\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"retrieve_skill\":{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]},\"retrieve_skill_scored\":{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Skill\"]}"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:add_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:del_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:get_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored"}, {"predicate": "isAggregateOf", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "?:Skill"}, {"predicate": "has_class_method", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "metagpt/management/skill_manager.py:SkillManager:__init__"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"lineno\":17,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/management/skill_manager.py:SkillManager", "target": "{\"name\":\"SkillManager\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:add_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:add_skill", "target": "{\"name\":\"add_skill\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"add_skill(skill: Skill)\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:del_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:del_skill", "target": "{\"name\":\"del_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"del_skill(skill_name: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:generate_skill_desc", "target": "{\"name\":\"generate_skill_desc\",\"args\":[{\"name\":\"skill\",\"type_\":\"Skill\",\"default_\":\"\",\"description\":\"skill: Skill\",\"compositions\":[\"Skill\"]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"generate_skill_desc(skill: Skill): str\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:get_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:get_skill", "target": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"skill_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skill_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(skill_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill", "target": "{\"name\":\"retrieve_skill\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[Skill]\",\"description\":\"list[Skill]\",\"compositions\":[\"Skill\"]},\"description\":\"retrieve_skill(desc: str, n_results: int): list[Skill]\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/management/skill_manager.py:SkillManager:retrieve_skill_scored", "target": "{\"name\":\"retrieve_skill_scored\",\"args\":[{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc: str\",\"compositions\":[]},{\"name\":\"n_results\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_results: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"retrieve_skill_scored(desc: str, n_results: int): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"name\":\"SkillsDeclaration\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration\",\"attributes\":{\"components\":{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]},\"entities\":{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]},\"skillapi\":{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}},\"methods\":{\"get_skill\":{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]},\"get_skill_list\":{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]},\"load\":{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}},\"compositions\":[\"Components\",\"Entity\"],\"aggregations\":[\"Skill\",\"Context\",\"SkillsDeclaration\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:components"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list"}, {"predicate": "has_class_method", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:load"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Skill"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Context"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:SkillsDeclaration"}, {"predicate": "isAggregateOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Path"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:Components"}, {"predicate": "is_composite_of", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "metagpt/learn/skill_loader.py:Entity"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"lineno\":62,\"end_lineno\":101,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SkillsDeclaration\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "{\"name\":\"SkillsDeclaration\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"components\",\"visibility\":\"+\",\"value_type\":\"Optional[Components]\",\"default_value\":\"\"},{\"name\":\"entities\",\"visibility\":\"+\",\"value_type\":\"Dict[str,Entity]\",\"default_value\":\"\"},{\"name\":\"skillapi\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Components"}, {"predicate": "isCompositeOf", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration", "target": "?:Entity"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:components", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:components", "target": "{\"name\":\"components\",\"type_\":\"Optional[Components]\",\"default_\":\"\",\"description\":\"components : Optional[Components]\",\"compositions\":[\"Components\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:entities", "target": "{\"name\":\"entities\",\"type_\":\"Dict[str,Entity]\",\"default_\":\"\",\"description\":\"entities : Dict[str, Entity]\",\"compositions\":[\"Entity\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:skillapi", "target": "{\"name\":\"skillapi\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"skillapi : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill", "target": "{\"name\":\"get_skill\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Skill\",\"description\":\"Skill\",\"compositions\":[\"Skill\"]},\"description\":\"get_skill(name, entity_name: str): Skill\",\"aggregations\":[\"Skill\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list", "target": "{\"name\":\"get_skill_list\",\"args\":[{\"name\":\"entity_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"entity_name: str\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"get_skill_list(entity_name: str, context: Context): Dict\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:load", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:load", "target": "{\"name\":\"load\",\"args\":[{\"name\":\"skill_yaml_file_name\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"skill_yaml_file_name: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'SkillsDeclaration'\",\"description\":\"'SkillsDeclaration'\",\"compositions\":[\"SkillsDeclaration\"]},\"description\":\"load(skill_yaml_file_name: Path): 'SkillsDeclaration'\",\"aggregations\":[\"SkillsDeclaration\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"name\":\"SparkLLM\",\"package\":\"metagpt/provider/spark_api.py:SparkLLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]},\"get_choice_text\":{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:config"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "metagpt/provider/spark_api.py:SparkLLM:__init__"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"lineno\":26,\"end_lineno\":43,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SparkLLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:SparkLLM", "target": "{\"name\":\"SparkLLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"timeout: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:SparkLLM:get_choice_text", "target": "{\"name\":\"get_choice_text\",\"args\":[{\"name\":\"rsp\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"rsp: dict\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_choice_text(rsp: dict): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"name\":\"Strategy\",\"package\":\"metagpt/strategy/tot_schema.py:Strategy\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot_schema.py:Strategy:name"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"lineno\":17,\"end_lineno\":20,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Strategy\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:Strategy", "target": "{\"name\":\"Strategy\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:Strategy:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:Strategy:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/subscription.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/subscription.py", "target": "metagpt/subscription.py:SubscriptionRunner"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"name\":\"SubscriptionRunner\",\"package\":\"metagpt/subscription.py:SubscriptionRunner\",\"attributes\":{\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"tasks\":{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]},\"subscribe\":{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Awaitable\",\"Message\",\"Role\",\"Callable\",\"AsyncGenerator\"]},\"unsubscribe\":{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}},\"compositions\":[\"Role\",\"asyncio.Task\"],\"aggregations\":[\"Awaitable\",\"Message\",\"Callable\",\"AsyncGenerator\"]}"}, {"predicate": "has_class_property", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:model_config"}, {"predicate": "has_class_property", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:tasks"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:run"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:subscribe"}, {"predicate": "has_class_method", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/subscription.py:SubscriptionRunner:unsubscribe"}, {"predicate": "isCompositeOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:asyncio.Task"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Awaitable"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Callable"}, {"predicate": "isAggregateOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:AsyncGenerator"}, {"predicate": "is_composite_of", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"lineno\":11,\"end_lineno\":100,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SubscriptionRunner\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "{\"name\":\"SubscriptionRunner\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"dict[Role,asyncio.Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/subscription.py:SubscriptionRunner", "target": "?:Role"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:tasks", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:tasks", "target": "{\"name\":\"tasks\",\"type_\":\"dict[Role,asyncio.Task]\",\"default_\":\"\",\"description\":\"tasks : dict[Role, asyncio.Task]\",\"compositions\":[\"Role\",\"asyncio.Task\"]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"raise_exception\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"raise_exception: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(raise_exception: bool)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:subscribe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:subscribe", "target": "{\"name\":\"subscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]},{\"name\":\"trigger\",\"type_\":\"AsyncGenerator[Message,None]\",\"default_\":\"\",\"description\":\"trigger: AsyncGenerator[Message, None]\",\"compositions\":[\"AsyncGenerator\",\"Message\"]},{\"name\":\"callback\",\"type_\":\"Callable[[Message],Awaitable[None]]\",\"default_\":\"\",\"description\":\"callback: Callable[[Message], Awaitable[None]]\",\"compositions\":[\"Awaitable\",\"Callable\",\"Message\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"subscribe(role: Role, trigger: AsyncGenerator[Message, None], callback: Callable[[Message], Awaitable[None]])\",\"aggregations\":[\"Awaitable\",\"Message\",\"Role\",\"Callable\",\"AsyncGenerator\"]}"}, {"predicate": "is", "source": "metagpt/subscription.py:SubscriptionRunner:unsubscribe", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/subscription.py:SubscriptionRunner:unsubscribe", "target": "{\"name\":\"unsubscribe\",\"args\":[{\"name\":\"role\",\"type_\":\"Role\",\"default_\":\"\",\"description\":\"role: Role\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"unsubscribe(role: Role)\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/summarize_code.py", "target": "metagpt/actions/summarize_code.py:SummarizeCode"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"name\":\"SummarizeCode\",\"package\":\"metagpt/actions/summarize_code.py:SummarizeCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]},\"summarize_code\":{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"lineno\":90,\"end_lineno\":119,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SummarizeCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/summarize_code.py:SummarizeCode", "target": "{\"name\":\"SummarizeCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/summarize_code.py:SummarizeCode:summarize_code", "target": "{\"name\":\"summarize_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"summarize_code(prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:SystemMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:SystemMessage", "target": "{\"name\":\"SystemMessage\",\"package\":\"metagpt/schema.py:SystemMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:SystemMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:SystemMessage", "target": "metagpt/schema.py:SystemMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:SystemMessage", "target": "{\"lineno\":316,\"end_lineno\":322,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SystemMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:SystemMessage", "target": "{\"name\":\"SystemMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/talk_action.py", "target": "metagpt/actions/talk_action.py:TalkAction"}, {"predicate": "has_class", "source": "metagpt/actions/talk_action.py", "target": "metagpt/actions/talk_action.py:TalkActionPrompt"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"name\":\"TalkAction\",\"package\":\"metagpt/actions/talk_action.py:TalkAction\",\"attributes\":{\"aask_args\":{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]},\"agent_description\":{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]},\"history_summary\":{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]},\"knowledge\":{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]},\"prompt\":{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]},\"prompt_gpt4\":{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[\"Message\"],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:aask_args"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:agent_description"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:history_summary"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:knowledge"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:language"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:prompt"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:rsp"}, {"predicate": "has_class_method", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/talk_action.py:TalkAction:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "metagpt/schema.py:Message"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"lineno\":17,\"end_lineno\":97,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkAction\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "{\"name\":\"TalkAction\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"aask_args\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"agent_description\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"history_summary\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"knowledge\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"prompt_gpt4\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[Message]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/talk_action.py:TalkAction", "target": "?:Message"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "{\"name\":\"aask_args\",\"type_\":\"\",\"default_\":\"\",\"description\":\"aask_args\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:aask_args", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "{\"name\":\"agent_description\",\"type_\":\"\",\"default_\":\"\",\"description\":\"agent_description\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:agent_description", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:history_summary", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:history_summary", "target": "{\"name\":\"history_summary\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"history_summary : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"i_context : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:knowledge", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:knowledge", "target": "{\"name\":\"knowledge\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"knowledge : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "{\"name\":\"language\",\"type_\":\"\",\"default_\":\"\",\"description\":\"language\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:language", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "{\"name\":\"prompt_gpt4\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_gpt4\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:prompt_gpt4", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[Message]\",\"default_\":\"\",\"description\":\"rsp : Optional[Message]\",\"compositions\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkAction:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkAction:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"run(with_message): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"name\":\"TalkActionPrompt\",\"package\":\"metagpt/actions/talk_action.py:TalkActionPrompt\",\"attributes\":{\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"FORMATION_LOOSE\":{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION"}, {"predicate": "has_class_property", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"lineno\":100,\"end_lineno\":169,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TalkActionPrompt\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/talk_action.py:TalkActionPrompt", "target": "{\"name\":\"TalkActionPrompt\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION_LOOSE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION", "target": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/talk_action.py:TalkActionPrompt:FORMATION_LOOSE", "target": "{\"name\":\"FORMATION_LOOSE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION_LOOSE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task", "target": "{\"name\":\"Task\",\"package\":\"metagpt/actions/action_node.py:Task\",\"attributes\":{\"dependent_task_ids\":{\"name\":\"dependent_task_ids\",\"type_\":\"List[int]\",\"default_\":\"\",\"description\":\"dependent_task_ids : List[int]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"task_id\":{\"name\":\"task_id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"task_id : int\",\"compositions\":[]},\"tool\":{\"name\":\"tool\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Task", "target": "metagpt/actions/action_node.py:Task:dependent_task_ids"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Task", "target": "metagpt/actions/action_node.py:Task:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Task", "target": "metagpt/actions/action_node.py:Task:task_id"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Task", "target": "metagpt/actions/action_node.py:Task:tool"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:Task", "target": "{\"lineno\":673,\"end_lineno\":677,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Task\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:Task", "target": "{\"name\":\"Task\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"dependent_task_ids\",\"visibility\":\"+\",\"value_type\":\"List[int]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"task_id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"tool\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task:dependent_task_ids", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task:dependent_task_ids", "target": "{\"name\":\"dependent_task_ids\",\"type_\":\"List[int]\",\"default_\":\"\",\"description\":\"dependent_task_ids : List[int]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task:task_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task:task_id", "target": "{\"name\":\"task_id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"task_id : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Task:tool", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Task:tool", "target": "{\"name\":\"tool\",\"type_\":\"\",\"default_\":\"\",\"description\":\"tool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Tasks", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Tasks", "target": "{\"name\":\"Tasks\",\"package\":\"metagpt/actions/action_node.py:Tasks\",\"attributes\":{\"tasks\":{\"name\":\"tasks\",\"type_\":\"List[Task]\",\"default_\":\"\",\"description\":\"tasks : List[Task]\",\"compositions\":[\"Task\"]}},\"methods\":{},\"compositions\":[\"Task\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:Tasks", "target": "metagpt/actions/action_node.py:Tasks:tasks"}, {"predicate": "is_composite_of", "source": "metagpt/actions/action_node.py:Tasks", "target": "metagpt/actions/action_node.py:Task"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:Tasks", "target": "{\"lineno\":680,\"end_lineno\":681,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Tasks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:Tasks", "target": "{\"name\":\"Tasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tasks\",\"visibility\":\"+\",\"value_type\":\"List[Task]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:Tasks", "target": "?:Task"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:Tasks:tasks", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:Tasks:tasks", "target": "{\"name\":\"tasks\",\"type_\":\"List[Task]\",\"default_\":\"\",\"description\":\"tasks : List[Task]\",\"compositions\":[\"Task\"]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/teacher.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/teacher.py", "target": "metagpt/roles/teacher.py:Teacher"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"name\":\"Teacher\",\"package\":\"metagpt/roles/teacher.py:Teacher\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"course_title\":{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}},\"methods\":{\"new_file_name\":{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]},\"save\":{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:constraints"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:course_title"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:desc"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:profile"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:new_file_name"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:save"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:_think"}, {"predicate": "has_class_method", "source": "metagpt/roles/teacher.py:Teacher", "target": "metagpt/roles/teacher.py:Teacher:_react"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"lineno\":22,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Teacher\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/teacher.py:Teacher", "target": "{\"name\":\"Teacher\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"course_title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "{\"name\":\"course_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"course_title\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:course_title", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:new_file_name", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:new_file_name", "target": "{\"name\":\"new_file_name\",\"args\":[{\"name\":\"lesson_title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lesson_title\",\"compositions\":[]},{\"name\":\"ext\",\"type_\":\"\",\"default_\":\"\",\"description\":\"ext\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"new_file_name(lesson_title, ext)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/teacher.py:Teacher:save", "target": "{\"name\":\"save\",\"args\":[{\"name\":\"content\",\"type_\":\"\",\"default_\":\"\",\"description\":\"content\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"save(content)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_teaching_plan.py", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock"}, {"predicate": "has_class", "source": "metagpt/actions/write_teaching_plan.py", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"name\":\"TeachingPlanBlock\",\"package\":\"metagpt/actions/write_teaching_plan.py:TeachingPlanBlock\",\"attributes\":{\"COURSE_TITLE\":{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]},\"DATA_BEGIN_TAG\":{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]},\"DATA_END_TAG\":{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]},\"FORMATION\":{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]},\"PROMPT_TEMPLATE\":{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]},\"PROMPT_TITLE_TEMPLATE\":{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]},\"TOPICS\":{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]},\"TOPIC_STATEMENTS\":{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"lineno\":92,\"end_lineno\":191,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TeachingPlanBlock\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock", "target": "{\"name\":\"TeachingPlanBlock\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"COURSE_TITLE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_BEGIN_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"DATA_END_TAG\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"FORMATION\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"TOPICS\",\"visibility\":\"+\",\"value_type\":\"list\",\"default_value\":\"\"},{\"name\":\"TOPIC_STATEMENTS\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:COURSE_TITLE", "target": "{\"name\":\"COURSE_TITLE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"COURSE_TITLE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_BEGIN_TAG", "target": "{\"name\":\"DATA_BEGIN_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_BEGIN_TAG : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:DATA_END_TAG", "target": "{\"name\":\"DATA_END_TAG\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"DATA_END_TAG : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:FORMATION", "target": "{\"name\":\"FORMATION\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"FORMATION : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TEMPLATE", "target": "{\"name\":\"PROMPT_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TEMPLATE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:PROMPT_TITLE_TEMPLATE", "target": "{\"name\":\"PROMPT_TITLE_TEMPLATE\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"PROMPT_TITLE_TEMPLATE : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPICS", "target": "{\"name\":\"TOPICS\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"TOPICS : list\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:TeachingPlanBlock:TOPIC_STATEMENTS", "target": "{\"name\":\"TOPIC_STATEMENTS\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"TOPIC_STATEMENTS : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/team.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/team.py", "target": "metagpt/team.py:Team"}, {"predicate": "is", "source": "metagpt/team.py:Team", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team", "target": "{\"name\":\"Team\",\"package\":\"metagpt/team.py:Team\",\"attributes\":{\"cost_manager\":{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]},\"env\":{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]},\"idea\":{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]},\"investment\":{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}},\"methods\":{\"deserialize\":{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]},\"hire\":{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]},\"invest\":{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]},\"run_project\":{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]},\"serialize\":{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]},\"start_project\":{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}},\"compositions\":[\"Environment\"],\"aggregations\":[\"Team\",\"Context\",\"Path\",\"Role\"]}"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:cost_manager"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:env"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:idea"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:investment"}, {"predicate": "has_class_property", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:model_config"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:deserialize"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:hire"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:invest"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:run"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:run_project"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:serialize"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:start_project"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Team"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Context"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/team.py:Team", "target": "?:Role"}, {"predicate": "is_composite_of", "source": "metagpt/team.py:Team", "target": "metagpt/environment.py:Environment"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:__init__"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:_check_balance"}, {"predicate": "has_class_method", "source": "metagpt/team.py:Team", "target": "metagpt/team.py:Team:_save"}, {"predicate": "has_page_info", "source": "metagpt/team.py:Team", "target": "{\"lineno\":32,\"end_lineno\":136,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Team\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/team.py:Team", "target": "{\"name\":\"Team\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"cost_manager\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"env\",\"visibility\":\"+\",\"value_type\":\"Optional[Environment]\",\"default_value\":\"\"},{\"name\":\"idea\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"investment\",\"visibility\":\"+\",\"value_type\":\"float\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/team.py:Team", "target": "?:Environment"}, {"predicate": "has_class_use_case", "source": "metagpt/team.py:Team", "target": "{\"description\":\"The source code defines a Team class that represents a team of agents working on a project. The team can hire roles, invest in the project, run and start a project, and run the company for a specified number of rounds.\",\"use_cases\":[{\"description\":\"Hire roles to cooperate\",\"inputs\":[\"roles\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team hires roles to cooperate on the project.\"],\"reason\":\"When the team needs to add new roles to the project.\"},{\"description\":\"Invest company\",\"inputs\":[\"investment\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team invests in the company.\",\"If the investment exceeds the maximum budget, a NoMoneyException is raised.\"],\"reason\":\"When the team needs to invest in the company.\"},{\"description\":\"Run a project from publishing user requirement\",\"inputs\":[\"idea\",\"send_to\"],\"outputs\":[],\"actors\":[\"Team\"],\"steps\":[\"The team runs a project based on the user's requirement.\",\"The idea is published to the team's environment for further processing.\"],\"reason\":\"When the team needs to start a new project based on user requirements.\"},{\"description\":\"Run company until target round or no money\",\"inputs\":[\"n_round\",\"idea\",\"send_to\",\"auto_archive\"],\"outputs\":[\"history\"],\"actors\":[\"Team\"],\"steps\":[\"The team runs the company for a specified number of rounds.\",\"If an idea is provided, it is used to run a project.\",\"The company is run until the target round is reached or there is no money left.\",\"The environment is archived if auto_archive is set to true.\"],\"reason\":\"When the team needs to run the company for a specified number of rounds.\"}],\"relationship\":[\"The 'Hire roles to cooperate' use case is related to the 'Invest company' use case as hiring roles may require investment.\",\"The 'Run a project from publishing user requirement' use case is related to the 'Run company until target round or no money' use case as running a project is part of running the company.\"]}"}, {"predicate": "has_sequence_view", "source": "metagpt/team.py:Team", "target": "\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n\n Note right of Team: The 'Hire roles to cooperate' use case is related to the 'Invest company' use case as hiring roles may require investment.\n Note right of Team: The 'Run a project from publishing user requirement' use case is related to the 'Run company until target round or no money' use case as running a project is part of running the company.\n"}, {"predicate": "is", "source": "metagpt/team.py:Team:cost_manager", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:cost_manager", "target": "{\"name\":\"cost_manager\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cost_manager\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:cost_manager", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:env", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:env", "target": "{\"name\":\"env\",\"type_\":\"Optional[Environment]\",\"default_\":\"\",\"description\":\"env : Optional[Environment]\",\"compositions\":[\"Environment\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:idea", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:idea", "target": "{\"name\":\"idea\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"idea : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:investment", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:investment", "target": "{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment : float\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:deserialize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:deserialize", "target": "{\"name\":\"deserialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"'Team'\",\"description\":\"'Team'\",\"compositions\":[\"Team\"]},\"description\":\"deserialize(stg_path: Path, context: Context): 'Team'\",\"aggregations\":[\"Team\",\"Context\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:hire", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:hire", "target": "{\"name\":\"hire\",\"args\":[{\"name\":\"roles\",\"type_\":\"list[Role]\",\"default_\":\"\",\"description\":\"roles: list[Role]\",\"compositions\":[\"Role\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"hire(roles: list[Role])\",\"aggregations\":[\"Role\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:invest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:invest", "target": "{\"name\":\"invest\",\"args\":[{\"name\":\"investment\",\"type_\":\"float\",\"default_\":\"\",\"description\":\"investment: float\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"invest(investment: float)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"n_round\",\"type_\":\"\",\"default_\":\"\",\"description\":\"n_round\",\"compositions\":[]},{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"\",\"default_\":\"\",\"description\":\"send_to\",\"compositions\":[]},{\"name\":\"auto_archive\",\"type_\":\"\",\"default_\":\"\",\"description\":\"auto_archive\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(n_round, idea, send_to, auto_archive)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:run_project", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:run_project", "target": "{\"name\":\"run_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:serialize", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:serialize", "target": "{\"name\":\"serialize\",\"args\":[{\"name\":\"stg_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"stg_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"serialize(stg_path: Path)\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/team.py:Team:start_project", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/team.py:Team:start_project", "target": "{\"name\":\"start_project\",\"args\":[{\"name\":\"idea\",\"type_\":\"\",\"default_\":\"\",\"description\":\"idea\",\"compositions\":[]},{\"name\":\"send_to\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"send_to: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"start_project(idea, send_to: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext", "target": "{\"name\":\"TestingContext\",\"package\":\"metagpt/schema.py:TestingContext\",\"attributes\":{\"code_doc\":{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]},\"filename\":{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]},\"test_doc\":{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}},\"methods\":{},\"compositions\":[\"Document\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:code_doc"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:filename"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:TestingContext:test_doc"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:TestingContext", "target": "?:Document"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:TestingContext", "target": "metagpt/schema.py:BaseContext"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:TestingContext", "target": "{\"lineno\":425,\"end_lineno\":428,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TestingContext\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:TestingContext", "target": "{\"name\":\"TestingContext\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"code_doc\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"filename\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"test_doc\",\"visibility\":\"+\",\"value_type\":\"Optional[Document]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/schema.py:TestingContext", "target": "{\"description\":\"This source code defines a TestingContext class that contains a filename, code document, and an optional test document. The TestingContext is a subclass of BaseContext.\",\"use_cases\":[{\"description\":\"Create a new testing context\",\"inputs\":[\"filename\",\"code_doc\"],\"outputs\":[\"testing_context\"],\"actors\":[\"Tester\"],\"steps\":[\"The Tester provides a filename and a code document to the system\",\"The system creates a new TestingContext object with the provided filename and code document\",\"The system returns the created TestingContext object\"],\"reason\":\"When a Tester needs to create a new testing context for a specific code document\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/schema.py:TestingContext", "target": "\nsequenceDiagram\n participant Tester\n participant System\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:code_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:code_doc", "target": "{\"name\":\"code_doc\",\"type_\":\"\",\"default_\":\"\",\"description\":\"code_doc\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:filename", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:filename", "target": "{\"name\":\"filename\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"filename : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:TestingContext:test_doc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:TestingContext:test_doc", "target": "{\"name\":\"test_doc\",\"type_\":\"Optional[Document]\",\"default_\":\"\",\"description\":\"test_doc : Optional[Document]\",\"compositions\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"name\":\"ThoughtNode\",\"package\":\"metagpt/strategy/base.py:ThoughtNode\",\"attributes\":{\"id\":{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"valid_status\":{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]},\"value\":{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}},\"methods\":{\"update_valid_status\":{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]},\"update_value\":{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:id"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:name"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:valid_status"}, {"predicate": "has_class_property", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:value"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:update_valid_status"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "metagpt/strategy/base.py:ThoughtNode:update_value"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"lineno\":34,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtNode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:ThoughtNode", "target": "{\"name\":\"ThoughtNode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"id\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"valid_status\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"},{\"name\":\"value\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:id", "target": "{\"name\":\"id\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"id : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:valid_status", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:valid_status", "target": "{\"name\":\"valid_status\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"valid_status : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:value", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:value", "target": "{\"name\":\"value\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"value : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:update_valid_status", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:update_valid_status", "target": "{\"name\":\"update_valid_status\",\"args\":[{\"name\":\"status\",\"type_\":\"\",\"default_\":\"\",\"description\":\"status\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_valid_status(status): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtNode:update_value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtNode:update_value", "target": "{\"name\":\"update_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"update_value(value): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"name\":\"ThoughtSolverBase\",\"package\":\"metagpt/strategy/tot.py:ThoughtSolverBase\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model_config\":{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]},\"thought_tree\":{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}},\"methods\":{\"evaluate_node\":{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]},\"generate_thoughts\":{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"select_nodes\":{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]},\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]},\"update_solution\":{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}},\"compositions\":[\"ThoughtTree\"],\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:llm"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:solve"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "?:ThoughtNode"}, {"predicate": "is_composite_of", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/base.py:ThoughtTree"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"lineno\":33,\"end_lineno\":123,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverBase\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "{\"name\":\"ThoughtSolverBase\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model_config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"thought_tree\",\"visibility\":\"+\",\"value_type\":\"Optional[ThoughtTree]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot.py:ThoughtSolverBase", "target": "?:ThoughtTree"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:model_config", "target": "{\"name\":\"model_config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model_config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:thought_tree", "target": "{\"name\":\"thought_tree\",\"type_\":\"Optional[ThoughtTree]\",\"default_\":\"\",\"description\":\"thought_tree : Optional[ThoughtTree]\",\"compositions\":[\"ThoughtTree\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:evaluate_node", "target": "{\"name\":\"evaluate_node\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"parent_value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parent_value\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"evaluate_node(node, parent_value): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:generate_thoughts", "target": "{\"name\":\"generate_thoughts\",\"args\":[{\"name\":\"current_state\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_state\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"current_node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"generate_thoughts(current_state, current_node): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:select_nodes", "target": "{\"name\":\"select_nodes\",\"args\":[{\"name\":\"thought_nodes\",\"type_\":\"List[ThoughtNode]\",\"default_\":\"\",\"description\":\"thought_nodes: List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"select_nodes(thought_nodes: List[ThoughtNode]): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve (init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:update_solution", "target": "{\"name\":\"update_solution\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_solution()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"name\":\"ThoughtSolverConfig\",\"package\":\"metagpt/strategy/tot_schema.py:ThoughtSolverConfig\",\"attributes\":{\"evaluator\":{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]},\"max_steps\":{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]},\"method_select\":{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]},\"n_generate_sample\":{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]},\"n_select_sample\":{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]},\"n_solution_sample\":{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]},\"parser\":{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:ThoughtSolverBase"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:ThoughtSolverBase:config"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:TreeofThought"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "metagpt/strategy/tot.py:TreeofThought:config"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"lineno\":23,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtSolverConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig", "target": "{\"name\":\"ThoughtSolverConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"evaluator\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"max_steps\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"method_select\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"n_generate_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_select_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"n_solution_sample\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"parser\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:evaluator", "target": "{\"name\":\"evaluator\",\"type_\":\"\",\"default_\":\"\",\"description\":\"evaluator\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:max_steps", "target": "{\"name\":\"max_steps\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"max_steps : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:method_select", "target": "{\"name\":\"method_select\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method_select : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_generate_sample", "target": "{\"name\":\"n_generate_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_generate_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_select_sample", "target": "{\"name\":\"n_select_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_select_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:n_solution_sample", "target": "{\"name\":\"n_solution_sample\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"n_solution_sample : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot_schema.py:ThoughtSolverConfig:parser", "target": "{\"name\":\"parser\",\"type_\":\"\",\"default_\":\"\",\"description\":\"parser\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"name\":\"ThoughtTree\",\"package\":\"metagpt/strategy/base.py:ThoughtTree\",\"attributes\":{\"all_nodes\":{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}},\"methods\":{\"parse_node_path\":{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]},\"show\":{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]},\"update_node\":{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}},\"compositions\":[],\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:all_nodes"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:parse_node_path"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:show"}, {"predicate": "has_class_method", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/base.py:ThoughtTree:update_node"}, {"predicate": "isAggregateOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "?:ThoughtNode"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:BFSSolver"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:BFSSolver:thought_tree"}, {"predicate": "isCompositeOf", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:DFSSolver"}, {"predicate": "isCompositeOn", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "metagpt/strategy/tot.py:DFSSolver:thought_tree"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"lineno\":51,\"end_lineno\":109,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ThoughtTree\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/base.py:ThoughtTree", "target": "{\"name\":\"ThoughtTree\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"all_nodes\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "{\"name\":\"all_nodes\",\"type_\":\"\",\"default_\":\"\",\"description\":\"all_nodes\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:all_nodes", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:parse_node_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:parse_node_path", "target": "{\"name\":\"parse_node_path\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]}],\"return_args\":{\"type_\":\"List[str]\",\"description\":\"List[str]\",\"compositions\":[]},\"description\":\"parse_node_path(node): List[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:show", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:show", "target": "{\"name\":\"show\",\"args\":[],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"show(): None\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/base.py:ThoughtTree:update_node", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/base.py:ThoughtTree:update_node", "target": "{\"name\":\"update_node\",\"args\":[{\"name\":\"thought\",\"type_\":\"List[dict]\",\"default_\":\"\",\"description\":\"thought: List[dict]\",\"compositions\":[]},{\"name\":\"current_node\",\"type_\":\"ThoughtNode\",\"default_\":\"\",\"description\":\"current_node: ThoughtNode\",\"compositions\":[\"ThoughtNode\"]}],\"return_args\":{\"type_\":\"List[ThoughtNode]\",\"description\":\"List[ThoughtNode]\",\"compositions\":[\"ThoughtNode\"]},\"description\":\"update_node(thought: List[dict], current_node: ThoughtNode): List[ThoughtNode]\",\"aggregations\":[\"ThoughtNode\"]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"name\":\"TokenCostManager\",\"package\":\"metagpt/utils/cost_manager.py:TokenCostManager\",\"attributes\":{\"total_completion_tokens\":{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]},\"total_prompt_tokens\":{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}},\"methods\":{\"update_cost\":{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens"}, {"predicate": "has_class_property", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens"}, {"predicate": "has_class_method", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/utils/cost_manager.py:CostManager"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/ollama_api.py:OllamaLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/ollama_api.py:OllamaLLM:_cost_manager"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLM"}, {"predicate": "isCompositeOn", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "metagpt/provider/open_llm_api.py:OpenLLM:_cost_manager"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"lineno\":85,\"end_lineno\":99,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TokenCostManager\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/cost_manager.py:TokenCostManager", "target": "{\"name\":\"TokenCostManager\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"total_completion_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"total_prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_completion_tokens", "target": "{\"name\":\"total_completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_completion_tokens\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:total_prompt_tokens", "target": "{\"name\":\"total_prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"total_prompt_tokens\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/cost_manager.py:TokenCostManager:update_cost", "target": "{\"name\":\"update_cost\",\"args\":[{\"name\":\"prompt_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt_tokens\",\"compositions\":[]},{\"name\":\"completion_tokens\",\"type_\":\"\",\"default_\":\"\",\"description\":\"completion_tokens\",\"compositions\":[]},{\"name\":\"model\",\"type_\":\"\",\"default_\":\"\",\"description\":\"model\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"update_cost(prompt_tokens, completion_tokens, model)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ToolUse", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ToolUse", "target": "{\"name\":\"ToolUse\",\"package\":\"metagpt/actions/action_node.py:ToolUse\",\"attributes\":{\"tool_name\":{\"name\":\"tool_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tool_name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/action_node.py:ToolUse", "target": "metagpt/actions/action_node.py:ToolUse:tool_name"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/action_node.py:ToolUse", "target": "metagpt/actions/action_node.py:Task"}, {"predicate": "isCompositeOn", "source": "metagpt/actions/action_node.py:ToolUse", "target": "metagpt/actions/action_node.py:Task:tool"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ToolUse", "target": "{\"lineno\":669,\"end_lineno\":670,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ToolUse\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/action_node.py:ToolUse", "target": "{\"name\":\"ToolUse\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"tool_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ToolUse:tool_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/action_node.py:ToolUse:tool_name", "target": "{\"name\":\"tool_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tool_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/translator.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/translator.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/translator.py", "target": "metagpt/tools/translator.py:Translator"}, {"predicate": "is", "source": "metagpt/tools/translator.py:Translator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/translator.py:Translator", "target": "{\"name\":\"Translator\",\"package\":\"metagpt/tools/translator.py:Translator\",\"attributes\":{},\"methods\":{\"translate_prompt\":{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/translator.py:Translator", "target": "metagpt/tools/translator.py:Translator:translate_prompt"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:Translator", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Translator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/translator.py:Translator", "target": "{\"name\":\"Translator\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/translator.py:Translator:translate_prompt", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/translator.py:Translator:translate_prompt", "target": "{\"name\":\"translate_prompt\",\"args\":[{\"name\":\"original\",\"type_\":\"\",\"default_\":\"\",\"description\":\"original\",\"compositions\":[]},{\"name\":\"lang\",\"type_\":\"\",\"default_\":\"\",\"description\":\"lang\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"translate_prompt(original, lang)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"name\":\"TreeofThought\",\"package\":\"metagpt/strategy/tot.py:TreeofThought\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"solver\":{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]},\"strategy\":{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}},\"methods\":{\"solve\":{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:config"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:solver"}, {"predicate": "has_class_property", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:strategy"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:solve"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:__init__"}, {"predicate": "has_class_method", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"lineno\":235,\"end_lineno\":277,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TreeofThought\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/strategy/tot.py:TreeofThought", "target": "{\"name\":\"TreeofThought\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"solver\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"strategy\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:solver", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:solver", "target": "{\"name\":\"solver\",\"type_\":\"\",\"default_\":\"\",\"description\":\"solver\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:strategy", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:strategy", "target": "{\"name\":\"strategy\",\"type_\":\"\",\"default_\":\"\",\"description\":\"strategy\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:solve", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/strategy/tot.py:TreeofThought:solve", "target": "{\"name\":\"solve\",\"args\":[{\"name\":\"init_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"init_prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"solve(init_prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/roles/tutorial_assistant.py", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"name\":\"TutorialAssistant\",\"package\":\"metagpt/roles/tutorial_assistant.py:TutorialAssistant\",\"attributes\":{\"constraints\":{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]},\"goal\":{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"main_title\":{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"profile\":{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]},\"total_content\":{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}},\"methods\":{\"react\":{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic"}, {"predicate": "has_class_property", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react"}, {"predicate": "isAggregateOf", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory"}, {"predicate": "has_class_method", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"lineno\":20,\"end_lineno\":94,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"TutorialAssistant\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant", "target": "{\"name\":\"TutorialAssistant\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"constraints\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"goal\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"main_title\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"profile\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"total_content\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:constraints", "target": "{\"name\":\"constraints\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"constraints : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:goal", "target": "{\"name\":\"goal\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"goal : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:main_title", "target": "{\"name\":\"main_title\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"main_title : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:profile", "target": "{\"name\":\"profile\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"profile : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:total_content", "target": "{\"name\":\"total_content\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"total_content : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:react", "target": "{\"name\":\"react\",\"args\":[],\"return_args\":{\"type_\":\"Message\",\"description\":\"Message\",\"compositions\":[\"Message\"]},\"description\":\"react(): Message\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"name\":\"UMLClassAttribute\",\"package\":\"metagpt/schema.py:UMLClassAttribute\",\"attributes\":{\"default_value\":{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]},\"value_type\":{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:default_value"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:value_type"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassAttribute:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassAttribute", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"lineno\":516,\"end_lineno\":536,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassAttribute\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassAttribute", "target": "{\"name\":\"UMLClassAttribute\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"default_value\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"value_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:default_value", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:default_value", "target": "{\"name\":\"default_value\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"default_value : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:value_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:value_type", "target": "{\"name\":\"value_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"value_type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassAttribute:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassAttribute:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"name\":\"UMLClassMeta\",\"package\":\"metagpt/schema.py:UMLClassMeta\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"visibility\":{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}},\"methods\":{\"name_to_visibility\":{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:name"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:visibility"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassMeta", "target": "metagpt/schema.py:UMLClassMeta:name_to_visibility"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"lineno\":501,\"end_lineno\":513,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMeta\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassMeta", "target": "{\"name\":\"UMLClassMeta\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"visibility\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:visibility", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:visibility", "target": "{\"name\":\"visibility\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"visibility : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMeta:name_to_visibility", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMeta:name_to_visibility", "target": "{\"name\":\"name_to_visibility\",\"args\":[{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"name_to_visibility(name: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"name\":\"UMLClassMethod\",\"package\":\"metagpt/schema.py:UMLClassMethod\",\"attributes\":{\"args\":{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"return_type\":{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}},\"compositions\":[\"UMLClassAttribute\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:args"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:return_type"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMethod:get_mermaid"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassMethod", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"lineno\":539,\"end_lineno\":553,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassMethod\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassMethod", "target": "{\"name\":\"UMLClassMethod\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"args\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"return_type\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassMethod", "target": "?:UMLClassAttribute"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:args", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:args", "target": "{\"name\":\"args\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"args : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:return_type", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:return_type", "target": "{\"name\":\"return_type\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"return_type : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassMethod:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassMethod:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView", "target": "{\"name\":\"UMLClassView\",\"package\":\"metagpt/schema.py:UMLClassView\",\"attributes\":{\"attributes\":{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]},\"methods\":{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]},\"load_dot_class_info\":{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}},\"compositions\":[\"UMLClassAttribute\",\"UMLClassMethod\"],\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:attributes"}, {"predicate": "has_class_property", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:methods"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:get_mermaid"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassView:load_dot_class_info"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassView"}, {"predicate": "isAggregateOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:DotClassInfo"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassMeta"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassAttribute"}, {"predicate": "is_composite_of", "source": "metagpt/schema.py:UMLClassView", "target": "metagpt/schema.py:UMLClassMethod"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UMLClassView", "target": "{\"lineno\":556,\"end_lineno\":583,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UMLClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UMLClassView", "target": "{\"name\":\"UMLClassView\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"attributes\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassAttribute]\",\"default_value\":\"\"},{\"name\":\"methods\",\"visibility\":\"+\",\"value_type\":\"List[UMLClassMethod]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassAttribute"}, {"predicate": "isCompositeOf", "source": "metagpt/schema.py:UMLClassView", "target": "?:UMLClassMethod"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:attributes", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:attributes", "target": "{\"name\":\"attributes\",\"type_\":\"List[UMLClassAttribute]\",\"default_\":\"\",\"description\":\"attributes : List[UMLClassAttribute]\",\"compositions\":[\"UMLClassAttribute\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:methods", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:methods", "target": "{\"name\":\"methods\",\"type_\":\"List[UMLClassMethod]\",\"default_\":\"\",\"description\":\"methods : List[UMLClassMethod]\",\"compositions\":[\"UMLClassMethod\"]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"\",\"default_\":\"\",\"description\":\"align\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid(align): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UMLClassView:load_dot_class_info", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UMLClassView:load_dot_class_info", "target": "{\"name\":\"load_dot_class_info\",\"args\":[{\"name\":\"dot_class_info\",\"type_\":\"DotClassInfo\",\"default_\":\"\",\"description\":\"dot_class_info: DotClassInfo\",\"compositions\":[\"DotClassInfo\"]}],\"return_args\":{\"type_\":\"UMLClassView\",\"description\":\"UMLClassView\",\"compositions\":[\"UMLClassView\"]},\"description\":\"load_dot_class_info(dot_class_info: DotClassInfo): UMLClassView\",\"aggregations\":[\"UMLClassView\",\"DotClassInfo\"]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/ut_writer.py", "target": "metagpt/tools/ut_writer.py:UTGenerator"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"name\":\"UTGenerator\",\"package\":\"metagpt/tools/ut_writer.py:UTGenerator\",\"attributes\":{\"chatgpt_method\":{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]},\"icl_sample\":{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]},\"questions_path\":{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]},\"swagger_file\":{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]},\"template_prefix\":{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]},\"ut_py_path\":{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}},\"methods\":{\"ask_gpt_and_save\":{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]},\"build_api_doc\":{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]},\"build_object_properties\":{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]},\"generate_ut\":{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]},\"get_swagger_json\":{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]},\"get_tags_mapping\":{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]},\"gpt_msgs_to_code\":{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]},\"para_to_str\":{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:questions_path"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix"}, {"predicate": "has_class_property", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:__init__"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str"}, {"predicate": "has_class_method", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"lineno\":104,\"end_lineno\":287,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UTGenerator\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/ut_writer.py:UTGenerator", "target": "{\"name\":\"UTGenerator\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"chatgpt_method\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"icl_sample\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"questions_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"swagger_file\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"template_prefix\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"ut_py_path\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:chatgpt_method", "target": "{\"name\":\"chatgpt_method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"chatgpt_method : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:icl_sample", "target": "{\"name\":\"icl_sample\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"icl_sample : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:questions_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:questions_path", "target": "{\"name\":\"questions_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"questions_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:swagger_file", "target": "{\"name\":\"swagger_file\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"swagger_file : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:template_prefix", "target": "{\"name\":\"template_prefix\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"template_prefix : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:ut_py_path", "target": "{\"name\":\"ut_py_path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"ut_py_path : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:ask_gpt_and_save", "target": "{\"name\":\"ask_gpt_and_save\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"tag\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"tag: str\",\"compositions\":[]},{\"name\":\"fname\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"fname: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"ask_gpt_and_save(question: str, tag: str, fname: str)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_api_doc", "target": "{\"name\":\"build_api_doc\",\"args\":[{\"name\":\"node\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"node: dict\",\"compositions\":[]},{\"name\":\"path\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"path: str\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_api_doc(node: dict, path: str, method: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:build_object_properties", "target": "{\"name\":\"build_object_properties\",\"args\":[{\"name\":\"node\",\"type_\":\"\",\"default_\":\"\",\"description\":\"node\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]},{\"name\":\"level\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"level: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"build_object_properties(node, prop_object_required, level: int): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:generate_ut", "target": "{\"name\":\"generate_ut\",\"args\":[{\"name\":\"include_tags\",\"type_\":\"\",\"default_\":\"\",\"description\":\"include_tags\",\"compositions\":[]}],\"return_args\":{\"type_\":\"bool\",\"description\":\"bool\",\"compositions\":[]},\"description\":\"generate_ut(include_tags): bool\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_swagger_json", "target": "{\"name\":\"get_swagger_json\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_swagger_json(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:get_tags_mapping", "target": "{\"name\":\"get_tags_mapping\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"get_tags_mapping(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:gpt_msgs_to_code", "target": "{\"name\":\"gpt_msgs_to_code\",\"args\":[{\"name\":\"messages\",\"type_\":\"list\",\"default_\":\"\",\"description\":\"messages: list\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"gpt_msgs_to_code(messages: list): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/ut_writer.py:UTGenerator:para_to_str", "target": "{\"name\":\"para_to_str\",\"args\":[{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},{\"name\":\"prop\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop\",\"compositions\":[]},{\"name\":\"prop_object_required\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prop_object_required\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"para_to_str(name, prop, prop_object_required)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"name\":\"Usage\",\"package\":\"metagpt/tools/openai_text_to_embedding.py:Usage\",\"attributes\":{\"prompt_tokens\":{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]},\"total_tokens\":{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens"}, {"predicate": "has_class_property", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "metagpt/tools/openai_text_to_embedding.py:ResultEmbedding:usage"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"lineno\":29,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"Usage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/openai_text_to_embedding.py:Usage", "target": "{\"name\":\"Usage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"prompt_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"},{\"name\":\"total_tokens\",\"visibility\":\"+\",\"value_type\":\"int\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:prompt_tokens", "target": "{\"name\":\"prompt_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"prompt_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/openai_text_to_embedding.py:Usage:total_tokens", "target": "{\"name\":\"total_tokens\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"total_tokens : int\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/schema.py:UserMessage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/schema.py:UserMessage", "target": "{\"name\":\"UserMessage\",\"package\":\"metagpt/schema.py:UserMessage\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/schema.py:UserMessage", "target": "metagpt/schema.py:Message"}, {"predicate": "has_class_method", "source": "metagpt/schema.py:UserMessage", "target": "metagpt/schema.py:UserMessage:__init__"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:UserMessage", "target": "{\"lineno\":307,\"end_lineno\":313,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserMessage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/schema.py:UserMessage", "target": "{\"name\":\"UserMessage\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/add_requirement.py", "target": "metagpt/actions/add_requirement.py:UserRequirement"}, {"predicate": "is", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"name\":\"UserRequirement\",\"package\":\"metagpt/actions/add_requirement.py:UserRequirement\",\"attributes\":{},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/actions/action.py:Action"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/schema.py:Message"}, {"predicate": "isAggregateOn", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "metagpt/schema.py:Message:cause_by"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"lineno\":11,\"end_lineno\":12,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"UserRequirement\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/add_requirement.py:UserRequirement", "target": "{\"name\":\"UserRequirement\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "has_class", "source": "metagpt/utils/visual_graph_repo.py", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"name\":\"VisualDiGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo\",\"attributes\":{},\"methods\":{\"get_mermaid_class_view\":{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]},\"get_mermaid_sequence_views\":{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]},\"load_from\":{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"lineno\":59,\"end_lineno\":111,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualDiGraphRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo", "target": "{\"name\":\"VisualDiGraphRepo\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_class_view", "target": "{\"name\":\"get_mermaid_class_view\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_mermaid_class_view(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:get_mermaid_sequence_views", "target": "{\"name\":\"get_mermaid_sequence_views\",\"args\":[],\"return_args\":{\"type_\":\"List[str,str]\",\"description\":\"List[str, str]\",\"compositions\":[]},\"description\":\"get_mermaid_sequence_views(): List[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:load_from", "target": "{\"name\":\"load_from\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"load_from(filename: str \\\\| Path)\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"name\":\"VisualGraphRepo\",\"package\":\"metagpt/utils/visual_graph_repo.py:VisualGraphRepo\",\"attributes\":{\"graph_db\":{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"lineno\":52,\"end_lineno\":56,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"VisualGraphRepo\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo", "target": "{\"name\":\"VisualGraphRepo\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"graph_db\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:graph_db", "target": "{\"name\":\"graph_db\",\"type_\":\"\",\"default_\":\"\",\"description\":\"graph_db\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"name\":\"WDMHttpProxyClient\",\"package\":\"metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient\",\"attributes\":{},\"methods\":{\"get\":{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"lineno\":94,\"end_lineno\":98,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WDMHttpProxyClient\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient", "target": "{\"name\":\"WDMHttpProxyClient\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine_selenium.py:WDMHttpProxyClient:get", "target": "{\"name\":\"get\",\"args\":[{\"name\":\"url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"url\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get(url)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"name\":\"WebBrowseAndSummarize\",\"package\":\"metagpt/actions/research.py:WebBrowseAndSummarize\",\"attributes\":{\"browse_func\":{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]},\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"web_browser_engine\":{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}},\"compositions\":[\"Callable\",\"WebBrowserEngine\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:run"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "?:Callable"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "has_class_method", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"lineno\":174,\"end_lineno\":237,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowseAndSummarize\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "{\"name\":\"WebBrowseAndSummarize\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"browse_func\",\"visibility\":\"+\",\"value_type\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_value\":\"\"},{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"web_browser_engine\",\"visibility\":\"+\",\"value_type\":\"Optional[WebBrowserEngine]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/research.py:WebBrowseAndSummarize", "target": "?:WebBrowserEngine"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:browse_func", "target": "{\"name\":\"browse_func\",\"type_\":\"Optional[Union[Callable[[list[str]],None],None]]\",\"default_\":\"\",\"description\":\"browse_func : Optional[Union[Callable[[list[str]], None], None]]\",\"compositions\":[\"Callable\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine", "target": "{\"name\":\"web_browser_engine\",\"type_\":\"Optional[WebBrowserEngine]\",\"default_\":\"\",\"description\":\"web_browser_engine : Optional[WebBrowserEngine]\",\"compositions\":[\"WebBrowserEngine\"]}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict[str,str]\",\"description\":\"dict[str, str]\",\"compositions\":[]},\"description\":\"run(url: str): dict[str, str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/web_browser_engine.py", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"name\":\"WebBrowserEngine\",\"package\":\"metagpt/tools/web_browser_engine.py:WebBrowserEngine\",\"attributes\":{\"engine\":{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]},\"run_func\":{\"name\":\"run_func\",\"type_\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_\":\"\",\"description\":\"run_func : Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}},\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"predicate": "has_class_property", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:..."}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:Callable"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:Coroutine"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:WebPage\\"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:\\"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/actions/research.py:WebBrowseAndSummarize"}, {"predicate": "isCompositeOn", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/actions/research.py:WebBrowseAndSummarize:web_browser_engine"}, {"predicate": "is_composite_of", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/utils/parse_html.py:WebPage"}, {"predicate": "has_class_method", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"lineno\":13,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngine\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "{\"name\":\"WebBrowserEngine\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"engine\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"run_func\",\"visibility\":\"+\",\"value_type\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine", "target": "?:WebPage"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine", "target": "{\"name\":\"engine\",\"type_\":\"\",\"default_\":\"\",\"description\":\"engine\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run_func", "target": "{\"name\":\"run_func\",\"type_\":\"Callable[...,Coroutine[Any,Any,WebPage\\\\|list[WebPage]]]\\\\|None\",\"default_\":\"\",\"description\":\"run_func : Callable[..., Coroutine[Any, Any, WebPage \\\\| list[WebPage]]] \\\\| None\",\"compositions\":[\"...\",\"Callable\",\"Coroutine\",\"WebPage\",\"WebPage\\\\\",\"\\\\\"]}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"WebPage\",\"description\":\"WebPage\",\"compositions\":[\"WebPage\"]},\"description\":\"run(url: str): WebPage\",\"aggregations\":[\"WebPage\"]}"}, {"predicate": "is", "source": "metagpt/tools:WebBrowserEngineType", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools:WebBrowserEngineType", "target": "{\"name\":\"WebBrowserEngineType\",\"package\":\"metagpt/tools:WebBrowserEngineType\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools:WebBrowserEngineType:name"}, {"predicate": "isCompositeOf", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/configs/browser_config.py:BrowserConfig"}, {"predicate": "isCompositeOn", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/configs/browser_config.py:BrowserConfig:engine"}, {"predicate": "isAggregateOf", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine"}, {"predicate": "isAggregateOn", "source": "metagpt/tools:WebBrowserEngineType", "target": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:engine"}, {"predicate": "has_class_view", "source": "metagpt/tools:WebBrowserEngineType", "target": "{\"name\":\"WebBrowserEngineType\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools:WebBrowserEngineType:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/tools:WebBrowserEngineType:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:WebPage"}, {"predicate": "has_function", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:get_html_content"}, {"predicate": "has_function", "source": "metagpt/utils/parse_html.py", "target": "metagpt/utils/parse_html.py:_get_soup"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"name\":\"WebPage\",\"package\":\"metagpt/utils/parse_html.py:WebPage\",\"attributes\":{\"html\":{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]},\"inner_text\":{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]},\"soup\":{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]},\"title\":{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]},\"url\":{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}},\"methods\":{\"get_links\":{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}},\"compositions\":[],\"aggregations\":[\"Generator\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:html"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:inner_text"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:soup"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:title"}, {"predicate": "has_class_property", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:url"}, {"predicate": "has_class_method", "source": "metagpt/utils/parse_html.py:WebPage", "target": "metagpt/utils/parse_html.py:WebPage:get_links"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/parse_html.py:WebPage", "target": "?:Generator"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"lineno\":11,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebPage\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/parse_html.py:WebPage", "target": "{\"name\":\"WebPage\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"html\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"inner_text\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"soup\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"title\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"url\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:html", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:html", "target": "{\"name\":\"html\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"html : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:inner_text", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:inner_text", "target": "{\"name\":\"inner_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"inner_text : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "{\"name\":\"soup\",\"type_\":\"\",\"default_\":\"\",\"description\":\"soup\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:soup", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "{\"name\":\"title\",\"type_\":\"\",\"default_\":\"\",\"description\":\"title\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:title", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:url", "target": "{\"name\":\"url\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"url : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:WebPage:get_links", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/parse_html.py:WebPage:get_links", "target": "{\"name\":\"get_links\",\"args\":[],\"return_args\":{\"type_\":\"Generator[str,None,None]\",\"description\":\"Generator[str, None, None]\",\"compositions\":[\"Generator\"]},\"description\":\"get_links(): Generator[str, None, None]\",\"aggregations\":[\"Generator\"]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"name\":\"WikiHowTemplate\",\"package\":\"metagpt/tools/prompt_writer.py:WikiHowTemplate\",\"attributes\":{},\"methods\":{\"gen\":{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen"}, {"predicate": "has_class_method", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"lineno\":52,\"end_lineno\":74,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WikiHowTemplate\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate", "target": "{\"name\":\"WikiHowTemplate\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:gen", "target": "{\"name\":\"gen\",\"args\":[{\"name\":\"question\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"question: str\",\"compositions\":[]},{\"name\":\"step\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"step: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"list[str]\",\"description\":\"list[str]\",\"compositions\":[]},\"description\":\"gen(question: str, step: str): list[str]\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/configs/workspace_config.py", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"name\":\"WorkspaceConfig\",\"package\":\"metagpt/configs/workspace_config.py:WorkspaceConfig\",\"attributes\":{\"path\":{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]},\"uid\":{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]},\"use_uid\":{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}},\"methods\":{\"check_uid_and_update_path\":{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]},\"check_workspace_path\":{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}},\"compositions\":[\"Path\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:path"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid"}, {"predicate": "has_class_property", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid"}, {"predicate": "has_class_method", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path"}, {"predicate": "has_class_method", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "isCompositeOf", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/config2.py:Config"}, {"predicate": "isCompositeOn", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "metagpt/config2.py:Config:workspace"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"lineno\":18,\"end_lineno\":38,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WorkspaceConfig\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig", "target": "{\"name\":\"WorkspaceConfig\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"Path\",\"default_value\":\"\"},{\"name\":\"uid\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_uid\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:path", "target": "{\"name\":\"path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"path : Path\",\"compositions\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:uid", "target": "{\"name\":\"uid\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"uid : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:use_uid", "target": "{\"name\":\"use_uid\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_uid : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_uid_and_update_path", "target": "{\"name\":\"check_uid_and_update_path\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_uid_and_update_path()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/configs/workspace_config.py:WorkspaceConfig:check_workspace_path", "target": "{\"name\":\"check_workspace_path\",\"args\":[{\"name\":\"v\",\"type_\":\"\",\"default_\":\"\",\"description\":\"v\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_workspace_path(v)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code.py", "target": "metagpt/actions/write_code.py:WriteCode"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"name\":\"WriteCode\",\"package\":\"metagpt/actions/write_code.py:WriteCode\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_codes\":{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"ProjectRepo\",\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"ProjectRepo\",\"Document\",\"CodingContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:get_codes"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/write_code.py:WriteCode:write_code"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:ProjectRepo"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "?:CodingContext"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code.py:WriteCode", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"lineno\":87,\"end_lineno\":219,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCode\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code.py:WriteCode", "target": "{\"name\":\"WriteCode\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:get_codes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:get_codes", "target": "{\"name\":\"get_codes\",\"args\":[{\"name\":\"task_doc\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"task_doc: Document\",\"compositions\":[\"Document\"]},{\"name\":\"exclude\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"exclude: str\",\"compositions\":[]},{\"name\":\"project_repo\",\"type_\":\"ProjectRepo\",\"default_\":\"\",\"description\":\"project_repo: ProjectRepo\",\"compositions\":[\"ProjectRepo\"]},{\"name\":\"use_inc\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_inc: bool\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_codes(task_doc: Document, exclude: str, project_repo: ProjectRepo, use_inc: bool): str\",\"aggregations\":[\"ProjectRepo\",\"Document\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:WriteCode:write_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code.py:WriteCode:write_code", "target": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_code(prompt): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_an_draft.py", "target": "metagpt/actions/write_code_an_draft.py:WriteCodeAN"}, {"predicate": "has_function", "source": "metagpt/actions/write_code_an_draft.py", "target": "metagpt/actions/write_code_an_draft.py:main"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"name\":\"WriteCodeAN\",\"package\":\"metagpt/actions/write_code_an_draft.py:WriteCodeAN\",\"attributes\":{},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"lineno\":576,\"end_lineno\":581,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeAN\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN", "target": "{\"name\":\"WriteCodeAN\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_an_draft.py:WriteCodeAN:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_plan_and_change_an.py", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"name\":\"WriteCodePlanAndChange\",\"package\":\"metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"get_old_codes\":{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]},\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"lineno\":185,\"end_lineno\":210,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodePlanAndChange\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange", "target": "{\"name\":\"WriteCodePlanAndChange\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:get_old_codes", "target": "{\"name\":\"get_old_codes\",\"args\":[],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"get_old_codes(): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_plan_and_change_an.py:WriteCodePlanAndChange:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_code_review.py", "target": "metagpt/actions/write_code_review.py:WriteCodeReview"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"name\":\"WriteCodeReview\",\"package\":\"metagpt/actions/write_code_review.py:WriteCodeReview\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]},\"write_code_review_and_rewrite\":{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "?:CodingContext"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"lineno\":121,\"end_lineno\":199,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteCodeReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_code_review.py:WriteCodeReview", "target": "{\"name\":\"WriteCodeReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"i_context\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"CodingContext\",\"description\":\"CodingContext\",\"compositions\":[\"CodingContext\"]},\"description\":\"run(): CodingContext\",\"aggregations\":[\"CodingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_code_review.py:WriteCodeReview:write_code_review_and_rewrite", "target": "{\"name\":\"write_code_review_and_rewrite\",\"args\":[{\"name\":\"context_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context_prompt\",\"compositions\":[]},{\"name\":\"cr_prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"cr_prompt\",\"compositions\":[]},{\"name\":\"filename\",\"type_\":\"\",\"default_\":\"\",\"description\":\"filename\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code_review_and_rewrite(context_prompt, cr_prompt, filename)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_tutorial.py", "target": "metagpt/actions/write_tutorial.py:WriteContent"}, {"predicate": "has_class", "source": "metagpt/actions/write_tutorial.py", "target": "metagpt/actions/write_tutorial.py:WriteDirectory"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"name\":\"WriteContent\",\"package\":\"metagpt/actions/write_tutorial.py:WriteContent\",\"attributes\":{\"directory\":{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:directory"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/write_tutorial.py:WriteContent:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"lineno\":42,\"end_lineno\":65,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteContent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_tutorial.py:WriteContent", "target": "{\"name\":\"WriteContent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"directory\",\"visibility\":\"+\",\"value_type\":\"dict\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:directory", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:directory", "target": "{\"name\":\"directory\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"directory : dict\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteContent:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteContent:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(topic: str): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/design_api.py", "target": "metagpt/actions/design_api.py:WriteDesign"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"name\":\"WriteDesign\",\"package\":\"metagpt/actions/design_api.py:WriteDesign\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}},\"compositions\":[],\"aggregations\":[\"Message\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "?:Message"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_new_system_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_update_system_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow"}, {"predicate": "has_class_method", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"lineno\":39,\"end_lineno\":120,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDesign\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"name\":\"WriteDesign\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "{\"description\":\"The source code defines a class `WriteDesign` that represents an action to generate system design based on PRD and design documents. It includes methods to update system design, merge PRD and system design, save data API design, and save sequence flow.\",\"use_cases\":[{\"description\":\"Generate system design based on PRD and design documents\",\"inputs\":[\"with_messages\",\"schema\"],\"outputs\":[\"content\",\"instruct_content\"],\"actors\":[\"Message\"],\"steps\":[\"Identify which PRD documents and design documents have been modified\",\"Regenerate the design content for the modified documents\",\"Wait for all files to be processed before sending the publish message\"],\"reason\":\"When there are changes in PRD and design documents, the system needs to generate the corresponding system design.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/actions/design_api.py:WriteDesign", "target": "\nsequenceDiagram\n participant Action\n participant Message\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n\n"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/design_api.py:WriteDesign:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"Message\",\"default_\":\"\",\"description\":\"with_messages: Message\",\"compositions\":[\"Message\"]},{\"name\":\"schema\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"schema: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages: Message, schema: str)\",\"aggregations\":[\"Message\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"name\":\"WriteDirectory\",\"package\":\"metagpt/actions/write_tutorial.py:WriteDirectory\",\"attributes\":{\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/write_tutorial.py:WriteDirectory:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"lineno\":17,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDirectory\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_tutorial.py:WriteDirectory", "target": "{\"name\":\"WriteDirectory\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_tutorial.py:WriteDirectory:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"run(topic: str): Dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_docstring.py", "target": "metagpt/actions/write_docstring.py:WriteDocstring"}, {"predicate": "has_function", "source": "metagpt/actions/write_docstring.py", "target": "metagpt/actions/write_docstring.py:_simplify_python_code"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"name\":\"WriteDocstring\",\"package\":\"metagpt/actions/write_docstring.py:WriteDocstring\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]},\"write_docstring\":{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}},\"compositions\":[],\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:i_context"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "?:str\\"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "?:Path"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"lineno\":156,\"end_lineno\":196,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteDocstring\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_docstring.py:WriteDocstring", "target": "{\"name\":\"WriteDocstring\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"code\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"code: str\",\"compositions\":[]},{\"name\":\"system_text\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"system_text: str\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"run(code: str, system_text: str, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_docstring.py:WriteDocstring:write_docstring", "target": "{\"name\":\"write_docstring\",\"args\":[{\"name\":\"filename\",\"type_\":\"str\\\\|Path\",\"default_\":\"\",\"description\":\"filename: str \\\\| Path\",\"compositions\":[\"Path\",\"str\\\\\"]},{\"name\":\"overwrite\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"overwrite: bool\",\"compositions\":[]},{\"name\":\"style\",\"type_\":\"Literal['google','numpy','sphinx']\",\"default_\":\"\",\"description\":\"style: Literal['google', 'numpy', 'sphinx']\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"write_docstring(filename: str \\\\| Path, overwrite: bool, style: Literal['google', 'numpy', 'sphinx']): str\",\"aggregations\":[\"str\\\\\",\"Path\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_prd.py", "target": "metagpt/actions/write_prd.py:WritePRD"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"name\":\"WritePRD\",\"package\":\"metagpt/actions/write_prd.py:WritePRD\",\"attributes\":{\"project_name\":{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}},\"methods\":{\"get_related_docs\":{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}},\"compositions\":[],\"aggregations\":[\"Document\",\"Message\",\"ActionOutput\\\\\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:project_name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:get_related_docs"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:Document"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:Message"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "?:ActionOutput\\"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_is_related"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_update_prd"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"lineno\":61,\"end_lineno\":172,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRD\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_prd.py:WritePRD", "target": "{\"name\":\"WritePRD\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"project_name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:project_name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:project_name", "target": "{\"name\":\"project_name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"project_name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:get_related_docs", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:get_related_docs", "target": "{\"name\":\"get_related_docs\",\"args\":[{\"name\":\"req\",\"type_\":\"Document\",\"default_\":\"\",\"description\":\"req: Document\",\"compositions\":[\"Document\"]},{\"name\":\"docs\",\"type_\":\"list[Document]\",\"default_\":\"\",\"description\":\"docs: list[Document]\",\"compositions\":[\"Document\"]}],\"return_args\":{\"type_\":\"list[Document]\",\"description\":\"list[Document]\",\"compositions\":[\"Document\"]},\"description\":\"get_related_docs(req: Document, docs: list[Document]): list[Document]\",\"aggregations\":[\"Document\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd.py:WritePRD:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"ActionOutput\\\\|Message\",\"description\":\"ActionOutput \\\\| Message\",\"compositions\":[\"ActionOutput\\\\\",\"Message\"]},\"description\":\"run(with_messages): ActionOutput \\\\| Message\",\"aggregations\":[\"Message\",\"ActionOutput\\\\\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_prd_review.py", "target": "metagpt/actions/write_prd_review.py:WritePRDReview"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"name\":\"WritePRDReview\",\"package\":\"metagpt/actions/write_prd_review.py:WritePRDReview\",\"attributes\":{\"desc\":{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]},\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]},\"prd\":{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]},\"prd_review_prompt_template\":{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:desc"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:name"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:prd"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/write_prd_review.py:WritePRDReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"lineno\":14,\"end_lineno\":31,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WritePRDReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_prd_review.py:WritePRDReview", "target": "{\"name\":\"WritePRDReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"desc\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"prd\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"prd_review_prompt_template\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:desc", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:desc", "target": "{\"name\":\"desc\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"desc : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd", "target": "{\"name\":\"prd\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"prd : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:prd_review_prompt_template", "target": "{\"name\":\"prd_review_prompt_template\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"prd_review_prompt_template : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_prd_review.py:WritePRDReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"prd\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prd\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(prd)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_review.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_review.py", "target": "metagpt/actions/write_review.py:WriteReview"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"name\":\"WriteReview\",\"package\":\"metagpt/actions/write_review.py:WriteReview\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/write_review.py:WriteReview:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/write_review.py:WriteReview:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_review.py:WriteReview", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteReview\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_review.py:WriteReview", "target": "{\"name\":\"WriteReview\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WriteReview:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_review.py:WriteReview:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"context\",\"type_\":\"\",\"default_\":\"\",\"description\":\"context\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(context)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/project_management.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/project_management.py", "target": "metagpt/actions/project_management.py:WriteTasks"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"name\":\"WriteTasks\",\"package\":\"metagpt/actions/project_management.py:WriteTasks\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:run"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_update_tasks"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_merge"}, {"predicate": "has_class_method", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "metagpt/actions/project_management.py:WriteTasks:_update_requirements"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"lineno\":32,\"end_lineno\":96,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTasks\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"name\":\"WriteTasks\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "has_class_use_case", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "{\"description\":\"The source code defines a class 'WriteTasks' that is responsible for creating and updating tasks based on changes in system designs and task files. It also handles merging and updating requirements related to the tasks.\",\"use_cases\":[{\"description\":\"Create and update tasks based on changes in system designs and task files\",\"inputs\":[\"changed_system_designs\",\"changed_tasks\"],\"outputs\":[\"change_files\"],\"actors\":[\"WriteTasks\"],\"steps\":[\"Identify the system designs and task files that have undergone changes\",\"Update the system designs and task files\",\"Merge the updated system designs and task files\",\"Update the requirements related to the tasks\"],\"reason\":\"When there are changes in the system designs or task files, the system needs to create and update tasks accordingly.\"}],\"relationship\":[]}"}, {"predicate": "has_sequence_view", "source": "metagpt/actions/project_management.py:WriteTasks", "target": "\nsequenceDiagram\n participant WriteTasks\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/project_management.py:WriteTasks:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_messages\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_messages\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_messages)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"name\":\"WriteTeachingPlanPart\",\"package\":\"metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]},\"language\":{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]},\"rsp\":{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]},\"topic\":{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}},\"methods\":{\"format_value\":{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]},\"run\":{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"Context\"]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run"}, {"predicate": "isAggregateOf", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "?:Context"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"lineno\":15,\"end_lineno\":89,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTeachingPlanPart\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart", "target": "{\"name\":\"WriteTeachingPlanPart\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"language\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"rsp\",\"visibility\":\"+\",\"value_type\":\"Optional[str]\",\"default_value\":\"\"},{\"name\":\"topic\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"i_context : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:language", "target": "{\"name\":\"language\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"language : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:rsp", "target": "{\"name\":\"rsp\",\"type_\":\"Optional[str]\",\"default_\":\"\",\"description\":\"rsp : Optional[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:topic", "target": "{\"name\":\"topic\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"topic : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:format_value", "target": "{\"name\":\"format_value\",\"args\":[{\"name\":\"value\",\"type_\":\"\",\"default_\":\"\",\"description\":\"value\",\"compositions\":[]},{\"name\":\"context\",\"type_\":\"Context\",\"default_\":\"\",\"description\":\"context: Context\",\"compositions\":[\"Context\"]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"format_value(value, context: Context)\",\"aggregations\":[\"Context\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:run", "target": "{\"name\":\"run\",\"args\":[{\"name\":\"with_message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"with_message\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"run(with_message)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_test.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/write_test.py", "target": "metagpt/actions/write_test.py:WriteTest"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"name\":\"WriteTest\",\"package\":\"metagpt/actions/write_test.py:WriteTest\",\"attributes\":{\"i_context\":{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]},\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{\"run\":{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]},\"write_code\":{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}},\"compositions\":[\"TestingContext\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:i_context"}, {"predicate": "has_class_property", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:name"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:run"}, {"predicate": "has_class_method", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/write_test.py:WriteTest:write_code"}, {"predicate": "isGeneralizeOf", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/actions/action.py:Action"}, {"predicate": "is_composite_of", "source": "metagpt/actions/write_test.py:WriteTest", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"lineno\":40,\"end_lineno\":70,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WriteTest\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/actions/write_test.py:WriteTest", "target": "{\"name\":\"WriteTest\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"i_context\",\"visibility\":\"+\",\"value_type\":\"Optional[TestingContext]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/actions/write_test.py:WriteTest", "target": "?:TestingContext"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:i_context", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:i_context", "target": "{\"name\":\"i_context\",\"type_\":\"Optional[TestingContext]\",\"default_\":\"\",\"description\":\"i_context : Optional[TestingContext]\",\"compositions\":[\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:run", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:run", "target": "{\"name\":\"run\",\"args\":[],\"return_args\":{\"type_\":\"TestingContext\",\"description\":\"TestingContext\",\"compositions\":[\"TestingContext\"]},\"description\":\"run(): TestingContext\",\"aggregations\":[\"TestingContext\"]}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:WriteTest:write_code", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/actions/write_test.py:WriteTest:write_code", "target": "{\"name\":\"write_code\",\"args\":[{\"name\":\"prompt\",\"type_\":\"\",\"default_\":\"\",\"description\":\"prompt\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"write_code(prompt)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "{\"name\":\"WsParam\",\"package\":\"metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam\",\"attributes\":{\"api_key\":{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]},\"api_secret\":{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]},\"app_id\":{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]},\"host\":{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]},\"message\":{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]},\"path\":{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]},\"spark_url\":{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}},\"methods\":{\"create_url\":{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path"}, {"predicate": "has_class_property", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url"}, {"predicate": "has_class_method", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url"}, {"predicate": "has_class_view", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam", "target": "{\"name\":\"WsParam\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"api_key\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"api_secret\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"app_id\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"host\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"message\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"path\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"spark_url\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_key", "target": "{\"name\":\"api_key\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_key\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:api_secret", "target": "{\"name\":\"api_secret\",\"type_\":\"\",\"default_\":\"\",\"description\":\"api_secret\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:app_id", "target": "{\"name\":\"app_id\",\"type_\":\"\",\"default_\":\"\",\"description\":\"app_id\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:host", "target": "{\"name\":\"host\",\"type_\":\"\",\"default_\":\"\",\"description\":\"host\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:message", "target": "{\"name\":\"message\",\"type_\":\"\",\"default_\":\"\",\"description\":\"message : NoneType\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:path", "target": "{\"name\":\"path\",\"type_\":\"\",\"default_\":\"\",\"description\":\"path\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:spark_url", "target": "{\"name\":\"spark_url\",\"type_\":\"\",\"default_\":\"\",\"description\":\"spark_url\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:WsParam:create_url", "target": "{\"name\":\"create_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"create_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/utils/yaml_model.py", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "has_class", "source": "metagpt/utils/yaml_model.py", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"name\":\"YamlModel\",\"package\":\"metagpt/utils/yaml_model.py:YamlModel\",\"attributes\":{\"extra_fields\":{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}},\"methods\":{\"from_yaml_file\":{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]},\"read_yaml\":{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]},\"to_yaml_file\":{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}},\"compositions\":[],\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:extra_fields"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:read_yaml"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "?:Path"}, {"predicate": "isAggregateOf", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "?:YamlModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"lineno\":15,\"end_lineno\":36,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModel\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/yaml_model.py:YamlModel", "target": "{\"name\":\"YamlModel\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"extra_fields\",\"visibility\":\"+\",\"value_type\":\"Optional[Dict[str,str]]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:extra_fields", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:extra_fields", "target": "{\"name\":\"extra_fields\",\"type_\":\"Optional[Dict[str,str]]\",\"default_\":\"\",\"description\":\"extra_fields : Optional[Dict[str, str]]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:from_yaml_file", "target": "{\"name\":\"from_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]}],\"return_args\":{\"type_\":\"'YamlModel'\",\"description\":\"'YamlModel'\",\"compositions\":[\"YamlModel\"]},\"description\":\"from_yaml_file(file_path: Path): 'YamlModel'\",\"aggregations\":[\"Path\",\"YamlModel\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:read_yaml", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:read_yaml", "target": "{\"name\":\"read_yaml\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"Dict\",\"description\":\"Dict\",\"compositions\":[]},\"description\":\"read_yaml(file_path: Path, encoding: str): Dict\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModel:to_yaml_file", "target": "{\"name\":\"to_yaml_file\",\"args\":[{\"name\":\"file_path\",\"type_\":\"Path\",\"default_\":\"\",\"description\":\"file_path: Path\",\"compositions\":[\"Path\"]},{\"name\":\"encoding\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"encoding: str\",\"compositions\":[]}],\"return_args\":{\"type_\":\"None\",\"description\":\"None\",\"compositions\":[]},\"description\":\"to_yaml_file(file_path: Path, encoding: str): None\",\"aggregations\":[\"Path\"]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"name\":\"YamlModelWithoutDefault\",\"package\":\"metagpt/utils/yaml_model.py:YamlModelWithoutDefault\",\"attributes\":{},\"methods\":{\"check_not_default_config\":{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_method", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config"}, {"predicate": "isGeneralizeOf", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "metagpt/utils/yaml_model.py:YamlModel"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"YamlModelWithoutDefault\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault", "target": "{\"name\":\"YamlModelWithoutDefault\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/yaml_model.py:YamlModelWithoutDefault:check_not_default_config", "target": "{\"name\":\"check_not_default_config\",\"args\":[{\"name\":\"values\",\"type_\":\"\",\"default_\":\"\",\"description\":\"values\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"check_not_default_config(values)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai_api.py", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai_api.py", "target": "metagpt/provider/zhipuai_api.py:ZhiPuEvent"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"name\":\"ZhiPuAILLM\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuAILLM\",\"attributes\":{\"config\":{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]},\"llm\":{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]},\"model\":{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]},\"use_system_prompt\":{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}},\"methods\":{\"acompletion\":{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]},\"acompletion_text\":{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]},\"completion\":{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion"}, {"predicate": "isGeneralizeOf", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"lineno\":34,\"end_lineno\":116,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuAILLM\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM", "target": "{\"name\":\"ZhiPuAILLM\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"config\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"llm\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"model\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"use_system_prompt\",\"visibility\":\"+\",\"value_type\":\"bool\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:config", "target": "{\"name\":\"config\",\"type_\":\"\",\"default_\":\"\",\"description\":\"config\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm", "target": "{\"name\":\"llm\",\"type_\":\"\",\"default_\":\"\",\"description\":\"llm\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:model", "target": "{\"name\":\"model\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"model : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:use_system_prompt", "target": "{\"name\":\"use_system_prompt\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"use_system_prompt : bool\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion", "target": "{\"name\":\"acompletion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acompletion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:acompletion_text", "target": "{\"name\":\"acompletion_text\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"stream\",\"type_\":\"\",\"default_\":\"\",\"description\":\"stream\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"str\",\"description\":\"str\",\"compositions\":[]},\"description\":\"acompletion_text(messages: list[dict], stream, timeout): str\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:completion", "target": "{\"name\":\"completion\",\"args\":[{\"name\":\"messages\",\"type_\":\"list[dict]\",\"default_\":\"\",\"description\":\"messages: list[dict]\",\"compositions\":[]},{\"name\":\"timeout\",\"type_\":\"\",\"default_\":\"\",\"description\":\"timeout\",\"compositions\":[]}],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"completion(messages: list[dict], timeout): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"name\":\"ZhiPuEvent\",\"package\":\"metagpt/provider/zhipuai_api.py:ZhiPuEvent\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuEvent\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent", "target": "{\"name\":\"ZhiPuEvent\",\"visibility\":\"+\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai_api.py:ZhiPuEvent:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/provider/zhipuai/zhipu_model_api.py", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"name\":\"ZhiPuModelAPI\",\"package\":\"metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI\",\"attributes\":{},\"methods\":{\"acreate\":{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]},\"acreate_stream\":{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]},\"arequest\":{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]},\"split_zhipu_api_url\":{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}},\"compositions\":[],\"aggregations\":[\"AsyncSSEClient\"]}"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest"}, {"predicate": "has_class_method", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "?:AsyncSSEClient"}, {"predicate": "isAggregateOf", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM"}, {"predicate": "isAggregateOn", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:llm"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"lineno\":14,\"end_lineno\":54,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ZhiPuModelAPI\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI", "target": "{\"name\":\"ZhiPuModelAPI\",\"visibility\":\"+\",\"attributes\":[],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate", "target": "{\"name\":\"acreate\",\"args\":[],\"return_args\":{\"type_\":\"dict\",\"description\":\"dict\",\"compositions\":[]},\"description\":\"acreate(): dict\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:acreate_stream", "target": "{\"name\":\"acreate_stream\",\"args\":[],\"return_args\":{\"type_\":\"AsyncSSEClient\",\"description\":\"AsyncSSEClient\",\"compositions\":[\"AsyncSSEClient\"]},\"description\":\"acreate_stream(): AsyncSSEClient\",\"aggregations\":[\"AsyncSSEClient\"]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:arequest", "target": "{\"name\":\"arequest\",\"args\":[{\"name\":\"stream\",\"type_\":\"bool\",\"default_\":\"\",\"description\":\"stream: bool\",\"compositions\":[]},{\"name\":\"method\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"method: str\",\"compositions\":[]},{\"name\":\"headers\",\"type_\":\"dict\",\"default_\":\"\",\"description\":\"headers: dict\",\"compositions\":[]},{\"name\":\"kwargs\",\"type_\":\"\",\"default_\":\"\",\"description\":\"kwargs\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"arequest(stream: bool, method: str, headers: dict, kwargs)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:ZhiPuModelAPI:split_zhipu_api_url", "target": "{\"name\":\"split_zhipu_api_url\",\"args\":[],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"split_zhipu_api_url()\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "{\"name\":\"_AgentSkill\",\"package\":\"metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill\",\"attributes\":{\"name\":{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}},\"methods\":{},\"compositions\":[],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name"}, {"predicate": "has_class_view", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill", "target": "{\"name\":\"_AgentSkill\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "is", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/learn/skill_loader.py:SkillsDeclaration:get_skill_list:_AgentSkill:name", "target": "{\"name\":\"name\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"name : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "class"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"name\":\"_VisualClassView\",\"package\":\"metagpt/utils/visual_graph_repo.py:_VisualClassView\",\"attributes\":{\"aggregations\":{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]},\"compositions\":{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]},\"generalizations\":{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]},\"name\":{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]},\"package\":{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]},\"uml\":{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}},\"methods\":{\"get_mermaid\":{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_mermaid(align: int)\",\"aggregations\":[]}},\"compositions\":[\"UMLClassView\"],\"aggregations\":[]}"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package"}, {"predicate": "has_class_property", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml"}, {"predicate": "has_class_method", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid"}, {"predicate": "is_composite_of", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "metagpt/schema.py:UMLClassView"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"lineno\":25,\"end_lineno\":49,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"_VisualClassView\"],\"properties\":{}}"}, {"predicate": "has_class_view", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "{\"name\":\"_VisualClassView\",\"visibility\":\"#\",\"attributes\":[{\"name\":\"aggregations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"compositions\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"generalizations\",\"visibility\":\"+\",\"value_type\":\"List[str]\",\"default_value\":\"\"},{\"name\":\"name\",\"visibility\":\"+\",\"value_type\":\"\",\"default_value\":\"\"},{\"name\":\"package\",\"visibility\":\"+\",\"value_type\":\"str\",\"default_value\":\"\"},{\"name\":\"uml\",\"visibility\":\"+\",\"value_type\":\"Optional[UMLClassView]\",\"default_value\":\"\"}],\"methods\":[]}"}, {"predicate": "isCompositeOf", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView", "target": "?:UMLClassView"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:aggregations", "target": "{\"name\":\"aggregations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"aggregations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:compositions", "target": "{\"name\":\"compositions\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"compositions : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:generalizations", "target": "{\"name\":\"generalizations\",\"type_\":\"List[str]\",\"default_\":\"\",\"description\":\"generalizations : List[str]\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "{\"name\":\"name\",\"type_\":\"\",\"default_\":\"\",\"description\":\"name\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:package", "target": "{\"name\":\"package\",\"type_\":\"str\",\"default_\":\"\",\"description\":\"package : str\",\"compositions\":[]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml", "target": "class_property"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:uml", "target": "{\"name\":\"uml\",\"type_\":\"Optional[UMLClassView]\",\"default_\":\"\",\"description\":\"uml : Optional[UMLClassView]\",\"compositions\":[\"UMLClassView\"]}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid", "target": "class_method"}, {"predicate": "has_detail", "source": "metagpt/utils/visual_graph_repo.py:_VisualClassView:get_mermaid", "target": "{\"name\":\"get_mermaid\",\"args\":[{\"name\":\"align\",\"type_\":\"int\",\"default_\":\"\",\"description\":\"align: int\",\"compositions\":[]}],\"return_args\":{\"type_\":\"\",\"description\":\"\",\"compositions\":[]},\"description\":\"get_mermaid(align: int)\",\"aggregations\":[]}"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassAttribute:_split_literal", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:_parse_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:DotClassMethod:_parse_args", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_file", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_expr", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_name", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_if", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_if_compare", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_variable", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_assign", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_classes", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_parse_class_relationships", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_split_class_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_split_relationship_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_get_label", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_create_path_mapping", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_repair_namespaces", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_repair_ns", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:RepoParser:_find_root", "target": "class_method"}, {"predicate": "is", "source": "metagpt/repo_parser.py:is_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:is_func", "target": "{\"lineno\":637,\"end_lineno\":638,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_func\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ast.Constant:\n@Time : 2023/11/17 17:58\n@Author : alexanderwu\n@File : repo_parser.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/17 17:58\\n@Author : alexanderwu\\n@File : repo_parser.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:ast", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:subprocess", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:pandas as pd", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:pydantic", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['BaseModel', 'Field', 'field_validator']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.const", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.utils.common", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['any_to_str', 'aread']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/repo_parser.py:names:['handle_exception']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/startup.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/startup.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/startup.py", "target": "metagpt/startup.py:generate_repo"}, {"predicate": "has_function", "source": "metagpt/startup.py", "target": "metagpt/startup.py:startup"}, {"predicate": "has_function", "source": "metagpt/startup.py", "target": "metagpt/startup.py:copy_config_to"}, {"predicate": "is", "source": "metagpt/startup.py:generate_repo", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:generate_repo", "target": "{\"lineno\":16,\"end_lineno\":68,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_repo\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/startup.py:startup", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:startup", "target": "{\"lineno\":72,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"startup\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/startup.py:copy_config_to", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:copy_config_to", "target": "{\"lineno\":121,\"end_lineno\":136,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"copy_config_to\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/startup.py:app", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:app", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"app\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:asyncio", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:shutil", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:typer", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"typer\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:metagpt.config2", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['config']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:metagpt.const", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/startup.py:__name__:__main__", "target": "{\"lineno\":139,\"end_lineno\":140,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222415604:{\nsequenceDiagram\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n```\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:User"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Typer"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222533217:{\nsequenceDiagram\n participant ProjectRepo\n participant GitRepository\n participant Path\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/context.py:Context"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222606110:{\nsequenceDiagram\n participant ProjectRepo\n participant str\n participant Path\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/project_repo.py:ProjectRepo"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:str"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Path"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222711914:{\nsequenceDiagram\n participant FileRepository\n participant DependencyFile\n participant Path\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant GitRepository\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/git_repository.py:GitRepository"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222829147:{\nsequenceDiagram\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant DependencyFile\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant User\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->> FileRepository: get_all(filter_ignored)\n FileRepository ->> FileRepository: retrieve content of all files\n FileRepository ->> Document: return list of document instances\n\n Document ->> FileRepository: get_change_dir_files(dir)\n FileRepository ->> FileRepository: identify changed files within directory\n FileRepository ->> Document: return list of changed files\n\n Document ->> FileRepository: save_doc(doc, dependencies)\n FileRepository ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository ->> Path: convert content of document to Markdown\n FileRepository ->> FileRepository: save content to file with optional suffix\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: delete(filename)\n FileRepository ->> Path: delete file from repository\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n FileRepository->>FileRepository: filter_gitignore(filenames, root_relative_path)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/file_repository.py:FileRepository"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/document.py:Document"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:Document"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:List"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:aiofiles"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:os"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:datetime"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:json"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131222928045:{\nsequenceDiagram\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant BaseLLM\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/dependency_file.py:DependencyFile"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223021143:{\nsequenceDiagram\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant User\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/provider/base_llm.py:BaseLLM"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223126916:{\nsequenceDiagram\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:Message"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:AsyncOpenAI"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223231878:{\nsequenceDiagram\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant Path\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Context\n participant Team\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n BaseLLM -->> Message: rsp\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/configs/llm_config.py:LLMConfig"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:SystemAdministrator"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:LLMSystem"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223353735:{\nsequenceDiagram\n participant Team\n participant Role\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/team.py:Team"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223527497:{\nsequenceDiagram\n participant Role\n participant Team\n participant Environment\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant Message\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/role.py:Role"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223701562:{\nsequenceDiagram\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProductManager\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/environment.py:Environment"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Iterable"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:SerializeAsAny"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223806039:{\nsequenceDiagram\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Architect\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document ->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/product_manager.py:ProductManager"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131223921365:{\nsequenceDiagram\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant ProjectManager\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/architect.py:Architect"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:SourceCode"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224018623:{\nsequenceDiagram\n participant ProjectManager\n participant WriteTasks\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n WriteDesign-->>ProjectManager: task_list\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/project_manager.py:ProjectManager"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224133693:{\nsequenceDiagram\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Message\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/actions/project_management.py:WriteTasks"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224454452:{\nsequenceDiagram\n participant Action\n participant Message\n participant WriteTasks\n participant ProjectManager\n participant WriteDesign\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Iterable\n participant SerializeAsAny\n participant Team\n participant Context\n participant Path\n participant SystemAdministrator\n participant LLMSystem\n participant User\n participant AsyncOpenAI\n participant BaseLLM\n participant DependencyFile\n participant Document\n participant List\n participant GitRepository\n participant aiofiles\n participant os\n participant datetime\n participant json\n participant FileRepository\n participant Path\\\\\n participant ProjectRepo\n participant str\n participant LLMConfig\n participant Typer\n participant Engineer\n participant QaEngineer\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant NoMoneyException\n participant Logger\n\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/actions/design_api.py:WriteDesign"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224643506:{\nsequenceDiagram\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/actions/action.py:Action"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224806732:{\nsequenceDiagram\n participant User\n participant System\n participant RunCodeContext\n participant CodeSummarizeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:RunCodeContext"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:System"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131224922674:{\nsequenceDiagram\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant System\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository ->> FileRepository: get_dependency(filename)\n FileRepository ->> FileRepository: identify changed dependent files\n FileRepository ->> Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:CodeSummarizeContext"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:ExternalSystem"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225037718:{\nsequenceDiagram\n participant Tester\n participant System\n participant ExternalSystem\n participant CodeSummarizeContext\n participant User\n participant RunCodeContext\n participant TestingContext\n participant CodingContext\n participant CodePlanAndChangeContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant Document\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>CodeSummarizeContext: Create an empty instance\n loop through filenames\n CodeSummarizeContext->>CodeSummarizeContext: Check if filename is relative to SYSTEM_DESIGN_FILE_REPO\n alt filename is relative to SYSTEM_DESIGN_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set design_filename attribute\n else filename is relative to TASK_FILE_REPO\n CodeSummarizeContext-->>CodeSummarizeContext: Set task_filename attribute\n end\n end\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:TestingContext"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Tester"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225231661:{\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/schema.py:CodingContext"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225403302:{\nsequenceDiagram\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant ProjectManager\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant DocFileRepositories\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team: create company\n Team -> ProductManager: hire\n Team -> Architect: hire\n Team -> ProjectManager: hire\n Team -> Engineer: hire\n Team -> QaEngineer: hire\n Team -> Team: invest\n Team -> Team: run_project\n Team -> Team: run\n}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/common.py:NoMoneyException"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Logger"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225530578:{\nsequenceDiagram\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant System\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant ResourceFileRepositories\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file_repository(self._srcs_path)\n ProjectRepo->>ProjectRepo: code_files_exists()\n ProjectRepo->>GitRepository: git_workdir = self.git_repo.workdir\n ProjectRepo->>Path: src_workdir = git_workdir / git_workdir.name\n ProjectRepo->>Path: return Path(path).relative_to(self.workdir)\n ProjectRepo->>Path: return Path(path)\n ProjectRepo->>ProjectRepo: with_src_path(path)\n ProjectRepo->>ProjectRepo: src_relative_path\n ProjectRepo->>Path: return self._srcs_path\n ProjectRepo->>Path: Create a new os.environ object\n Path->>Path: Copy the current os.environ object\n Path-->>ProjectRepo: env\n BaseLLM->>LLMConfig: Obtain a LLM (Language Model) instance with a cost manager\n LLMConfig-->>BaseLLM: llm\n User -> Typer: startup command\n Typer -> generate_repo: call with arguments\n generate_repo -> config: update_via_cli\n config -> Context: initialize\n Context -> Team}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/project_repo.py:DocFileRepositories"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:Developer"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225710350:{\nsequenceDiagram\n participant System\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant Engineer\n participant QaEngineer\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>ProjectRepo: self._srcs_path = None\n ProjectRepo->>ProjectRepo: requirement\n ProjectRepo->>DocFileRepositories: return await self.docs.get(filename=REQUIREMENT_FILENAME)\n ProjectRepo->>ProjectRepo: git_repo\n ProjectRepo->>GitRepository: return self._git_repo\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>ProjectRepo: srcs\n ProjectRepo->>ProjectRepo: raise ValueError(\"Call with_srcs first.\")\n ProjectRepo->>GitRepository: return self._git_repo.new_file}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/utils/project_repo.py:ResourceFileRepositories"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:generate_repo"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "?:config"}, {"predicate": "has_sequence_view", "source": "metagpt/startup.py:__name__:__main__", "target": "\nsequenceDiagram\n participant Engineer\n participant System\n participant ResourceFileRepositories\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant QaEngineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>"}, {"predicate": "has_sequence_view_ver", "source": "metagpt/startup.py:__name__:__main__", "target": "20240131225840129:{\nsequenceDiagram\n participant Engineer\n participant System\n participant ResourceFileRepositories\n participant ProjectManager\n participant Developer\n participant DocFileRepositories\n participant User\n participant CodingContext\n participant Document\n participant Tester\n participant ExternalSystem\n participant CodeSummarizeContext\n participant RunCodeContext\n participant TestingContext\n participant Action\n participant WriteTasks\n participant SourceCode\n participant Architect\n participant ProductManager\n participant Environment\n participant Role\n participant Team\n participant Path\n participant NoMoneyException\n participant Logger\n participant SystemAdministrator\n participant LLMSystem\n participant Message\n participant BaseLLM\n participant AsyncOpenAI\n participant DependencyFile\n participant FileRepository\n participant GitRepository\n participant ProjectRepo\n participant Typer\n participant generate_repo\n participant config\n participant Context\n participant QaEngineer\n\n Engineer->>Engineer: action_description\n Engineer->>Engineer: list code_todos\n Engineer->>Engineer: str constraints\n Engineer->>Engineer: str goal\n Engineer->>Engineer: int n_borg\n Engineer->>Engineer: int n_summarize\n Engineer->>Engineer: str name\n Engineer->>Engineer: str next_todo_action\n Engineer->>Engineer: str profile\n Engineer->>Engineer: src_workspace\n Engineer->>Engineer: list summarize_todos\n Engineer->>Engineer: bool use_code_review\n\n System->>ResourceFileRepositories: git_repo\n activate ResourceFileRepositories\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=COMPETITIVE_ANALYSIS_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=DATA_API_DESIGN_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SEQ_FLOW_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SYSTEM_DESIGN_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=PRD_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=TASK_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_SUMMARIES_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=SD_OUTPUT_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=CODE_PLAN_AND_CHANGE_PDF_FILE_REPO)\n ResourceFileRepositories->>git_repo: new_file_repository(relative_path=VISUAL_GRAPH_REPO_FILE_REPO)\n deactivate ResourceFileRepositories\n\n User->>SourceCode: Define custom exception class NoMoneyException\n SourceCode->>SourceCode: Define __init__ method\\nand __str__ method\\nfor NoMoneyException\n ProjectManager ->> DocFileRepositories: Create DocFileRepositories instance\n Developer ->> DocFileRepositories: Create DocFileRepositories instance\n DocFileRepositories ->> DocFileRepositories: Initialize with git_repo\n DocFileRepositories ->> DocFileRepositories: Create file repositories for PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> ProjectManager: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n DocFileRepositories -->> Developer: Return PRDs, system design, tasks, code summaries, graph repository, class view, and code plan and change\n User ->> System: provides a filename as input\n System ->> CodingContext: creates a new CodingContext object with the provided filename\n System -->> User: returns the created CodingContext object\n User ->> System: provides the coding context and the updated design document as input\n System ->> CodingContext: updates the design document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated task document as input\n System ->> CodingContext: updates the task document in the provided coding context\n System -->> User: returns the updated coding context\n User ->> System: provides the coding context and the updated code document as input\n System ->> CodingContext: updates the code document in the provided coding context\n System -->> User: returns the updated coding context\n Tester ->> System: provide filename, code_doc\n System ->> System: create new TestingContext object with filename and code_doc\n System -->> Tester: return testing_context\n ExternalSystem->>CodeSummarizeContext: loads(filenames: List[str])\n activate CodeSummarizeContext\n CodeSummarizeContext-->>ExternalSystem: ctx: CodeSummarizeContext\n deactivate CodeSummarizeContext\n User->>System: provides the code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided code in script mode\n System->>System: generates an output after executing the code\n User->>System: provides the test code to be executed\n User->>System: specifies the working directory for code execution\n User->>System: may provide additional python paths if required\n System->>System: runs the provided test code\n System->>System: generates an output after executing the test code\n RunCodeContext->>Action: set_prefix(prefix)\n Action->>Action: prefix = prefix\n Action->>Action: llm.system_prompt = prefix\n Action->>Action: node.llm = llm (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run_action_node(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: return\n RunCodeContext->>Action: run(args, kwargs) (if node is not None)\n Action-->>RunCodeContext: NotImplementedError\n Action->>Action: run(with_messages, schema)\n Action->>Action: _update_system_design(filename)\n Action->>Action: _merge(prd_doc, system_design_doc)\n Action->>Action: _save_data_api_design(design_doc)\n Action->>Action: _save_seq_flow(design_doc)\n Action->>Action: _save_mermaid_file(data, pathname)\n Action->>Action: resources.system_design.save_pdf(doc)\n WriteTasks->>+WriteTasks: run(with_messages)\n WriteTasks->>+WriteTasks: _update_tasks(filename)\n WriteTasks->>+WriteTasks: _merge(system_design_doc, task_doc)\n WriteTasks->>+WriteTasks: _update_requirements(doc)\n WriteTasks-->>-WriteTasks: ActionOutput(content, instruct_content)\n ProjectManager->>WriteTasks: Receive task list and task dependencies\n WriteTasks-->>ProjectManager: task_breakdown\n ProjectManager->>WriteDesign: Receive user requirement and technical design\n SourceCode->>Architect: class Architect(Role)\n SourceCode->>Architect: name: str = \"Bob\"\n SourceCode->>Architect: profile: str = \"Architect\"\n SourceCode->>Architect: goal: str = \"design a concise, usable, complete software system\"\n SourceCode->>Architect: constraints: str = \"make sure the architecture is simple enough and use appropriate open source libraries. Use same language as user requirement\"\n SourceCode->>Architect: __init__(self, **kwargs) -> None\n Architect->>Architect: super().__init__(**kwargs)\n Architect->>Architect: self.set_actions([WriteDesign])\n Architect->>Architect: self._watch({WritePRD})\n ProductManager->>+ProductManager: _think()\n alt git repository exists and git reinitialization not set\n ProductManager->>+ProductManager: _set_state(1)\n else conditions not met\n ProductManager->>+ProductManager: _set_state(0)\n ProductManager->>+ProductManager: config.git_reinit = False\n ProductManager->>+ProductManager: todo_action = any_to_name(WritePRD)\n end\n ProductManager-->>-ProductManager: return bool(rc.todo)\n ProductManager->>+ProductManager: _observe(ignore_memory=False)\n ProductManager-->>-ProductManager: return super()._observe(ignore_memory=True)\n Environment->>Role: add_role(role: Role)\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Iterable: add_roles(roles: Iterable[Role])\n Iterable->>Environment: iterate through roles\n Role->>Environment: set_env(environment)\n Role->>Environment: set_context(context)\n Environment->>Message: publish_message(message: Message, peekable: bool)\n Message-->>Role: put_message(message)\n Environment->>Role: run(k: int)\n Role-->>Environment: run()\n Environment->>Environment: get_roles()\n Environment->>Environment: get_role(name: str)\n Environment->>Environment: role_names()\n Environment->>Environment: is_idle\n Environment->>Environment: get_addresses(obj)\n Environment->>Environment: set_addresses(obj, addresses)\n Environment->>Environment: archive(auto_archive: bool)\n Role->>+Role: __init__\n Role-->>-Role: pydantic_rebuild_model\n Role-->>-Role: _check_actions\n Role-->>-Role: _watch\n Role-->>-Role: set_todo\n Role-->>-Role: git_repo\n Role-->>-Role: src_workspace\n Role-->>-Role: project_repo\n Role-->>-Role: prompt_schema\n Role-->>-Role: project_name\n Role-->>-Role: project_path\n Role-->>-Role: check_addresses\n Role-->>-Role: _reset\n Role-->>-Role: _setting\n Role-->>-Role: _init_action\n Role-->>-Role: set_action\n Role-->>-Role: set_actions\n Role-->>-Role: _set_react_mode\n Role-->>-Role: _get_prefix\n Role-->>-Role: _think\n Role-->>-Role: _act\n Role-->>-Role: _observe\n Role-->>-Role: publish_message\n Role-->>-Role: put_message\n Role-->>-Role: _react\n Role-->>-Role: _act_by_order\n Role-->>-Role: _plan_and_act\n Role-->>-Role: react\n Role-->>-Role: get_memories\n Role-->>-Role: run\n Role-->>-Role: think\n Role-->>-Role: act\n Role-->>-Role: action_description\n Team->>+Team: hire(roles)\n Team->>+Team: invest(investment)\n Team->>+Team: run_project(idea, send_to)\n Team->>+Team: run(n_round, idea, send_to, auto_archive)\n Team->>+Environment: add_roles(roles)\n Team->>+Environment: publish_message(Message, peekable)\n Team->>+Environment: archive(auto_archive)\n Team->>+Context: \n Team->>+Path: SERDESER_PATH.joinpath(\"team\")\n Team->>+Path: stg_path.joinpath(\"team.json\")\n Team->>+Path: read_json_file(team_info_path)\n Team->>+Path: write_json_file(team_info_path, model_dump())\n Team->>+NoMoneyException: raise NoMoneyException\n Team->>+Logger: logger.info()\n Team->>+Logger: logger.debug()\n Team->>+Logger: logger.info()\n SystemAdministrator->>LLMSystem: Provide configuration parameters\n LLMSystem->>LLMSystem: Validate provided parameters\n LLMSystem->>LLMSystem: Configure LLM system with provided parameters\n User->>Message: Create a new message with content, instruct content, role, cause by, sent from, and send to\n Message->>Message: Validate and set the message ID if not provided\n Message->>Message: Validate and set the instruct content if provided\n Message->>Message: Validate and set the cause by if provided\n Message->>Message: Validate and set the sent from if provided\n Message->>Message: Validate and set the send to if provided\n Message->>Message: Create a new message object with the provided data\n Message-->>User: Return the message ID\n User->>Message: Convert the message object to a dictionary\n Message->>Message: Create a dictionary with role and content attributes of the message object\n Message-->>User: Return the created dictionary\n User->>Message: Convert the message object to a JSON string\n Message->>Message: Convert the message object to a JSON string\n Message-->>User: Return the JSON string\n User->>Message: Load a message object from a JSON string\n Message->>Message: Parse the JSON string to a dictionary\n Message->>Message: Create a message object from the dictionary\n Message-->>User: Return the created message object\n Message ->> BaseLLM: msg, system_msgs, format_msgs, timeout, stream\n BaseLLM ->> BaseLLM: Check if system messages are provided\n BaseLLM ->> BaseLLM: Format the messages\n BaseLLM ->> AsyncOpenAI: Send formatted messages\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM -->> Message: rsp\n Message ->> BaseLLM: msgs, timeout\n BaseLLM ->> AsyncOpenAI: Send each message\n AsyncOpenAI -->> BaseLLM: Response\n BaseLLM ->> BaseLLM: Concatenate responses\n BaseLLM -->> Message: rsp_text\n Message ->> BaseLLM: messages, timeout\n BaseLLM -->> BaseLLM: Raise NotImplementedError\n User->>DependencyFile: load()\n alt file exists\n DependencyFile->>DependencyFile: aread(file)\n DependencyFile->>DependencyFile: json.loads(data)\n DependencyFile->>DependencyFile: update internal dependencies\n end\n User->>DependencyFile: save()\n DependencyFile->>DependencyFile: json.dumps(dependencies)\n DependencyFile->>DependencyFile: aiofiles.open(file, \"w\")\n DependencyFile->>DependencyFile: writer.write(data)\n User->>DependencyFile: update(filename, dependencies, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile->>DependencyFile: update internal dependencies\n DependencyFile->>DependencyFile: persist changes\n end\n User->>DependencyFile: get(filename, persist)\n alt persist is true\n DependencyFile->>DependencyFile: load()\n DependencyFile->>DependencyFile: get relative path of filename\n DependencyFile-->>User: return set of dependencies\n end\n User->>DependencyFile: delete_file()\n DependencyFile-->>User: dependency file deleted\n Document ->> FileRepository: save(filename, content, dependencies)\n FileRepository ->> Path: create pathname for file\n FileRepository ->> aiofiles: write content to file\n FileRepository ->> GitRepository: get_dependency()\n GitRepository ->> FileRepository: dependency_file\n FileRepository ->> dependency_file: update(pathname, dependencies)\n FileRepository ->> Document: return saved document\n Document ->> FileRepository: get_dependency(filename)\n FileRepository ->> Path: retrieve pathname of file\n FileRepository ->> dependency_file: get(pathname)\n FileRepository ->> Document: return set of dependencies\n Document ->> FileRepository: get_changed_dependency(filename)\n FileRepository->>FileRepository: get_dependency(filename)\n FileRepository->>FileRepository: identify changed dependent files\n FileRepository->>Document: return set of changed dependencies\n Document ->> FileRepository: get(filename)\n FileRepository ->> Document: create document instance for file\n FileRepository ->> Path: read content of file\n FileRepository ->> Document: return document with content or None\n Document->>FileRepository: get_all(filter_ignored)\n FileRepository->>FileRepository: retrieve content of all files\n FileRepository->>Document: return list of document instances\n Document->>FileRepository: get_change_dir_files(dir)\n FileRepository->>FileRepository: identify changed files within directory\n FileRepository->>Document: return list of changed files\n Document->>FileRepository: save_doc(doc, dependencies)\n FileRepository->>FileRepository: save(filename, content, dependencies)\n FileRepository->>Document: return saved document\n Document->>FileRepository: save_pdf(doc, with_suffix, dependencies)\n FileRepository->>Path: convert content of document to Markdown\n FileRepository->>FileRepository: save content to file with optional suffix\n FileRepository->>Document: return saved document\n Document->>FileRepository: delete(filename)\n FileRepository->>Path: delete file from repository\n FileRepository->>GitRepository: get_dependency()\n GitRepository->>FileRepository: dependency_file\n FileRepository->>dependency_file: update(filename, dependencies)\n FileRepository->>FileRepository: open(local_path, auto_init)\n FileRepository->>FileRepository: add_change(files)\n FileRepository->>FileRepository: commit(comments)\n FileRepository->>FileRepository: delete_repository()\n FileRepository->>FileRepository: changed_files\n FileRepository->>FileRepository: is_git_dir(local_path)\n FileRepository->>FileRepository: is_valid\n FileRepository->>FileRepository: status\n FileRepository->>FileRepository: workdir\n FileRepository->>FileRepository: archive(comments)\n FileRepository->>FileRepository: new_file_repository(relative_path)\n FileRepository->>DependencyFile: get_dependency()\n FileRepository->>FileRepository: rename_root(new_dir_name)\n FileRepository->>FileRepository: get_files(relative_path, root_relative_path, filter_ignored)\n ProjectRepo->>ProjectRepo: __init__(root)\n ProjectRepo->>GitRepository: GitRepository(local_path=Path(root))\n ProjectRepo->>FileRepository: super().__init__(git_repo=git_repo_, relative_path=Path(\".\"))\n ProjectRepo->>DocFileRepositories: self.docs = DocFileRepositories(self._git_repo)\n ProjectRepo->>ResourceFileRepositories: self.resources = ResourceFileRepositories(self._git_repo)\n ProjectRepo->>GitRepository: self.tests = self._git_repo.new_file_repository(relative_path=TEST_CODES_FILE_REPO)\n ProjectRepo->>GitRepository: self.test_outputs = self._git_repo.new_file_repository(relative_path=TEST_OUTPUTS_FILE_REPO)\n ProjectRepo->>Path: return Path(self.git_repo.workdir)\n ProjectRepo->>}"}, {"predicate": "has_participant", "source": "metagpt/startup.py:__name__:__main__", "target": "metagpt/roles/engineer.py:Engineer"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:asyncio", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['AsyncGenerator', 'Awaitable', 'Callable']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Awaitable\",\"Callable\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:pydantic", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.logs", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['logger']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.roles", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['Role']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:module:metagpt.schema", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/subscription.py:names:['Message']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/__init__.py:module:metagpt", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/__init__.py:names:['_compat as _']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt\",\"names\":[\"_compat as _\"]}}"}, {"predicate": "is", "source": "metagpt/llm.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/llm.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/llm.py", "target": "metagpt/llm.py:LLM"}, {"predicate": "is", "source": "metagpt/llm.py:LLM", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:LLM", "target": "{\"lineno\":15,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"LLM\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:ast.Constant:\n@Time : 2023/5/11 14:45\n@Author : alexanderwu\n@File : llm.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:45\\n@Author : alexanderwu\\n@File : llm.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['LLMConfig']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/llm.py:names:['BaseLLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/config2.py:merge_dict", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:merge_dict", "target": "{\"lineno\":135,\"end_lineno\":140,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_dict\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/config2.py:config", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:config", "target": "{\"lineno\":143,\"end_lineno\":143,\"type_name\":\"ast.Assign\",\"tokens\":[\"config\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:ast.Constant:\n@Time : 2024/1/4 01:25\n@Author : alexanderwu\n@File : config2.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 01:25\\n@Author : alexanderwu\\n@File : config2.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['Dict', 'Iterable', 'List', 'Literal', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Iterable\",\"List\",\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['BaseModel', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.browser_config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['BrowserConfig']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.browser_config\",\"names\":[\"BrowserConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.mermaid_config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['MermaidConfig']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.mermaid_config\",\"names\":[\"MermaidConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.redis_config", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['RedisConfig']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.s3_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['S3Config']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.s3_config\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.search_config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['SearchConfig']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.search_config\",\"names\":[\"SearchConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.configs.workspace_config", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['WorkspaceConfig']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.workspace_config\",\"names\":[\"WorkspaceConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['CONFIG_ROOT', 'METAGPT_ROOT']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CONFIG_ROOT\",\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/config2.py:names:['YamlModel']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/team.py:Team:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:_check_balance", "target": "class_method"}, {"predicate": "is", "source": "metagpt/team.py:Team:_save", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/team.py:ast.Constant:\n@Time : 2023/5/12 00:30\n@Author : alexanderwu\n@File : team.py\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\n Section 2.2.3.3 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/12 00:30\\n@Author : alexanderwu\\n@File : team.py\\n@Modified By: mashenquan, 2023/11/27. Add an archiving operation after completing the project, as specified in\\n Section 2.2.3.3 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:warnings", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Any', 'Optional']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.actions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['UserRequirement']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['MESSAGE_ROUTE_TO_ALL', 'SERDESER_PATH']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\",\"SERDESER_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.context", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Context']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.environment", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Environment']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.environment\",\"names\":[\"Environment\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.roles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Role']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.schema", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['Message']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/team.py:names:['NoMoneyException', 'read_json_file', 'serialize_decorator', 'write_json_file']", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"NoMoneyException\",\"read_json_file\",\"serialize_decorator\",\"write_json_file\"]}}"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__getattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__setattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/context.py:AttrDict:__delattr__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/context.py:ast.Constant:\n@Time : 2024/1/4 16:32\n@Author : alexanderwu\n@File : context.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:32\\n@Author : alexanderwu\\n@File : context.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Any', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['BaseModel', 'ConfigDict']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['Config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['LLMConfig']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['BaseLLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['create_llm_instance']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"create_llm_instance\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['CostManager']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['GitRepository']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context.py:names:['ProjectRepo']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/logs.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/logs.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:define_log_level"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:log_llm_stream"}, {"predicate": "has_function", "source": "metagpt/logs.py", "target": "metagpt/logs.py:set_llm_stream_logfunc"}, {"predicate": "is", "source": "metagpt/logs.py:define_log_level", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:define_log_level", "target": "{\"lineno\":18,\"end_lineno\":26,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"define_log_level\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:log_llm_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:log_llm_stream", "target": "{\"lineno\":32,\"end_lineno\":33,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_llm_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:set_llm_stream_logfunc", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:set_llm_stream_logfunc", "target": "{\"lineno\":36,\"end_lineno\":38,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"set_llm_stream_logfunc\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:logger", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:logger", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/logs.py:_llm_stream_log", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:_llm_stream_log", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.Assign\",\"tokens\":[\"_llm_stream_log\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:ast.Constant:\n@Time : 2023/6/1 12:41\n@Author : alexanderwu\n@File : logs.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/1 12:41\\n@Author : alexanderwu\\n@File : logs.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:sys", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:datetime", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['datetime']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:functools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['partial']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"partial\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:loguru", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['logger as _logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger as _logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/logs.py:names:['METAGPT_ROOT']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"METAGPT_ROOT\"]}}"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_df", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:IndexableDocument:_get_docs_and_metadatas_by_langchain", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:Repo:_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:Repo:_set", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document.py:validate_cols", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/document.py:validate_cols", "target": "{\"lineno\":26,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"validate_cols\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document.py:read_data", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/document.py:read_data", "target": "{\"lineno\":31,\"end_lineno\":50,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_data\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:ast.Constant:\n@Time : 2023/6/8 14:03\n@Author : alexanderwu\n@File : document.py\n@Desc : Classes and Operations Related to Files in the File System.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/8 14:03\\n@Author : alexanderwu\\n@File : document.py\\n@Desc : Classes and Operations Related to Files in the File System.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:enum", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Enum']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:pandas as pd", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:langchain.document_loaders", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['TextLoader', 'UnstructuredPDFLoader', 'UnstructuredWordDocumentLoader']", "target": "{\"lineno\":14,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.document_loaders\",\"names\":[\"TextLoader\",\"UnstructuredPDFLoader\",\"UnstructuredWordDocumentLoader\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:langchain.text_splitter", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['CharacterTextSplitter']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.text_splitter\",\"names\":[\"CharacterTextSplitter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:pydantic", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:tqdm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['tqdm']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tqdm\",\"names\":[\"tqdm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:module:metagpt.repo_parser", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document.py:names:['RepoParser']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : environment.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n 1. Remove the functionality of `Environment` class as a public message buffer.\n 2. Standardize the message forwarding behavior of the `Environment` class.\n 3. Add the `is_idle` property.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n", "target": "{\"lineno\":3,\"end_lineno\":13,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : environment.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n 1. Remove the functionality of `Environment` class as a public message buffer.\\n 2. Standardize the message forwarding behavior of the `Environment` class.\\n 3. Add the `is_idle` property.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:asyncio", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Iterable', 'Set']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:pydantic", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.context", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Context']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.roles.role", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Role']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['Message']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:module:metagpt.utils.common", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_send_to\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/environment.py:names:['is_send_to']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"is_send_to\"]}}"}, {"predicate": "is", "source": "metagpt/_compat.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/_compat.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:platform", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:sys", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:warnings", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"warnings\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/_compat.py:n:a:m:e:p:l:a:t:f:o:r:m:.:s:y:s:t:e:m", "target": "{\"lineno\":5,\"end_lineno\":23,\"type_name\":\"ast.If\",\"tokens\":[\"n\",\"a\",\"m\",\"e\",\"p\",\"l\",\"a\",\"t\",\"f\",\"o\",\"r\",\"m\",\".\",\"s\",\"y\",\"s\",\"t\",\"e\",\"m\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/context_mixin.py:ContextMixin:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:ast.Constant:\n@Time : 2024/1/11 17:25\n@Author : alexanderwu\n@File : context_mixin.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/11 17:25\\n@Author : alexanderwu\\n@File : context_mixin.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.context", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['Context']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/context_mixin.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/const.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/const.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/const.py", "target": "metagpt/const.py:get_metagpt_package_root"}, {"predicate": "has_function", "source": "metagpt/const.py", "target": "metagpt/const.py:get_metagpt_root"}, {"predicate": "is", "source": "metagpt/const.py:get_metagpt_package_root", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/const.py:get_metagpt_package_root", "target": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_package_root\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:get_metagpt_root", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/const.py:get_metagpt_root", "target": "{\"lineno\":33,\"end_lineno\":43,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_metagpt_root\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CONFIG_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CONFIG_ROOT", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONFIG_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:METAGPT_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:METAGPT_ROOT", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_WORKSPACE_ROOT", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_WORKSPACE_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:EXAMPLE_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:EXAMPLE_PATH", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DATA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DATA_PATH", "target": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_DATA_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_DATA_PATH", "target": "{\"lineno\":53,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_DATA_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:RESEARCH_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:RESEARCH_PATH", "target": "{\"lineno\":54,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TUTORIAL_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TUTORIAL_PATH", "target": "{\"lineno\":55,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"TUTORIAL_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:INVOICE_OCR_TABLE_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:INVOICE_OCR_TABLE_PATH", "target": "{\"lineno\":56,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_TABLE_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:UT_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:UT_PATH", "target": "{\"lineno\":58,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SWAGGER_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SWAGGER_PATH", "target": "{\"lineno\":59,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"SWAGGER_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:UT_PY_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:UT_PY_PATH", "target": "{\"lineno\":60,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"UT_PY_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:API_QUESTIONS_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:API_QUESTIONS_PATH", "target": "{\"lineno\":61,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"API_QUESTIONS_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SERDESER_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SERDESER_PATH", "target": "{\"lineno\":63,\"end_lineno\":63,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERDESER_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TMP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TMP", "target": "{\"lineno\":65,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"TMP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SOURCE_ROOT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SOURCE_ROOT", "target": "{\"lineno\":67,\"end_lineno\":67,\"type_name\":\"ast.Assign\",\"tokens\":[\"SOURCE_ROOT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PROMPT_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PROMPT_PATH", "target": "{\"lineno\":68,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SKILL_DIRECTORY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SKILL_DIRECTORY", "target": "{\"lineno\":69,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_DIRECTORY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MEM_TTL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MEM_TTL", "target": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"MEM_TTL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_FROM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_FROM", "target": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_FROM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO", "target": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_CAUSE_BY", "target": "{\"lineno\":77,\"end_lineno\":77,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_CAUSE_BY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_META_ROLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_META_ROLE", "target": "{\"lineno\":78,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_META_ROLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_ALL", "target": "{\"lineno\":79,\"end_lineno\":79,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_ALL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:MESSAGE_ROUTE_TO_NONE", "target": "{\"lineno\":80,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"MESSAGE_ROUTE_TO_NONE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:REQUIREMENT_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:REQUIREMENT_FILENAME", "target": "{\"lineno\":82,\"end_lineno\":82,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BUGFIX_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BUGFIX_FILENAME", "target": "{\"lineno\":83,\"end_lineno\":83,\"type_name\":\"ast.Assign\",\"tokens\":[\"BUGFIX_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PACKAGE_REQUIREMENTS_FILENAME", "target": "{\"lineno\":84,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PACKAGE_REQUIREMENTS_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILENAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILENAME", "target": "{\"lineno\":85,\"end_lineno\":85,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILENAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DOCS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DOCS_FILE_REPO", "target": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"DOCS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PRDS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PRDS_FILE_REPO", "target": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRDS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SYSTEM_DESIGN_FILE_REPO", "target": "{\"lineno\":89,\"end_lineno\":89,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TASK_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TASK_FILE_REPO", "target": "{\"lineno\":90,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_FILE_REPO", "target": "{\"lineno\":91,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMPETITIVE_ANALYSIS_FILE_REPO", "target": "{\"lineno\":92,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DATA_API_DESIGN_FILE_REPO", "target": "{\"lineno\":93,\"end_lineno\":93,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_API_DESIGN_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SEQ_FLOW_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SEQ_FLOW_FILE_REPO", "target": "{\"lineno\":94,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEQ_FLOW_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SYSTEM_DESIGN_PDF_FILE_REPO", "target": "{\"lineno\":95,\"end_lineno\":95,\"type_name\":\"ast.Assign\",\"tokens\":[\"SYSTEM_DESIGN_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:PRD_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:PRD_PDF_FILE_REPO", "target": "{\"lineno\":96,\"end_lineno\":96,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRD_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TASK_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TASK_PDF_FILE_REPO", "target": "{\"lineno\":97,\"end_lineno\":97,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_PLAN_AND_CHANGE_PDF_FILE_REPO", "target": "{\"lineno\":98,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_CODES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_CODES_FILE_REPO", "target": "{\"lineno\":99,\"end_lineno\":99,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_CODES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:TEST_OUTPUTS_FILE_REPO", "target": "{\"lineno\":100,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEST_OUTPUTS_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_SUMMARIES_FILE_REPO", "target": "{\"lineno\":101,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CODE_SUMMARIES_PDF_FILE_REPO", "target": "{\"lineno\":102,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_SUMMARIES_PDF_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:RESOURCES_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:RESOURCES_FILE_REPO", "target": "{\"lineno\":103,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESOURCES_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SD_OUTPUT_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SD_OUTPUT_FILE_REPO", "target": "{\"lineno\":104,\"end_lineno\":104,\"type_name\":\"ast.Assign\",\"tokens\":[\"SD_OUTPUT_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:GRAPH_REPO_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:GRAPH_REPO_FILE_REPO", "target": "{\"lineno\":105,\"end_lineno\":105,\"type_name\":\"ast.Assign\",\"tokens\":[\"GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:VISUAL_GRAPH_REPO_FILE_REPO", "target": "{\"lineno\":106,\"end_lineno\":106,\"type_name\":\"ast.Assign\",\"tokens\":[\"VISUAL_GRAPH_REPO_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:CLASS_VIEW_FILE_REPO", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:CLASS_VIEW_FILE_REPO", "target": "{\"lineno\":107,\"end_lineno\":107,\"type_name\":\"ast.Assign\",\"tokens\":[\"CLASS_VIEW_FILE_REPO\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:YAPI_URL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:YAPI_URL", "target": "{\"lineno\":109,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"YAPI_URL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_LANGUAGE", "target": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_MAX_TOKENS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_MAX_TOKENS", "target": "{\"lineno\":112,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_MAX_TOKENS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMMAND_TOKENS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMMAND_TOKENS", "target": "{\"lineno\":113,\"end_lineno\":113,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMAND_TOKENS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BRAIN_MEMORY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BRAIN_MEMORY", "target": "{\"lineno\":114,\"end_lineno\":114,\"type_name\":\"ast.Assign\",\"tokens\":[\"BRAIN_MEMORY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SKILL_PATH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SKILL_PATH", "target": "{\"lineno\":115,\"end_lineno\":115,\"type_name\":\"ast.Assign\",\"tokens\":[\"SKILL_PATH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:SERPER_API_KEY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:SERPER_API_KEY", "target": "{\"lineno\":116,\"end_lineno\":116,\"type_name\":\"ast.Assign\",\"tokens\":[\"SERPER_API_KEY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:DEFAULT_TOKEN_SIZE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:DEFAULT_TOKEN_SIZE", "target": "{\"lineno\":117,\"end_lineno\":117,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_TOKEN_SIZE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:BASE64_FORMAT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:BASE64_FORMAT", "target": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"BASE64_FORMAT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:REDIS_KEY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:REDIS_KEY", "target": "{\"lineno\":123,\"end_lineno\":123,\"type_name\":\"ast.Assign\",\"tokens\":[\"REDIS_KEY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:LLM_API_TIMEOUT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:LLM_API_TIMEOUT", "target": "{\"lineno\":124,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_API_TIMEOUT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:IGNORED_MESSAGE_ID", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:IGNORED_MESSAGE_ID", "target": "{\"lineno\":127,\"end_lineno\":127,\"type_name\":\"ast.Assign\",\"tokens\":[\"IGNORED_MESSAGE_ID\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:GENERALIZATION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:GENERALIZATION", "target": "{\"lineno\":130,\"end_lineno\":130,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERALIZATION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:COMPOSITION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:COMPOSITION", "target": "{\"lineno\":131,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPOSITION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/const.py:AGGREGATION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/const.py:AGGREGATION", "target": "{\"lineno\":132,\"end_lineno\":132,\"type_name\":\"ast.Assign\",\"tokens\":[\"AGGREGATION\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:ast.Constant:\n@Time : 2023/5/1 11:59\n@Author : alexanderwu\n@File : const.py\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\n common properties in the Message.\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/1 11:59\\n@Author : alexanderwu\\n@File : const.py\\n@Modified By: mashenquan, 2023-11-1. According to Section 2.2.1 and 2.2.2 of RFC 116, added key definitions for\\n common properties in the Message.\\n@Modified By: mashenquan, 2023-11-27. Defines file repository paths according to Section 2.2.3.4 of RFC 135.\\n@Modified By: mashenquan, 2023/12/5. Add directories for code summarization..\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:os", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:module:loguru", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"loguru\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/const.py:metagpt", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__serialize_with_class_type__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__convert_to_real_type__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SerializationMixin:__init_subclass__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Document:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__setattr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:Message:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:UserMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:SystemMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:AIMessage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:CodeSummarizeContext:__hash__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/schema.py:T", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:T", "target": "{\"lineno\":407,\"end_lineno\":407,\"type_name\":\"ast.Assign\",\"tokens\":[\"T\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:ast.Constant:\n@Time : 2023/5/8 22:12\n@Author : alexanderwu\n@File : schema.py\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\n@Modified By: mashenquan, 2023/11/22.\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\n between actions.\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 22:12\\n@Author : alexanderwu\\n@File : schema.py\\n@Modified By: mashenquan, 2023-10-31. According to Chapter 2.2.1 of RFC 116:\\n Replanned the distribution of responsibilities and functional positioning of `Message` class attributes.\\n@Modified By: mashenquan, 2023/11/22.\\n 1. Add `Document` and `Documents` for `FileRepository` in Section 2.2.3.4 of RFC 135.\\n 2. Encapsulate the common key-values set to pydantic structures to standardize and unify parameter passing\\n between actions.\\n 3. Add `id` to `Message` according to Section 2.2.3.1.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:__future__", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['annotations']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:asyncio", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:json", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:os.path", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:uuid", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:abc", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['ABC']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:asyncio", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Queue', 'QueueEmpty', 'wait_for']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"asyncio\",\"names\":[\"Queue\",\"QueueEmpty\",\"wait_for\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:json", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['JSONDecodeError']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['Any', 'Dict', 'Iterable', 'List', 'Optional', 'Type', 'TypeVar', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Iterable\",\"List\",\"Optional\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:pydantic", "target": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['BaseModel', 'ConfigDict', 'Field', 'PrivateAttr', 'field_serializer', 'field_validator', 'model_serializer', 'model_validator']", "target": "{\"lineno\":28,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"PrivateAttr\",\"field_serializer\",\"field_validator\",\"model_serializer\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.const", "target": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['CODE_PLAN_AND_CHANGE_FILENAME', 'MESSAGE_ROUTE_CAUSE_BY', 'MESSAGE_ROUTE_FROM', 'MESSAGE_ROUTE_TO', 'MESSAGE_ROUTE_TO_ALL', 'PRDS_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":39,\"end_lineno\":48,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"MESSAGE_ROUTE_CAUSE_BY\",\"MESSAGE_ROUTE_FROM\",\"MESSAGE_ROUTE_TO\",\"MESSAGE_ROUTE_TO_ALL\",\"PRDS_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.logs", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['logger']", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.repo_parser", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['DotClassInfo']", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.common", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['any_to_str', 'any_to_str_set', 'import_class']", "target": "{\"lineno\":51,\"end_lineno\":51,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\",\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['handle_exception']", "target": "{\"lineno\":52,\"end_lineno\":52,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:module:metagpt.utils.serialize", "target": "{\"lineno\":53,\"end_lineno\":57,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/schema.py:names:['actionoutout_schema_to_mapping', 'actionoutput_mapping_to_str', 'actionoutput_str_to_mapping']", "target": "{\"lineno\":53,\"end_lineno\":57,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"actionoutout_schema_to_mapping\",\"actionoutput_mapping_to_str\",\"actionoutput_str_to_mapping\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_image.py", "target": "metagpt/learn/text_to_image.py:text_to_image"}, {"predicate": "is", "source": "metagpt/learn/text_to_image.py:text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:text_to_image", "target": "{\"lineno\":20,\"end_lineno\":44,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_image.py\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_image.py\\n@Desc : Text-to-Image skill, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['Config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['LLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.tools.metagpt_text_to_image", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['oas3_metagpt_text_to_image']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.metagpt_text_to_image\",\"names\":[\"oas3_metagpt_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.tools.openai_text_to_image", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['oas3_openai_text_to_image']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_image\",\"names\":[\"oas3_openai_text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:module:metagpt.utils.s3", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_image.py:names:['S3']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "is", "source": "metagpt/learn/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/learn/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:__all__", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_image", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['text_to_image']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_image\",\"names\":[\"text_to_image\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.text_to_speech", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['text_to_speech']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.text_to_speech\",\"names\":[\"text_to_speech\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:module:metagpt.learn.google_search", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/__init__.py:names:['google_search']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.google_search\",\"names\":[\"google_search\"]}}"}, {"predicate": "is", "source": "metagpt/learn/google_search.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/google_search.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/google_search.py", "target": "metagpt/learn/google_search.py:google_search"}, {"predicate": "is", "source": "metagpt/learn/google_search.py:google_search", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:google_search", "target": "{\"lineno\":4,\"end_lineno\":12,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"google_search\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/google_search.py:names:['SearchEngine']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_speech.py", "target": "metagpt/learn/text_to_speech.py:text_to_speech"}, {"predicate": "is", "source": "metagpt/learn/text_to_speech.py:text_to_speech", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:text_to_speech", "target": "{\"lineno\":17,\"end_lineno\":69,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_speech\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : text_to_speech.py\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : text_to_speech.py\\n@Desc : Text-to-Speech skill, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:metagpt.config2", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['Config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.const", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.tools.azure_tts", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['oas3_azsure_tts']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.azure_tts\",\"names\":[\"oas3_azsure_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.tools.iflytek_tts", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['oas3_iflytek_tts']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.iflytek_tts\",\"names\":[\"oas3_iflytek_tts\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:module:metagpt.utils.s3", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_speech.py:names:['S3']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.s3\",\"names\":[\"S3\"]}}"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/learn/text_to_embedding.py", "target": "metagpt/learn/text_to_embedding.py:text_to_embedding"}, {"predicate": "is", "source": "metagpt/learn/text_to_embedding.py:text_to_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:text_to_embedding", "target": "{\"lineno\":14,\"end_lineno\":24,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"text_to_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : text_to_embedding.py\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : text_to_embedding.py\\n@Desc : Text-to-Embedding skill, which provides text-to-embedding functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:metagpt.config2", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"metagpt.config2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:names:['Config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:module:metagpt.tools.openai_text_to_embedding", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/text_to_embedding.py:names:['oas3_openai_text_to_embedding']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.openai_text_to_embedding\",\"names\":[\"oas3_openai_text_to_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : skill_loader.py\n@Desc : Skill YAML Configuration Loader.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : skill_loader.py\\n@Desc : Skill YAML Configuration Loader.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:aiofiles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:yaml", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:module:metagpt.context", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/learn/skill_loader.py:names:['Context']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_ddg.py:DDGAPIWrapper:_search_from_ddgs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:concurrent", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['futures']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['Literal', 'overload']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:names:['config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_ddg.py:__name__:__main__", "target": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/metagpt_oas3_api_svc.py", "target": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc"}, {"predicate": "is", "source": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:oas_http_svc", "target": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"oas_http_svc\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : metagpt_oas3_api_svc.py\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\n\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : metagpt_oas3_api_svc.py\\n@Desc : MetaGPT OpenAPI Specification 3.0 REST API service\\n\\n curl -X 'POST' 'http://localhost:8080/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:module:pathlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:names:['Path']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:connexion", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_oas3_api_svc.py:__name__:__main__", "target": "{\"lineno\":31,\"end_lineno\":32,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:DataSource:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine_meilisearch.py:MeilisearchEngine:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:ast.Constant:\n@Time : 2023/5/22 21:33\n@Author : alexanderwu\n@File : search_engine_meilisearch.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/22 21:33\\n@Author : alexanderwu\\n@File : search_engine_meilisearch.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['List']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:meilisearch", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"meilisearch\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:meilisearch.index", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['Index']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"meilisearch.index\",\"names\":[\"Index\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_meilisearch.py:names:['handle_exception']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:OpenAIText2Embedding:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:oas3_openai_text_to_embedding", "target": "{\"lineno\":75,\"end_lineno\":85,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : openai_text_to_embedding.py\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : openai_text_to_embedding.py\\n@Desc : OpenAI Text-to-Embedding OAS3 api, which provides text-to-embedding functionality.\\n For more details, checkout: `https://platform.openai.com/docs/api-reference/embeddings/object`\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_embedding.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serpapi.py:SerpAPIWrapper:_process_response", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['Any', 'Dict', 'Optional', 'Tuple']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:module:metagpt.config2", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:names:['config']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serpapi.py:__name__:__main__", "target": "{\"lineno\":113,\"end_lineno\":116,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_scrape", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:PlaywrightWrapper:_run_precheck", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_get_install_lock", "target": "{\"lineno\":98,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_install_lock\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_browsers", "target": "{\"lineno\":105,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_install_browsers\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_log_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_log_stream", "target": "{\"lineno\":131,\"end_lineno\":136,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"_log_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_lock", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_lock", "target": "{\"lineno\":139,\"end_lineno\":139,\"type_name\":\"ast.AnnAssign\",\"tokens\":[\"_install_lock\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_cache", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:_install_cache", "target": "{\"lineno\":140,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"_install_cache\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:__future__", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['annotations']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:asyncio", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:sys", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['Literal']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:playwright.async_api", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['async_playwright']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.config2", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['config']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_playwright.py:names:['WebPage']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SkSearchEngine:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/search_engine.py:SearchEngine:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:ast.Constant:\n@Time : 2023/5/6 20:15\n@Author : alexanderwu\n@File : search_engine.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/6 20:15\\n@Author : alexanderwu\\n@File : search_engine.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:importlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['Callable', 'Coroutine', 'Literal', 'Optional', 'Union', 'overload']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Coroutine\",\"Literal\",\"Optional\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:semantic_kernel.skill_definition", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['sk_function']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.skill_definition\",\"names\":[\"sk_function\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:module:metagpt.tools", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine.py:names:['SearchEngineType']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine.py:WebBrowserEngine:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:__future__", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['annotations']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:importlib", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['Any', 'Callable', 'Coroutine', 'overload']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Coroutine\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.tools", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['WebBrowserEngineType']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine.py:names:['WebPage']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_serper.py:SerperWrapper:_process_response", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:ast.Constant:\n@Time : 2023/5/23 18:27\n@Author : alexanderwu\n@File : search_engine_serpapi.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 18:27\\n@Author : alexanderwu\\n@File : search_engine_serpapi.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:json", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['Any', 'Dict', 'Optional', 'Tuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"Optional\",\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:aiohttp", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:names:['config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_serper.py:__name__:__main__", "target": "{\"lineno\":115,\"end_lineno\":118,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/moderation.py:Moderation:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:ast.Constant:\n@Time : 2023/9/26 14:27\n@Author : zhanglei\n@File : moderation.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/26 14:27\\n@Author : zhanglei\\n@File : moderation.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:names:['Union']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/moderation.py:names:['BaseLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/__init__.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/tools/__init__.py", "target": "metagpt/tools/__init__.py:SearchEngineType"}, {"predicate": "has_class", "source": "metagpt/tools/__init__.py", "target": "metagpt/tools/__init__.py:WebBrowserEngineType"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:SearchEngineType", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"SearchEngineType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "class"}, {"predicate": "has_class_method", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:WebBrowserEngineType", "target": "{\"lineno\":21,\"end_lineno\":29,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"WebBrowserEngineType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/__init__.py:WebBrowserEngineType:__missing__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:35\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:35\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:module:enum", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/__init__.py:names:['Enum']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "is", "source": "metagpt/tools/search_engine_googleapi.py:safe_google_results", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:safe_google_results", "target": "{\"lineno\":120,\"end_lineno\":133,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"safe_google_results\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:concurrent", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['futures']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:urllib.parse", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['urlparse']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:httplib2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"httplib2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['BaseModel', 'ConfigDict', 'Field', 'field_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/search_engine_googleapi.py:__name__:__main__", "target": "{\"lineno\":136,\"end_lineno\":139,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_run_precheck", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:SeleniumWrapper:_scrape_website", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:_gen_get_driver_func", "target": "{\"lineno\":101,\"end_lineno\":125,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_gen_get_driver_func\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:_webdriver_manager_types", "target": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"_webdriver_manager_types\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:__future__", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['annotations']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:asyncio", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:importlib", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:concurrent", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['futures']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"concurrent\",\"names\":[\"futures\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:copy", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['deepcopy']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['Literal']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.common.by", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['By']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.common.by\",\"names\":[\"By\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['expected_conditions as EC']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support\",\"names\":[\"expected_conditions as EC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:selenium.webdriver.support.wait", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WebDriverWait']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"selenium.webdriver.support.wait\",\"names\":[\"WebDriverWait\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.download_manager", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMDownloadManager']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.download_manager\",\"names\":[\"WDMDownloadManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:webdriver_manager.core.http", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WDMHttpClient']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"webdriver_manager.core.http\",\"names\":[\"WDMHttpClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.config2", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['config']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:module:metagpt.utils.parse_html", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/web_browser_engine_selenium.py:names:['WebPage']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.parse_html\",\"names\":[\"WebPage\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/tools/openapi_v3_hello.py", "target": "metagpt/tools/openapi_v3_hello.py:post_greeting"}, {"predicate": "is", "source": "metagpt/tools/openapi_v3_hello.py:post_greeting", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:post_greeting", "target": "{\"lineno\":21,\"end_lineno\":22,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"post_greeting\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : mashenquan\n@File : openapi_v3_hello.py\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\n\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\n", "target": "{\"lineno\":3,\"end_lineno\":14,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : mashenquan\\n@File : openapi_v3_hello.py\\n@Desc : Implement the OpenAPI Specification 3.0 demo and use the following command to test the HTTP service:\\n\\n curl -X 'POST' 'http://localhost:8082/openapi/greeting/dave' -H 'accept: text/plain' -H 'Content-Type: application/json' -d '{}'\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:module:pathlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:names:['Path']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:connexion", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"connexion\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openapi_v3_hello.py:__name__:__main__", "target": "{\"lineno\":25,\"end_lineno\":29,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:AzureTTS:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/azure_tts.py:oas3_azsure_tts", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:oas3_azsure_tts", "target": "{\"lineno\":60,\"end_lineno\":100,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_azsure_tts\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:ast.Constant:\n@Time : 2023/6/9 22:22\n@Author : Leo Xiao\n@File : azure_tts.py\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/9 22:22\\n@Author : Leo Xiao\\n@File : azure_tts.py\\n@Modified by: mashenquan, 2023/8/17. Azure TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:uuid", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['uuid4']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:aiofiles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:azure.cognitiveservices.speech", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['AudioConfig', 'SpeechConfig', 'SpeechSynthesizer']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"azure.cognitiveservices.speech\",\"names\":[\"AudioConfig\",\"SpeechConfig\",\"SpeechSynthesizer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/azure_tts.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:OpenAIText2Image:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:oas3_openai_text_to_image", "target": "{\"lineno\":57,\"end_lineno\":67,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_openai_text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : openai_text_to_image.py\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : openai_text_to_image.py\\n@Desc : OpenAI Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:requests", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/openai_text_to_image.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:__para_to_str", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:_para_to_str", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:UTGenerator:_generate_ut", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:ICL_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:ICL_SAMPLE", "target": "{\"lineno\":11,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"ICL_SAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:ACT_PROMPT_PREFIX", "target": "{\"lineno\":67,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ACT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:YFT_PROMPT_PREFIX", "target": "{\"lineno\":72,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"YFT_PROMPT_PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/ut_writer.py:OCR_API_DOC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:OCR_API_DOC", "target": "{\"lineno\":78,\"end_lineno\":101,\"type_name\":\"ast.Assign\",\"tokens\":[\"OCR_API_DOC\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:json", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.config2", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['config']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['OpenAILLM as GPTAPI']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM as GPTAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:module:metagpt.utils.common", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/ut_writer.py:names:['awrite']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"awrite\"]}}"}, {"predicate": "is", "source": "metagpt/tools/translator.py:prompt", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:prompt", "target": "{\"lineno\":9,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"prompt\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/translator.py:ast.Constant:\n@Time : 2023/4/29 15:36\n@Author : alexanderwu\n@File : translator.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:36\\n@Author : alexanderwu\\n@File : translator.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:MetaGPTText2Image:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:oas3_metagpt_text_to_image", "target": "{\"lineno\":85,\"end_lineno\":95,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_metagpt_text_to_image\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : metagpt_text_to_image.py\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : metagpt_text_to_image.py\\n@Desc : MetaGPT Text-to-Image OAS3 api, which provides text-to-image functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['Dict', 'List']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:aiohttp", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:requests", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:pydantic", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['BaseModel']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/metagpt_text_to_image.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:IFlyTekTTS:_create_url", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:oas3_iflytek_tts", "target": "{\"lineno\":117,\"end_lineno\":143,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"oas3_iflytek_tts\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:DEFAULT_IFLYTEK_VOICE", "target": "{\"lineno\":48,\"end_lineno\":48,\"type_name\":\"ast.Assign\",\"tokens\":[\"DEFAULT_IFLYTEK_VOICE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:ast.Constant:\n@Time : 2023/8/17\n@Author : mashenquan\n@File : iflytek_tts.py\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/17\\n@Author : mashenquan\\n@File : iflytek_tts.py\\n@Desc : iFLYTEK TTS OAS3 api, which provides text-to-speech functionality\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:base64", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:hashlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:hmac", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:uuid", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:datetime", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['datetime']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:enum", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Enum']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:pathlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Path']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:time", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['mktime']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:typing", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['Optional']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:urllib.parse", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['urlencode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:wsgiref.handlers", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['format_date_time']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:aiofiles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:websockets as websockets", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"websockets as websockets\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:pydantic", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['BaseModel']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/iflytek_tts.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:GPTPromptGenerator:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:WikiHowTemplate:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:EnronTemplate:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/tools/prompt_writer.py:BEAGECTemplate:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:ast.Constant:\n@Time : 2023/5/2 16:03\n@Author : alexanderwu\n@File : prompt_writer.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/2 16:03\\n@Author : alexanderwu\\n@File : prompt_writer.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/tools/prompt_writer.py:names:['Union']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:ast.Constant:\n@Time : 2023/5/20 12:15\n@Author : alexanderwu\n@File : memory.py\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 12:15\\n@Author : alexanderwu\\n@File : memory.py\\n@Modified By: mashenquan, 2023-11-1. According to RFC 116: Updated the type of index key.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:collections", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['defaultdict']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['DefaultDict', 'Iterable', 'Set']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"DefaultDict\",\"Iterable\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['BaseModel', 'Field', 'SerializeAsAny']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"SerializeAsAny\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['IGNORED_MESSAGE_ID']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"IGNORED_MESSAGE_ID\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:module:metagpt.utils.common", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory.py:names:['any_to_str', 'any_to_str_set']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_metagpt_rewrite", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_openai_rewrite", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/brain_memory.py:BrainMemory:_get_summary", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:ast.Constant:\n@Time : 2023/8/18\n@Author : mashenquan\n@File : brain_memory.py\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/18\\n@Author : mashenquan\\n@File : brain_memory.py\\n@Desc : Used by AgentStore. Used for long-term storage and automatic compression.\\n@Modified By: mashenquan, 2023/9/4. + redis memory cache.\\n@Modified By: mashenquan, 2023/12/25. Simplify Functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Dict', 'List', 'Optional']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.config2", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['config']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['DEFAULT_MAX_TOKENS', 'DEFAULT_TOKEN_SIZE']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_MAX_TOKENS\",\"DEFAULT_TOKEN_SIZE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.provider", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['MetaGPTLLM']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Message', 'SimpleMessage']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"SimpleMessage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:module:metagpt.utils.redis", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/brain_memory.py:names:['Redis']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.redis\",\"names\":[\"Redis\"]}}"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/memory/memory_storage.py:MemoryStorage:_get_index_and_store_fname", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:ast.Constant:\n@Desc : the implement of memory storage\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of memory storage\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:pathlib", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Path']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain.embeddings", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain.vectorstores.faiss", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['FAISS']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores.faiss\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:langchain_core.embeddings", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Embeddings']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['DATA_PATH', 'MEM_TTL']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_PATH\",\"MEM_TTL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.document_store.faiss_store", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['FaissStore']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['Message']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:module:metagpt.utils.serialize", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/memory_storage.py:names:['deserialize_message', 'serialize_message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.serialize\",\"names\":[\"deserialize_message\",\"serialize_message\"]}}"}, {"predicate": "is", "source": "metagpt/memory/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/memory/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/memory/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:__all__", "target": "{\"lineno\":14,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:57\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:57\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:module:metagpt.memory.memory", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/__init__.py:names:['Memory']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:ast.Constant:\n@Desc : the implement of Long-term memory\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Desc : the implement of Long-term memory\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Optional']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['ConfigDict', 'Field']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.memory", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Memory']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.memory.memory_storage", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['MemoryStorage']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.memory_storage\",\"names\":[\"MemoryStorage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.roles.role", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['RoleContext']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"RoleContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/memory/longterm_memory.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/qdrant_store.py:QdrantStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:dataclasses", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['dataclass']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"dataclasses\",\"names\":[\"dataclass\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:typing", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['List']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:qdrant_client", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['QdrantClient']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client\",\"names\":[\"QdrantClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:qdrant_client.models", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['Filter', 'PointStruct', 'VectorParams']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"qdrant_client.models\",\"names\":[\"Filter\",\"PointStruct\",\"VectorParams\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/qdrant_store.py:names:['BaseStore']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/chromadb_store.py:ChromaStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:ast.Constant:\n@Time : 2023/5/29 14:46\n@Author : alexanderwu\n@File : chromadb_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/29 14:46\\n@Author : alexanderwu\\n@File : chromadb_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/chromadb_store.py:chromadb", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"chromadb\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document_store/lancedb_store.py:LanceStore:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:ast.Constant:\n@Time : 2023/8/9 15:42\n@Author : unkn-wn (Leon Yee)\n@File : lancedb_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/9 15:42\\n@Author : unkn-wn (Leon Yee)\\n@File : lancedb_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:shutil", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/lancedb_store.py:lancedb", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"lancedb\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/document_store/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:__all__", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:module:metagpt.document_store.faiss_store", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/__init__.py:names:['FaissStore']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.faiss_store\",\"names\":[\"FaissStore\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/faiss_store.py:FaissStore:_write", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:ast.Constant:\n@Time : 2023/5/25 10:20\n@Author : alexanderwu\n@File : faiss_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 10:20\\n@Author : alexanderwu\\n@File : faiss_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Optional']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain.vectorstores", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['FAISS']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain.vectorstores\",\"names\":[\"FAISS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:langchain_core.embeddings", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['Embeddings']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_core.embeddings\",\"names\":[\"Embeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.document", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['IndexableDocument']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document\",\"names\":[\"IndexableDocument\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['LocalStore']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"LocalStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:module:metagpt.utils.embedding", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/faiss_store.py:names:['get_embedding']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.embedding\",\"names\":[\"get_embedding\"]}}"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_get_index_and_store_fname", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/document_store/base_store.py:LocalStore:_write", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:ast.Constant:\n@Time : 2023/5/28 00:01\n@Author : alexanderwu\n@File : base_store.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/28 00:01\\n@Author : alexanderwu\\n@File : base_store.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/document_store/base_store.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "is", "source": "metagpt/provider/anthropic_api.py:Claude2:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:ast.Constant:\n@Time : 2023/7/21 11:15\n@Author : Leo Xiao\n@File : anthropic_api.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/21 11:15\\n@Author : Leo Xiao\\n@File : anthropic_api.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:anthropic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"anthropic\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:module:anthropic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:names:['Anthropic', 'AsyncAnthropic']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anthropic\",\"names\":[\"Anthropic\",\"AsyncAnthropic\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/anthropic_api.py:names:['LLMConfig']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:__init_gemini", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_user_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_assistant_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/google_gemini_api.py:GeminiLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:google.generativeai as genai", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"google.generativeai as genai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.ai", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['generativelanguage as glm']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.ai\",\"names\":[\"generativelanguage as glm\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.generative_models", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['GenerativeModel']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.generative_models\",\"names\":[\"GenerativeModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['content_types']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types\",\"names\":[\"content_types\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:google.generativeai.types.generation_types", "target": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['AsyncGenerateContentResponse', 'GenerateContentResponse', 'GenerationConfig']", "target": "{\"lineno\":9,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"google.generativeai.types.generation_types\",\"names\":[\"AsyncGenerateContentResponse\",\"GenerateContentResponse\",\"GenerationConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:tenacity", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":14,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.logs", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['BaseLLM']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['register_provider']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/google_gemini_api.py:names:['log_and_reraise']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_init_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/azure_openai_api.py:AzureOpenAILLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n", "target": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:openai", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['AsyncAzureOpenAI']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncAzureOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:openai._base_client", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['AsyncHttpxClientWrapper']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['LLMType']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['register_provider']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/azure_openai_api.py:names:['OpenAILLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:FireworksLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:MODEL_GRADE_TOKEN_COSTS", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"MODEL_GRADE_TOKEN_COSTS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:re", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['APIConnectionError', 'AsyncStream']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai.types", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CompletionUsage']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:openai.types.chat", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['ChatCompletionChunk']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['register_provider']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['OpenAILLM', 'log_and_reraise']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\",\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/fireworks_api.py:names:['CostManager', 'Costs']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:__init_ollama", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_decode_and_load", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/ollama_api.py:OllamaLLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:requests", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['ConnectionError']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:tenacity", "target": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":8,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.const", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['LLM_API_TIMEOUT']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"LLM_API_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.logs", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['BaseLLM']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.general_api_requestor", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['GeneralAPIRequestor']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['register_provider']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['log_and_reraise']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/ollama_api.py:names:['TokenCostManager']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"TokenCostManager\"]}}"}, {"predicate": "is", "source": "metagpt/provider/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/provider/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:__all__", "target": "{\"lineno\":20,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:ast.Constant:\n@Time : 2023/5/5 22:59\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 22:59\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.fireworks_api", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['FireworksLLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.fireworks_api\",\"names\":[\"FireworksLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.google_gemini_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['GeminiLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.google_gemini_api\",\"names\":[\"GeminiLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.ollama_api", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OllamaLLM']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.ollama_api\",\"names\":[\"OllamaLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.open_llm_api", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OpenLLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.open_llm_api\",\"names\":[\"OpenLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['OpenAILLM']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.zhipuai_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['ZhiPuAILLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai_api\",\"names\":[\"ZhiPuAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.azure_openai_api", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['AzureOpenAILLM']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.azure_openai_api\",\"names\":[\"AzureOpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.metagpt_api", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['MetaGPTLLM']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.metagpt_api\",\"names\":[\"MetaGPTLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.human_provider", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['HumanProvider']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.human_provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:module:metagpt.provider.spark_api", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/__init__.py:names:['SparkLLM']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.spark_api\",\"names\":[\"SparkLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_init_model", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_init_client", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_get_proxy_params", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_cons_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_func_configs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_achat_completion_function", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_process_message", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_calc_usage", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:OpenAILLM:_get_max_tokens", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/openai_api.py:log_and_reraise", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:log_and_reraise", "target": "{\"lineno\":40,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_and_reraise\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : openai.py\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\n", "target": "{\"lineno\":2,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : openai.py\\n@Modified By: mashenquan, 2023/11/21. Fix bug: ReadTimeout.\\n@Modified By: mashenquan, 2023/12/1. Fix bug: Unclosed connection caused by openai 0.x.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:json", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['AsyncIterator', 'Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncIterator\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['APIConnectionError', 'AsyncOpenAI', 'AsyncStream']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"APIConnectionError\",\"AsyncOpenAI\",\"AsyncStream\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai._base_client", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['AsyncHttpxClientWrapper']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai._base_client\",\"names\":[\"AsyncHttpxClientWrapper\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai.types", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CompletionUsage']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:openai.types.chat", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['ChatCompletion', 'ChatCompletionChunk']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types.chat\",\"names\":[\"ChatCompletion\",\"ChatCompletionChunk\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:tenacity", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['BaseLLM']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.constant", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['GENERAL_FUNCTION_SCHEMA', 'GENERAL_TOOL_CHOICE']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.constant\",\"names\":[\"GENERAL_FUNCTION_SCHEMA\",\"GENERAL_TOOL_CHOICE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['register_provider']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.schema", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['Message']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['CostManager', 'Costs']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\",\"Costs\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['handle_exception']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":33,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/openai_api.py:names:['count_message_tokens', 'count_string_tokens', 'get_max_completion_tokens']", "target": "{\"lineno\":33,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\",\"get_max_completion_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:SparkLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/spark_api.py:GetMessageFromWeb:_run", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:ast.Constant:\n@File : spark_api.py\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : spark_api.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:_thread as thread", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"_thread as thread\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:base64", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:datetime", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"datetime\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:hashlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"hashlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:hmac", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"hmac\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:ssl", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"ssl\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:time", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['mktime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"time\",\"names\":[\"mktime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:urllib.parse", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['urlencode', 'urlparse']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:wsgiref.handlers", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['format_date_time']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"wsgiref.handlers\",\"names\":[\"format_date_time\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:websocket", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"websocket\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['BaseLLM']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/spark_api.py:names:['register_provider']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:GeneralAPIRequestor:_interpret_async_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:parse_stream_helper", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:parse_stream_helper", "target": "{\"lineno\":15,\"end_lineno\":28,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_requestor.py:parse_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:parse_stream", "target": "{\"lineno\":31,\"end_lineno\":35,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['AsyncGenerator', 'Generator', 'Iterator', 'Tuple', 'Union']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"Generator\",\"Iterator\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:aiohttp", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:requests", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:module:metagpt.provider.general_api_base", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_requestor.py:names:['APIRequestor']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_base\",\"names\":[\"APIRequestor\"]}}"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_user_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_assistant_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_system_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_system_msgs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_default_system_msg", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/base_llm.py:BaseLLM:_extract_assistant_rsp", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:ast.Constant:\n@Time : 2023/5/5 23:04\n@Author : alexanderwu\n@File : base_llm.py\n@Desc : mashenquan, 2023/8/22. + try catch\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:04\\n@Author : alexanderwu\\n@File : base_llm.py\\n@Desc : mashenquan, 2023/8/22. + try catch\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:json", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:abc", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:openai", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['AsyncOpenAI']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"AsyncOpenAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['LLMConfig']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['Message']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/base_llm.py:names:['CostManager']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"CostManager\"]}}"}, {"predicate": "is", "source": "metagpt/provider/constant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/constant.py", "target": "python"}, {"predicate": "is", "source": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/constant.py:GENERAL_FUNCTION_SCHEMA", "target": "{\"lineno\":3,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_FUNCTION_SCHEMA\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/constant.py:GENERAL_TOOL_CHOICE", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"GENERAL_TOOL_CHOICE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:__init_zhipuai", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_const_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_update_costs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/zhipuai_api.py:ZhiPuAILLM:_achat_completion_stream", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:enum", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['Enum']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:openai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:zhipuai", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"zhipuai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:requests", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['ConnectionError']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"requests\",\"names\":[\"ConnectionError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['after_log', 'retry', 'retry_if_exception_type', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":10,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"after_log\",\"retry\",\"retry_if_exception_type\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['log_llm_stream', 'logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"log_llm_stream\",\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['BaseLLM']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['register_provider']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['log_and_reraise']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"log_and_reraise\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:module:metagpt.provider.zhipuai.zhipu_model_api", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai_api.py:names:['ZhiPuModelAPI']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.zhipu_model_api\",\"names\":[\"ZhiPuModelAPI\"]}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:OpenAIResponse:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_validate_headers", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_prepare_request_raw", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_async_response", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:APIRequestor:_interpret_response_line", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_console_log_level", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_console_log_level", "target": "{\"lineno\":78,\"end_lineno\":82,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_console_log_level\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_debug", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_debug", "target": "{\"lineno\":85,\"end_lineno\":89,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_debug\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_info", "target": "{\"lineno\":92,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:log_warn", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:log_warn", "target": "{\"lineno\":99,\"end_lineno\":102,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"log_warn\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:logfmt", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logfmt", "target": "{\"lineno\":105,\"end_lineno\":120,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"logfmt\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_build_api_url", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_build_api_url", "target": "{\"lineno\":153,\"end_lineno\":159,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_build_api_url\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_requests_proxies_arg", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_requests_proxies_arg", "target": "{\"lineno\":162,\"end_lineno\":173,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_requests_proxies_arg\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_aiohttp_proxies_arg", "target": "{\"lineno\":176,\"end_lineno\":187,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_aiohttp_proxies_arg\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_make_session", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_make_session", "target": "{\"lineno\":190,\"end_lineno\":196,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_make_session\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream_helper", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream_helper", "target": "{\"lineno\":199,\"end_lineno\":210,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream_helper\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream", "target": "{\"lineno\":213,\"end_lineno\":217,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_stream\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:parse_stream_async", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:parse_stream_async", "target": "{\"lineno\":220,\"end_lineno\":224,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"parse_stream_async\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:aiohttp_session", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:aiohttp_session", "target": "{\"lineno\":620,\"end_lineno\":622,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aiohttp_session\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:logger", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logger", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"logger\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:TIMEOUT_SECS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:TIMEOUT_SECS", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"TIMEOUT_SECS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:MAX_SESSION_LIFETIME_SECS", "target": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_SESSION_LIFETIME_SECS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:MAX_CONNECTION_RETRIES", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"MAX_CONNECTION_RETRIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:_thread_context", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:_thread_context", "target": "{\"lineno\":47,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"_thread_context\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:LLM_LOG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:LLM_LOG", "target": "{\"lineno\":49,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_LOG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/general_api_base.py:api_key_to_header", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:api_key_to_header", "target": "{\"lineno\":71,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"api_key_to_header\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:os", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:platform", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:sys", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:threading", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"threading\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:time", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"time\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:contextlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['asynccontextmanager']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"contextlib\",\"names\":[\"asynccontextmanager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:enum", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['Enum']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['AsyncGenerator', 'AsyncIterator', 'Dict', 'Iterator', 'Optional', 'Tuple', 'Union', 'overload']", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"AsyncGenerator\",\"AsyncIterator\",\"Dict\",\"Iterator\",\"Optional\",\"Tuple\",\"Union\",\"overload\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:urllib.parse", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['urlencode', 'urlsplit', 'urlunsplit']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urlencode\",\"urlsplit\",\"urlunsplit\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:aiohttp", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:requests", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"requests\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:sys.version_info", "target": "{\"lineno\":30,\"end_lineno\":33,\"type_name\":\"ast.If\",\"tokens\":[\"sys.version_info\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:logging", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.Import\",\"tokens\":[\"logging\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:openai", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Import\",\"tokens\":[\"openai\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:module:openai", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/general_api_base.py:names:['version']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai\",\"names\":[\"version\"]}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLMProviderRegistry:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:register_provider", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:register_provider", "target": "{\"lineno\":24,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_provider\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:create_llm_instance", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:create_llm_instance", "target": "{\"lineno\":34,\"end_lineno\":36,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"create_llm_instance\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:LLM_REGISTRY", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"LLM_REGISTRY\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:ast.Constant:\n@Time : 2023/12/19 17:26\n@Author : alexanderwu\n@File : llm_provider_registry.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 17:26\\n@Author : alexanderwu\\n@File : llm_provider_registry.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/llm_provider_registry.py:names:['BaseLLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:ast.Constant:\n@Time : 2023/5/5 23:08\n@Author : alexanderwu\n@File : metagpt_api.py\n@Desc : MetaGPT LLM provider.\n", "target": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/5 23:08\\n@Author : alexanderwu\\n@File : metagpt_api.py\\n@Desc : MetaGPT LLM provider.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['LLMType']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.provider", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['OpenAILLM']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/metagpt_api.py:names:['register_provider']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_make_client_kwargs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_calc_usage", "target": "class_method"}, {"predicate": "is", "source": "metagpt/provider/open_llm_api.py:OpenLLM:_update_costs", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:openai.types", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['CompletionUsage']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"openai.types\",\"names\":[\"CompletionUsage\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['LLMConfig', 'LLMType']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\",\"LLMType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.logs", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['logger']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.provider.llm_provider_registry", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['register_provider']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.llm_provider_registry\",\"names\":[\"register_provider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.provider.openai_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['OpenAILLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.openai_api\",\"names\":[\"OpenAILLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.utils.cost_manager", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['Costs', 'TokenCostManager']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.cost_manager\",\"names\":[\"Costs\",\"TokenCostManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/open_llm_api.py:names:['count_message_tokens', 'count_string_tokens']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/provider/human_provider.py:HumanProvider:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:ast.Constant:\nFilename: MetaGPT/metagpt/provider/human_provider.py\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\nAuthor: garylin2099\n", "target": "{\"lineno\":1,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\nFilename: MetaGPT/metagpt/provider/human_provider.py\\nCreated Date: Wednesday, November 8th 2023, 11:55:46 pm\\nAuthor: garylin2099\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.configs.llm_config", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['LLMConfig']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.llm_config\",\"names\":[\"LLMConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.logs", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['logger']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/human_provider.py:names:['BaseLLM']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/async_sse_client.py:AsyncSSEClient:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:json", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/async_sse_client.py:names:['Any', 'Iterator']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterator\"]}}"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/zhipuai/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZhipuAI']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai\",\"names\":[\"ZhipuAI\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:zhipuai.core._http_client", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['ZHIPUAI_DEFAULT_TIMEOUT']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"zhipuai.core._http_client\",\"names\":[\"ZHIPUAI_DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.general_api_requestor", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['GeneralAPIRequestor']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.general_api_requestor\",\"names\":[\"GeneralAPIRequestor\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:module:metagpt.provider.zhipuai.async_sse_client", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/zhipuai/zhipu_model_api.py:names:['AsyncSSEClient']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.zhipuai.async_sse_client\",\"names\":[\"AsyncSSEClient\"]}}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:module:metagpt.utils.repair_llm_raw_output", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/base_postprocess_plugin.py:names:['RepairType', 'extract_content_from_output', 'repair_llm_raw_output', 'retry_parse_json_text']", "target": "{\"lineno\":7,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"RepairType\",\"extract_content_from_output\",\"repair_llm_raw_output\",\"retry_parse_json_text\"]}}"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/provider/postprocess/llm_output_postprocess.py", "target": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess"}, {"predicate": "is", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:llm_output_postprocess", "target": "{\"lineno\":10,\"end_lineno\":20,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"llm_output_postprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:module:metagpt.provider.postprocess.base_postprocess_plugin", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/provider/postprocess/llm_output_postprocess.py:names:['BasePostProcessPlugin']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.base_postprocess_plugin\",\"names\":[\"BasePostProcessPlugin\"]}}"}, {"predicate": "is", "source": "metagpt/management/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/management/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/management/__init__.py:ast.Constant:\n@Time : 2023/4/30 20:58\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/30 20:58\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:SkillManager:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/management/skill_manager.py:Skill", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:Skill", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Assign\",\"tokens\":[\"Skill\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:ast.Constant:\n@Time : 2023/6/5 01:44\n@Author : alexanderwu\n@File : skill_manager.py\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/5 01:44\\n@Author : alexanderwu\\n@File : skill_manager.py\\n@Modified By: mashenquan, 2023/8/20. Remove useless `llm`\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['Action']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.const", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['PROMPT_PATH']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PROMPT_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.document_store.chromadb_store", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['ChromaStore']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.chromadb_store\",\"names\":[\"ChromaStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/management/skill_manager.py:__name__:__main__", "target": "{\"lineno\":77,\"end_lineno\":79,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_parse_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_sp_with_cr", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_write_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_summarize", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_act_code_plan_and_change", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_is_pass", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_coding_context", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_coding_doc", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_code_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_summarize_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:Engineer:_new_code_plan_and_change_action", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/engineer.py:IS_PASS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:IS_PASS_PROMPT", "target": "{\"lineno\":52,\"end_lineno\":59,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_PASS_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\n distribution feature for message filtering.\n 2. Consolidate message reception and processing logic within `_observe`.\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\n 4. Supplemented the external transmission of internal messages.\n@Modified By: mashenquan, 2023-11-27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n", "target": "{\"lineno\":3,\"end_lineno\":18,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Modify the data type of the `cause_by` value in the `Message` to a string, and utilize the new message\\n distribution feature for message filtering.\\n 2. Consolidate message reception and processing logic within `_observe`.\\n 3. Fix bug: Add logic for handling asynchronous message processing when messages are not ready.\\n 4. Supplemented the external transmission of internal messages.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.5 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:__future__", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['annotations']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:json", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:os", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:collections", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['defaultdict']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Set']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Action', 'WriteCode', 'WriteCodeReview', 'WriteTasks']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"WriteCode\",\"WriteCodeReview\",\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.fix_bug", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['FixBug']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['REFINED_TASK_LIST', 'TASK_LIST']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.summarize_code", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['SummarizeCode']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.actions.write_code_plan_and_change_an", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['WriteCodePlanAndChange']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"WriteCodePlanAndChange\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.const", "target": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME', 'SYSTEM_DESIGN_FILE_REPO', 'TASK_FILE_REPO']", "target": "{\"lineno\":33,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\",\"SYSTEM_DESIGN_FILE_REPO\",\"TASK_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.logs", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['logger']", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.roles", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['Role']", "target": "{\"lineno\":41,\"end_lineno\":41,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.schema", "target": "{\"lineno\":42,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'Document', 'Documents', 'Message']", "target": "{\"lineno\":42,\"end_lineno\":49,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/engineer.py:names:['any_to_name', 'any_to_str', 'any_to_str_set']", "target": "{\"lineno\":50,\"end_lineno\":50,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"any_to_str_set\"]}}"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_write_test", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_run_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_debug_error", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/qa_engineer.py:QaEngineer:_observe", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : qa_engineer.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\n@Modified By: mashenquan, 2023-11-27.\n 1. Following the think-act principle, solidify the task parameters when creating the\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\n to using file references.\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\n of SummarizeCode.\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : qa_engineer.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, modify the data\\n type of the `cause_by` value in the `Message` to a string, and utilize the new message filtering feature.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest/RunCode/DebugError object, rather than passing them in when calling the run function.\\n 2. According to Section 2.2.3.5.7 of RFC 135, change the method of transferring files from using the Message\\n to using file references.\\n@Modified By: mashenquan, 2023-12-5. Enhance the workflow to navigate to WriteCode or QaEngineer based on the results\\n of SummarizeCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.actions", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['DebugError', 'RunCode', 'WriteTest']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"DebugError\",\"RunCode\",\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.actions.summarize_code", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['SummarizeCode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.summarize_code\",\"names\":[\"SummarizeCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.const", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['MESSAGE_ROUTE_TO_NONE']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_NONE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.logs", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['logger']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.roles", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['Role']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.schema", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['Document', 'Message', 'RunCodeContext', 'TestingContext']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Message\",\"RunCodeContext\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:module:metagpt.utils.common", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/qa_engineer.py:names:['any_to_str_set', 'parse_recipient']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str_set\",\"parse_recipient\"]}}"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/teacher.py:Teacher:_react", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : teacher.py\n@Desc : Used by Agent Store\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : teacher.py\\n@Desc : Used by Agent Store\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['UserRequirement']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.actions.write_teaching_plan", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['TeachingPlanBlock', 'WriteTeachingPlanPart']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_teaching_plan\",\"names\":[\"TeachingPlanBlock\",\"WriteTeachingPlanPart\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.roles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['Role']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/teacher.py:names:['any_to_str', 'awrite']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_str\",\"awrite\"]}}"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/product_manager.py:ProductManager:_observe", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : product_manager.py\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : product_manager.py\\n@Modified By: mashenquan, 2023/11/27. Add `PrepareDocuments` action according to Section 2.2.3.5.1 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['UserRequirement', 'WritePRD']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\",\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.actions.prepare_documents", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['PrepareDocuments']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.prepare_documents\",\"names\":[\"PrepareDocuments\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.roles.role", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['Role']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:module:metagpt.utils.common", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/product_manager.py:names:['any_to_name']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\"]}}"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/sales.py:Sales:_set_store", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['SearchAndSummarize', 'UserRequirement']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\",\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['BaseStore']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.roles", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['Role']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:module:metagpt.tools", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sales.py:names:['SearchEngineType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:_act_sp", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/searcher.py:Searcher:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:ast.Constant:\n@Time : 2023/5/23 17:25\n@Author : alexanderwu\n@File : searcher.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:25\\n@Author : alexanderwu\\n@File : searcher.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['SearchAndSummarize']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions.action_node", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['ActionNode']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.actions.action_output", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['ActionOutput']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.roles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Role']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:module:metagpt.tools", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/searcher.py:names:['SearchEngineType']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/assistant.py:Assistant:_plan", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:ast.Constant:\n@Time : 2023/8/7\n@Author : mashenquan\n@File : assistant.py\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\n make these symbols configurable and standardized, making the process of building flows more convenient.\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\n configuration file.\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\n indicates that further reasoning cannot continue.\n\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/7\\n@Author : mashenquan\\n@File : assistant.py\\n@Desc : I am attempting to incorporate certain symbol concepts from UML into MetaGPT, enabling it to have the\\n ability to freely construct flows through symbol concatenation. Simultaneously, I am also striving to\\n make these symbols configurable and standardized, making the process of building flows more convenient.\\n For more about `fork` node in activity diagrams, see: `https://www.uml-diagrams.org/activity-diagrams.html`\\n This file defines a `fork` style meta role capable of generating arbitrary roles at runtime based on a\\n configuration file.\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false\\n indicates that further reasoning cannot continue.\\n\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:enum", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Enum']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:pathlib", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Path']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:typing", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Optional']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:pydantic", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Field']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.actions.skill_action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['ArgumentsParingAction', 'SkillAction']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.skill_action\",\"names\":[\"ArgumentsParingAction\",\"SkillAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.actions.talk_action", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['TalkAction']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.talk_action\",\"names\":[\"TalkAction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.learn.skill_loader", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['SkillsDeclaration']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"SkillsDeclaration\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.memory.brain_memory", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['BrainMemory']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory.brain_memory\",\"names\":[\"BrainMemory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.roles", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Role']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:module:metagpt.schema", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/assistant.py:names:['Message']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/roles/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/roles/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/roles/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:__all__", "target": "{\"lineno\":20,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.role", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Role']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.architect", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Architect']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.architect\",\"names\":[\"Architect\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.project_manager", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['ProjectManager']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.project_manager\",\"names\":[\"ProjectManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.product_manager", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['ProductManager']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.product_manager\",\"names\":[\"ProductManager\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.engineer", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Engineer']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.engineer\",\"names\":[\"Engineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.qa_engineer", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['QaEngineer']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.qa_engineer\",\"names\":[\"QaEngineer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.searcher", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Searcher']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.searcher\",\"names\":[\"Searcher\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.sales", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['Sales']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.sales\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:module:metagpt.roles.customer_service", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/__init__.py:names:['CustomerService']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.customer_service\",\"names\":[\"CustomerService\"]}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_reset", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_setting", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_check_actions", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_init_action", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_set_react_mode", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_watch", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_set_state", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_get_prefix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_observe", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_react", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_act_by_order", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:Role:_plan_and_act", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/role.py:PREFIX_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:PREFIX_TEMPLATE", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:CONSTRAINT_TEMPLATE", "target": "{\"lineno\":43,\"end_lineno\":43,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONSTRAINT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:STATE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:STATE_TEMPLATE", "target": "{\"lineno\":45,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"STATE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/role.py:ROLE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ROLE_TEMPLATE", "target": "{\"lineno\":62,\"end_lineno\":70,\"type_name\":\"ast.Assign\",\"tokens\":[\"ROLE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:ast.Constant:\n@Time : 2023/5/11 14:42\n@Author : alexanderwu\n@File : role.py\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\n consolidated within the `_observe` function.\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\n they've subscribed to through the `subscribed_tags` property.\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\n functionality is to be consolidated into the `Environment` class.\n", "target": "{\"lineno\":3,\"end_lineno\":21,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:42\\n@Author : alexanderwu\\n@File : role.py\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116:\\n 1. Merge the `recv` functionality into the `_observe` function. Future message reading operations will be\\n consolidated within the `_observe` function.\\n 2. Standardize the message filtering for string label matching. Role objects can access the message labels\\n they've subscribed to through the `subscribed_tags` property.\\n 3. Move the message receive buffer from the global variable `self.rc.env.memory` to the role's private variable\\n `self.rc.msg_buffer` for easier message identification and asynchronous appending of messages.\\n 4. Standardize the way messages are passed: `publish_message` sends messages out, while `put_message` places\\n messages into the Role object's private message receive buffer. There are no other message transmit methods.\\n 5. Standardize the parameters for the `run` function: the `test_message` parameter is used for testing purposes\\n only. In the normal workflow, you should use `publish_message` or `put_message` to transmit messages.\\n@Modified By: mashenquan, 2023-11-4. According to the routing feature plan in Chapter 2.2.3.2 of RFC 113, the routing\\n functionality is to be consolidated into the `Environment` class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:__future__", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['annotations']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:enum", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Enum']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Any', 'Iterable', 'Optional', 'Set', 'Type', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Iterable\",\"Optional\",\"Set\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:pydantic", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['BaseModel', 'ConfigDict', 'Field', 'SerializeAsAny', 'model_validator']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"SerializeAsAny\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions.action_node", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ActionNode']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.actions.add_requirement", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['UserRequirement']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.context_mixin", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ContextMixin']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.logs", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['logger']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.memory", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Memory']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.memory\",\"names\":[\"Memory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.provider", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['HumanProvider']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider\",\"names\":[\"HumanProvider\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.schema", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['Message', 'MessageQueue', 'SerializationMixin']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\",\"MessageQueue\",\"SerializationMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.common", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['any_to_name', 'any_to_str', 'role_raise_decorator']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"any_to_name\",\"any_to_str\",\"role_raise_decorator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['ProjectRepo']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:module:metagpt.utils.repair_llm_raw_output", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/role.py:names:['extract_state_value_from_output']", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.repair_llm_raw_output\",\"names\":[\"extract_state_value_from_output\"]}}"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/invoice_ocr_assistant.py:InvoiceOCRAssistant:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:ast.Constant:\n@Time : 2023/9/21 14:10:05\n@Author : Stitch-z\n@File : invoice_ocr_assistant.py\n", "target": "{\"lineno\":4,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 14:10:05\\n@Author : Stitch-z\\n@File : invoice_ocr_assistant.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:json", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Optional']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:pandas as pd", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['BaseModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.actions.invoice_ocr", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['GenerateTable', 'InvoiceOCR', 'ReplyQuestion']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.invoice_ocr\",\"names\":[\"GenerateTable\",\"InvoiceOCR\",\"ReplyQuestion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.prompts.invoice_ocr", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['INVOICE_OCR_SUCCESS']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"INVOICE_OCR_SUCCESS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.roles.role", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/invoice_ocr_assistant.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/roles/architect.py:Architect:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : architect.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : architect.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['WritePRD']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.actions.design_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['WriteDesign']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:module:metagpt.roles.role", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/architect.py:names:['Role']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "is", "source": "metagpt/roles/customer_service.py:DESC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:DESC", "target": "{\"lineno\":15,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESC\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:ast.Constant:\n@Time : 2023/5/25 17:21\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/25 17:21\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:metagpt.document_store.base_store", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['BaseStore']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.document_store.base_store\",\"names\":[\"BaseStore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:module:metagpt.roles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/customer_service.py:names:['Sales']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Sales\"]}}"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/sk_agent.py:SkAgent:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:ast.Constant:\n@Time : 2023/9/13 12:23\n@Author : femto Zheng\n@File : sk_agent.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\n distribution feature for message filtering.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:23\\n@Author : femto Zheng\\n@File : sk_agent.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.2.1 and 2.2.2 of RFC 116, utilize the new message\\n distribution feature for message filtering.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Any', 'Callable', 'Union']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Field']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Kernel']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel\",\"names\":[\"Kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['SequentialPlanner']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning\",\"names\":[\"SequentialPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.action_planner.action_planner", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['ActionPlanner']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.action_planner.action_planner\",\"names\":[\"ActionPlanner\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:semantic_kernel.planning.basic_planner", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['BasicPlanner', 'Plan']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.planning.basic_planner\",\"names\":[\"BasicPlanner\",\"Plan\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.actions", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['UserRequirement']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.actions.execute_task", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['ExecuteTask']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.execute_task\",\"names\":[\"ExecuteTask\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.roles", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Role']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.schema", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['Message']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:module:metagpt.utils.make_sk_kernel", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/sk_agent.py:names:['make_sk_kernel']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.make_sk_kernel\",\"names\":[\"make_sk_kernel\"]}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:PREFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:PREFIX", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Assign\",\"tokens\":[\"PREFIX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:FORMAT_INSTRUCTIONS", "target": "{\"lineno\":11,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_INSTRUCTIONS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/roles/prompt.py:SUFFIX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:SUFFIX", "target": "{\"lineno\":21,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUFFIX\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:ast.Constant:\n@Time : 2023/5/18 22:43\n@Author : alexanderwu\n@File : prompt.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 22:43\\n@Author : alexanderwu\\n@File : prompt.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/prompt.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_handle_directory", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/tutorial_assistant.py:TutorialAssistant:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:datetime", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['datetime']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Dict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.actions.write_tutorial", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['WriteContent', 'WriteDirectory']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_tutorial\",\"names\":[\"WriteContent\",\"WriteDirectory\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.const", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['TUTORIAL_PATH']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TUTORIAL_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.roles.role", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['Message']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:module:metagpt.utils.file", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/tutorial_assistant.py:names:['File']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "is", "source": "metagpt/roles/project_manager.py:ProjectManager:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:ast.Constant:\n@Time : 2023/5/11 15:04\n@Author : alexanderwu\n@File : project_manager.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 15:04\\n@Author : alexanderwu\\n@File : project_manager.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['WriteTasks']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.actions.design_api", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['WriteDesign']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:module:metagpt.roles.role", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/project_manager.py:names:['Role']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\"]}}"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:_think", "target": "class_method"}, {"predicate": "is", "source": "metagpt/roles/researcher.py:Researcher:_act", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:ast.Constant:\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Modified By: mashenquan, 2023/8/22. A definition has been provided for the return value of _think: returning false indicates that further reasoning cannot continue.\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, change the data type of\\n the `cause_by` value in the `Message` to a string to support the new message distribution feature.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['BaseModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Action', 'CollectLinks', 'ConductResearch', 'WebBrowseAndSummarize']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"CollectLinks\",\"ConductResearch\",\"WebBrowseAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.actions.research", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['get_research_system_text']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"get_research_system_text\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['RESEARCH_PATH']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"RESEARCH_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.roles.role", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Role', 'RoleReactMode']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.roles.role\",\"names\":[\"Role\",\"RoleReactMode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:names:['Message']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/roles/researcher.py:__name__:__main__", "target": "{\"lineno\":119,\"end_lineno\":126,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/serialize.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutput_mapping_to_str"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:actionoutput_str_to_mapping"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:serialize_message"}, {"predicate": "has_function", "source": "metagpt/utils/serialize.py", "target": "metagpt/utils/serialize.py:deserialize_message"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutout_schema_to_mapping", "target": "{\"lineno\":11,\"end_lineno\":40,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutout_schema_to_mapping\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutput_mapping_to_str", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutput_mapping_to_str", "target": "{\"lineno\":43,\"end_lineno\":47,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_mapping_to_str\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:actionoutput_str_to_mapping", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:actionoutput_str_to_mapping", "target": "{\"lineno\":50,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"actionoutput_str_to_mapping\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:serialize_message", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:serialize_message", "target": "{\"lineno\":60,\"end_lineno\":71,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_message\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/serialize.py:deserialize_message", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:deserialize_message", "target": "{\"lineno\":74,\"end_lineno\":83,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"deserialize_message\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:copy", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:pickle", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Import\",\"tokens\":[\"pickle\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:module:metagpt.utils.common", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/serialize.py:names:['import_class']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:DocFileRepositories:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ResourceFileRepositories:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/project_repo.py:ProjectRepo:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:ast.Constant:\n@Time : 2024/1/8\n@Author : mashenquan\n@File : project_repo.py\n@Desc : Wrapper for GitRepository and FileRepository of project.\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/8\\n@Author : mashenquan\\n@File : project_repo.py\\n@Desc : Wrapper for GitRepository and FileRepository of project.\\n Implementation of Chapter 4.6 of https://deepwisdom.feishu.cn/wiki/CUK4wImd7id9WlkQBNscIe9cnqh\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:__future__", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['annotations']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['CLASS_VIEW_FILE_REPO', 'CODE_PLAN_AND_CHANGE_FILE_REPO', 'CODE_PLAN_AND_CHANGE_PDF_FILE_REPO', 'CODE_SUMMARIES_FILE_REPO', 'CODE_SUMMARIES_PDF_FILE_REPO', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'DATA_API_DESIGN_FILE_REPO', 'DOCS_FILE_REPO', 'GRAPH_REPO_FILE_REPO', 'PRD_PDF_FILE_REPO', 'PRDS_FILE_REPO', 'REQUIREMENT_FILENAME', 'RESOURCES_FILE_REPO', 'SD_OUTPUT_FILE_REPO', 'SEQ_FLOW_FILE_REPO', 'SYSTEM_DESIGN_FILE_REPO', 'SYSTEM_DESIGN_PDF_FILE_REPO', 'TASK_FILE_REPO', 'TASK_PDF_FILE_REPO', 'TEST_CODES_FILE_REPO', 'TEST_OUTPUTS_FILE_REPO', 'VISUAL_GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":14,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CLASS_VIEW_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_FILE_REPO\",\"CODE_PLAN_AND_CHANGE_PDF_FILE_REPO\",\"CODE_SUMMARIES_FILE_REPO\",\"CODE_SUMMARIES_PDF_FILE_REPO\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"DATA_API_DESIGN_FILE_REPO\",\"DOCS_FILE_REPO\",\"GRAPH_REPO_FILE_REPO\",\"PRD_PDF_FILE_REPO\",\"PRDS_FILE_REPO\",\"REQUIREMENT_FILENAME\",\"RESOURCES_FILE_REPO\",\"SD_OUTPUT_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\",\"SYSTEM_DESIGN_FILE_REPO\",\"SYSTEM_DESIGN_PDF_FILE_REPO\",\"TASK_FILE_REPO\",\"TASK_PDF_FILE_REPO\",\"TEST_CODES_FILE_REPO\",\"TEST_OUTPUTS_FILE_REPO\",\"VISUAL_GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['FileRepository']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/project_repo.py:names:['GitRepository']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_playwright.py", "target": "metagpt/utils/mmdc_playwright.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_playwright.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:mermaid_to_file", "target": "{\"lineno\":17,\"end_lineno\":121,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : Steven Lee\n@File : mmdc_playwright.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : Steven Lee\\n@File : mmdc_playwright.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:os", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:urllib.parse", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['urljoin']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:playwright.async_api", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['async_playwright']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"playwright.async_api\",\"names\":[\"async_playwright\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_playwright.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/dependency_file.py:DependencyFile:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:ast.Constant:\n@Time : 2023/11/22\n@Author : mashenquan\n@File : dependency_file.py\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/22\\n@Author : mashenquan\\n@File : dependency_file.py\\n@Desc: Implementation of the dependency file described in Section 2.2.3.2 of RFC 135.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:re", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['Set']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:aiofiles", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['aread']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/dependency_file.py:names:['handle_exception']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/make_sk_kernel.py", "target": "metagpt/utils/make_sk_kernel.py:make_sk_kernel"}, {"predicate": "is", "source": "metagpt/utils/make_sk_kernel.py:make_sk_kernel", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:make_sk_kernel", "target": "{\"lineno\":19,\"end_lineno\":32,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"make_sk_kernel\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:ast.Constant:\n@Time : 2023/9/13 12:29\n@Author : femto Zheng\n@File : make_sk_kernel.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:29\\n@Author : femto Zheng\\n@File : make_sk_kernel.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:semantic_kernel as sk", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"semantic_kernel as sk\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion", "target": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['AzureChatCompletion']", "target": "{\"lineno\":9,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion\",\"names\":[\"AzureChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['OpenAIChatCompletion']", "target": "{\"lineno\":12,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion\",\"names\":[\"OpenAIChatCompletion\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:module:metagpt.config2", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/make_sk_kernel.py:names:['config']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:count_message_tokens"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:count_string_tokens"}, {"predicate": "has_function", "source": "metagpt/utils/token_counter.py", "target": "metagpt/utils/token_counter.py:get_max_completion_tokens"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:count_message_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:count_message_tokens", "target": "{\"lineno\":64,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_message_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:count_string_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:count_string_tokens", "target": "{\"lineno\":122,\"end_lineno\":138,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"count_string_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:get_max_completion_tokens", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:get_max_completion_tokens", "target": "{\"lineno\":141,\"end_lineno\":153,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_max_completion_tokens\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:TOKEN_COSTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:TOKEN_COSTS", "target": "{\"lineno\":15,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_COSTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/token_counter.py:TOKEN_MAX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:TOKEN_MAX", "target": "{\"lineno\":40,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"TOKEN_MAX\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:ast.Constant:\n@Time : 2023/5/18 00:40\n@Author : alexanderwu\n@File : token_counter.py\nref1: https://openai.com/pricing\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\nref5: https://ai.google.dev/models/gemini\n", "target": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/18 00:40\\n@Author : alexanderwu\\n@File : token_counter.py\\nref1: https://openai.com/pricing\\nref2: https://github.com/openai/openai-cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb\\nref3: https://github.com/Significant-Gravitas/Auto-GPT/blob/master/autogpt/llm/token_counter.py\\nref4: https://github.com/hwchase17/langchain/blob/master/langchain/chat_models/openai.py\\nref5: https://ai.google.dev/models/gemini\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/token_counter.py:tiktoken", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"tiktoken\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/embedding.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/embedding.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/embedding.py", "target": "metagpt/utils/embedding.py:get_embedding"}, {"predicate": "is", "source": "metagpt/utils/embedding.py:get_embedding", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:get_embedding", "target": "{\"lineno\":13,\"end_lineno\":16,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_embedding\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:ast.Constant:\n@Time : 2024/1/4 20:58\n@Author : alexanderwu\n@File : embedding.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 20:58\\n@Author : alexanderwu\\n@File : embedding.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:module:langchain_community.embeddings", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:names:['OpenAIEmbeddings']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"langchain_community.embeddings\",\"names\":[\"OpenAIEmbeddings\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:module:metagpt.config2", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/embedding.py:names:['config']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_case_sensitivity", "target": "{\"lineno\":24,\"end_lineno\":41,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_case_sensitivity\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_special_character_missing", "target": "{\"lineno\":44,\"end_lineno\":64,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_special_character_missing\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_required_key_pair_missing", "target": "{\"lineno\":67,\"end_lineno\":105,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_required_key_pair_missing\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_json_format", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_json_format", "target": "{\"lineno\":108,\"end_lineno\":132,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_json_format\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:_repair_llm_raw_output", "target": "{\"lineno\":135,\"end_lineno\":146,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_repair_llm_raw_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_llm_raw_output", "target": "{\"lineno\":149,\"end_lineno\":170,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_llm_raw_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:repair_invalid_json", "target": "{\"lineno\":173,\"end_lineno\":220,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"repair_invalid_json\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:run_after_exp_and_passon_next_retry", "target": "{\"lineno\":223,\"end_lineno\":257,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"run_after_exp_and_passon_next_retry\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:retry_parse_json_text", "target": "{\"lineno\":265,\"end_lineno\":279,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"retry_parse_json_text\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:extract_content_from_output", "target": "{\"lineno\":282,\"end_lineno\":312,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_content_from_output\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:extract_state_value_from_output", "target": "{\"lineno\":315,\"end_lineno\":328,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"extract_state_value_from_output\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:copy", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"copy\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:enum", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['Enum']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['Callable', 'Union']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:regex as re", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"regex as re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:tenacity", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['RetryCallState', 'retry', 'stop_after_attempt', 'wait_fixed']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"retry\",\"stop_after_attempt\",\"wait_fixed\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:module:metagpt.utils.custom_decoder", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/repair_llm_raw_output.py:names:['CustomDecoder']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.custom_decoder\",\"names\":[\"CustomDecoder\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mermaid.py", "target": "metagpt/utils/mermaid.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:mermaid_to_file", "target": "{\"lineno\":19,\"end_lineno\":90,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:MMC1", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:MMC1", "target": "{\"lineno\":93,\"end_lineno\":125,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC1\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/mermaid.py:MMC2", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:MMC2", "target": "{\"lineno\":127,\"end_lineno\":145,\"type_name\":\"ast.Assign\",\"tokens\":[\"MMC2\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:ast.Constant:\n@Time : 2023/7/4 10:53\n@Author : alexanderwu alitrack\n@File : mermaid.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/4 10:53\\n@Author : alexanderwu alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:asyncio", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:os", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:aiofiles", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.config2", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['config']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:module:metagpt.utils.common", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mermaid.py:names:['check_cmd_exists']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"check_cmd_exists\"]}}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:get_html_content", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:get_html_content", "target": "{\"lineno\":42,\"end_lineno\":45,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_html_content\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/parse_html.py:_get_soup", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:_get_soup", "target": "{\"lineno\":48,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_get_soup\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:__future__", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['annotations']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:typing", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['Generator', 'Optional']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:urllib.parse", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['urljoin', 'urlparse']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\",\"urlparse\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:bs4", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['BeautifulSoup']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"bs4\",\"names\":[\"BeautifulSoup\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/parse_html.py:names:['BaseModel', 'PrivateAttr']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"PrivateAttr\"]}}"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualGraphRepo:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_get_class_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/visual_graph_repo.py:VisualDiGraphRepo:_refine_name", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : visualize_graph.py\n@Desc : Visualize the graph.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : visualize_graph.py\\n@Desc : Visualize the graph.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:abc", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['ABC']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['List', 'Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:pydantic", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.const", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['AGGREGATION', 'COMPOSITION', 'GENERALIZATION']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"GENERALIZATION\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.schema", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['UMLClassView']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.common", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['split_namespace']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['DiGraphRepository']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/visual_graph_repo.py:names:['GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py", "target": "python"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py:MSG_SEP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/special_tokens.py:MSG_SEP", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Assign\",\"tokens\":[\"MSG_SEP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/special_tokens.py:FILENAME_CODE_SEP", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILENAME_CODE_SEP\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/ahttp_client.py", "target": "metagpt/utils/ahttp_client.py:apost"}, {"predicate": "has_function", "source": "metagpt/utils/ahttp_client.py", "target": "metagpt/utils/ahttp_client.py:apost_stream"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py:apost", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:apost", "target": "{\"lineno\":11,\"end_lineno\":28,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/ahttp_client.py:apost_stream", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:apost_stream", "target": "{\"lineno\":31,\"end_lineno\":49,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"apost_stream\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:module:typing", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:names:['Any', 'Mapping', 'Optional', 'Union']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Mapping\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:aiohttp", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"aiohttp\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:module:aiohttp.client", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/ahttp_client.py:names:['DEFAULT_TIMEOUT']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp.client\",\"names\":[\"DEFAULT_TIMEOUT\"]}}"}, {"predicate": "is", "source": "metagpt/utils/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/utils/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:__all__", "target": "{\"lineno\":18,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:ast.Constant:\n@Time : 2023/4/29 15:50\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:50\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.read_document", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['read_docx']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.read_document\",\"names\":[\"read_docx\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.singleton", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['Singleton']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.singleton\",\"names\":[\"Singleton\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/__init__.py:names:['TOKEN_COSTS', 'count_message_tokens', 'count_string_tokens']", "target": "{\"lineno\":11,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\",\"count_message_tokens\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_ink.py", "target": "metagpt/utils/mmdc_ink.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_ink.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:mermaid_to_file", "target": "{\"lineno\":15,\"end_lineno\":41,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mermaid.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mermaid.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:base64", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:module:aiohttp", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:names:['ClientError', 'ClientSession']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"aiohttp\",\"names\":[\"ClientError\",\"ClientSession\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_ink.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/di_graph_repository.py:DiGraphRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : di_graph_repository.py\n@Desc : Graph repository based on DiGraph\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : di_graph_repository.py\\n@Desc : Graph repository based on DiGraph\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['List']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:networkx", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"networkx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['aread', 'awrite']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/di_graph_repository.py:names:['SPO', 'GraphRepository']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:ast.Constant:\n@Time : 2024/1/4 10:18\n@Author : alexanderwu\n@File : YamlModel.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 10:18\\n@Author : alexanderwu\\n@File : YamlModel.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['Dict', 'Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:yaml", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"yaml\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/yaml_model.py:names:['BaseModel', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : openai.py\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\n", "target": "{\"lineno\":2,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : openai.py\\n@Desc : mashenquan, 2023/8/28. Separate the `CostManager` class to support user-level cost accounting.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['NamedTuple']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"NamedTuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['BaseModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/cost_manager.py:names:['TOKEN_COSTS']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_COSTS\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : file.py\n@Describe : General file operations.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : file.py\\n@Describe : General file operations.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:aiofiles", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file.py:names:['handle_exception']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/common.py:NoMoneyException:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/common.py:check_cmd_exists", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:check_cmd_exists", "target": "{\"lineno\":38,\"end_lineno\":48,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"check_cmd_exists\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:require_python_version", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:require_python_version", "target": "{\"lineno\":51,\"end_lineno\":54,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"require_python_version\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:print_members", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:print_members", "target": "{\"lineno\":319,\"end_lineno\":335,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"print_members\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:parse_recipient", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:parse_recipient", "target": "{\"lineno\":338,\"end_lineno\":348,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_recipient\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:get_class_name", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:get_class_name", "target": "{\"lineno\":351,\"end_lineno\":353,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_class_name\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_str", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_str", "target": "{\"lineno\":356,\"end_lineno\":363,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_str_set", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_str_set", "target": "{\"lineno\":366,\"end_lineno\":381,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_str_set\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:is_send_to", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:is_send_to", "target": "{\"lineno\":384,\"end_lineno\":392,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"is_send_to\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:any_to_name", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:any_to_name", "target": "{\"lineno\":395,\"end_lineno\":403,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"any_to_name\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:concat_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:concat_namespace", "target": "{\"lineno\":406,\"end_lineno\":407,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"concat_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:split_namespace", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:split_namespace", "target": "{\"lineno\":410,\"end_lineno\":411,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_namespace\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:general_after_log", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:general_after_log", "target": "{\"lineno\":414,\"end_lineno\":444,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"general_after_log\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_json_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_json_file", "target": "{\"lineno\":447,\"end_lineno\":456,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_json_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:write_json_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:write_json_file", "target": "{\"lineno\":459,\"end_lineno\":465,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"write_json_file\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:import_class", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:import_class", "target": "{\"lineno\":468,\"end_lineno\":471,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:import_class_inst", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:import_class_inst", "target": "{\"lineno\":474,\"end_lineno\":477,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"import_class_inst\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:format_trackback_info", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:format_trackback_info", "target": "{\"lineno\":480,\"end_lineno\":481,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"format_trackback_info\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:serialize_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:serialize_decorator", "target": "{\"lineno\":484,\"end_lineno\":495,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"serialize_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:role_raise_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:role_raise_decorator", "target": "{\"lineno\":498,\"end_lineno\":525,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"role_raise_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:aread", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aread", "target": "{\"lineno\":529,\"end_lineno\":533,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"aread\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:awrite", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:awrite", "target": "{\"lineno\":536,\"end_lineno\":541,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"awrite\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:read_file_block", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:read_file_block", "target": "{\"lineno\":544,\"end_lineno\":558,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"read_file_block\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:list_files", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:list_files", "target": "{\"lineno\":561,\"end_lineno\":575,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"list_files\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/common.py:parse_json_code_block", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:parse_json_code_block", "target": "{\"lineno\":578,\"end_lineno\":580,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"parse_json_code_block\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:ast.Constant:\n@Time : 2023/4/29 16:07\n@Author : alexanderwu\n@File : common.py\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\n Add generic class-to-string and object-to-string conversion functionality.\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\n responses.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 16:07\\n@Author : alexanderwu\\n@File : common.py\\n@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.2 of RFC 116:\\n Add generic class-to-string and object-to-string conversion functionality.\\n@Modified By: mashenquan, 2023/11/27. Bug fix: `parse_recipient` failed to parse the recipient in certain GPT-3.5\\n responses.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:__future__", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['annotations']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:ast", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:contextlib", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.Import\",\"tokens\":[\"contextlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:importlib", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:inspect", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"inspect\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:json", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:os", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:platform", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.Import\",\"tokens\":[\"platform\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:re", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:sys", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.Import\",\"tokens\":[\"sys\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:traceback", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:typing", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.Import\",\"tokens\":[\"typing\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:pathlib", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Path']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:typing", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['Any', 'List', 'Tuple', 'Union']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Tuple\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:aiofiles", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:loguru", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.Import\",\"tokens\":[\"loguru\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:pydantic_core", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['to_jsonable_python']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic_core\",\"names\":[\"to_jsonable_python\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:tenacity", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['RetryCallState', 'RetryError', '_utils']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"RetryCallState\",\"RetryError\",\"_utils\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.const", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['MESSAGE_ROUTE_TO_ALL']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"MESSAGE_ROUTE_TO_ALL\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.logs", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['logger']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/common.py:names:['handle_exception']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/redis.py:Redis:_connect", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:ast.Constant:\n@Time : 2023/12/27\n@Author : mashenquan\n@File : redis.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/27\\n@Author : mashenquan\\n@File : redis.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:__future__", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['annotations']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:traceback", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:datetime", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['timedelta']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"timedelta\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:aioredis", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aioredis\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:metagpt.configs.redis_config", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['RedisConfig']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.configs.redis_config\",\"names\":[\"RedisConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/redis.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/text.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/text.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:reduce_message_length"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:generate_prompt_chunk"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:split_paragraph"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:decode_unicode_escape"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:_split_by_count"}, {"predicate": "has_function", "source": "metagpt/utils/text.py", "target": "metagpt/utils/text.py:_split_text_with_ends"}, {"predicate": "is", "source": "metagpt/utils/text.py:reduce_message_length", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:reduce_message_length", "target": "{\"lineno\":6,\"end_lineno\":31,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"reduce_message_length\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:generate_prompt_chunk", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:generate_prompt_chunk", "target": "{\"lineno\":34,\"end_lineno\":76,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"generate_prompt_chunk\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:split_paragraph", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:split_paragraph", "target": "{\"lineno\":79,\"end_lineno\":96,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"split_paragraph\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:decode_unicode_escape", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:decode_unicode_escape", "target": "{\"lineno\":99,\"end_lineno\":108,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"decode_unicode_escape\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:_split_by_count", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:_split_by_count", "target": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_by_count\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/text.py:_split_text_with_ends", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:_split_text_with_ends", "target": "{\"lineno\":121,\"end_lineno\":129,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_split_text_with_ends\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:module:typing", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:names:['Generator', 'Sequence']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Generator\",\"Sequence\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:module:metagpt.utils.token_counter", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/text.py:names:['TOKEN_MAX', 'count_string_tokens']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.token_counter\",\"names\":[\"TOKEN_MAX\",\"count_string_tokens\"]}}"}, {"predicate": "is", "source": "metagpt/utils/graph_repository.py:GraphRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : graph_repository.py\n@Desc : Superclass for graph repository.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : graph_repository.py\\n@Desc : Superclass for graph repository.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:abc", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['ABC', 'abstractmethod']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\",\"abstractmethod\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:collections", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['defaultdict']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"collections\",\"names\":[\"defaultdict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:pathlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['Path']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['List']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['BaseModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.repo_parser", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['DotClassInfo', 'DotClassRelationship', 'RepoFileInfo']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"DotClassRelationship\",\"RepoFileInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/graph_repository.py:names:['concat_namespace', 'split_namespace']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "is", "source": "metagpt/utils/singleton.py:Singleton:__call__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:ast.Constant:\n@Time : 2023/5/11 16:15\n@Author : alexanderwu\n@File : singleton.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 16:15\\n@Author : alexanderwu\\n@File : singleton.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/singleton.py:abc", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"abc\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/file_repository.py:FileRepository:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: File repository management. RFC 135 2.2.3.2, 2.2.3.4 and 2.2.3.13.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:os", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:datetime", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['datetime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Dict', 'List', 'Set']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\",\"Set\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:aiofiles", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['Document']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.utils.common", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['aread']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:module:metagpt.utils.json_to_markdown", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/file_repository.py:names:['json_to_markdown']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.json_to_markdown\",\"names\":[\"json_to_markdown\"]}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringCollector:_leave", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringTransformer:_leave", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:get_docstring_statement", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:get_docstring_statement", "target": "{\"lineno\":11,\"end_lineno\":49,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_docstring_statement\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:has_decorator", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:has_decorator", "target": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"has_decorator\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:merge_docstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:merge_docstring", "target": "{\"lineno\":159,\"end_lineno\":176,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"merge_docstring\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/pycst.py:DocstringNode", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:DocstringNode", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"DocstringNode\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:__future__", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['annotations']", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:typing", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['Union']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:libcst as cst", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"libcst as cst\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:module:libcst._nodes.module", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/pycst.py:names:['Module']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"libcst._nodes.module\",\"names\":[\"Module\"]}}"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/exceptions.py", "target": "metagpt/utils/exceptions.py:handle_exception"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py:handle_exception", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:handle_exception", "target": "{\"lineno\":20,\"end_lineno\":61,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"handle_exception\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/exceptions.py:ReturnType", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:ReturnType", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"ReturnType\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:ast.Constant:\n@Time : 2023/12/19 14:46\n@Author : alexanderwu\n@File : exceptions.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19 14:46\\n@Author : alexanderwu\\n@File : exceptions.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:asyncio", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:functools", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"functools\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:traceback", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:names:['Any', 'Callable', 'Tuple', 'Type', 'TypeVar', 'Union']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Callable\",\"Tuple\",\"Type\",\"TypeVar\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/exceptions.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:json", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['Any', 'Tuple', 'Type']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Tuple\",\"Type\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['BaseModel']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:metagpt.logs", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['logger']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:module:metagpt.utils.common", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/human_interaction.py:names:['import_class']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"import_class\"]}}"}, {"predicate": "is", "source": "metagpt/utils/highlight.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/highlight.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/highlight.py", "target": "metagpt/utils/highlight.py:highlight"}, {"predicate": "is", "source": "metagpt/utils/highlight.py:highlight", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:highlight", "target": "{\"lineno\":7,\"end_lineno\":25,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"highlight\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['highlight as highlight_']", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments\",\"names\":[\"highlight as highlight_\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments.formatters", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['HtmlFormatter', 'TerminalFormatter']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.formatters\",\"names\":[\"HtmlFormatter\",\"TerminalFormatter\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:module:pygments.lexers", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/highlight.py:names:['PythonLexer', 'SqlLexer']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pygments.lexers\",\"names\":[\"PythonLexer\",\"SqlLexer\"]}}"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/mmdc_pyppeteer.py", "target": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file"}, {"predicate": "is", "source": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:mermaid_to_file", "target": "{\"lineno\":17,\"end_lineno\":128,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"mermaid_to_file\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:ast.Constant:\n@Time : 2023/9/4 16:12\n@Author : alitrack\n@File : mmdc_pyppeteer.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 16:12\\n@Author : alitrack\\n@File : mmdc_pyppeteer.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:urllib.parse", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['urljoin']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"urllib.parse\",\"names\":[\"urljoin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:pyppeteer", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['launch']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pyppeteer\",\"names\":[\"launch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.config2", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['config']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/mmdc_pyppeteer.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/s3.py:S3:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:base64", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"base64\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:os.path", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"os.path\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:traceback", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:uuid", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.Import\",\"tokens\":[\"uuid\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:pathlib", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['Path']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['Optional']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:aioboto3", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"aioboto3\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:aiofiles", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['S3Config']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"S3Config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.const", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['BASE64_FORMAT']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BASE64_FORMAT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/s3.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/json_to_markdown.py", "target": "metagpt/utils/json_to_markdown.py:json_to_markdown"}, {"predicate": "is", "source": "metagpt/utils/json_to_markdown.py:json_to_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/json_to_markdown.py:json_to_markdown", "target": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"json_to_markdown\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/json_to_markdown.py:ast.Constant:\n@Time : 2023/9/11 11:50\n@Author : femto Zheng\n@File : json_to_markdown.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/11 11:50\\n@Author : femto Zheng\\n@File : json_to_markdown.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:CustomDecoder:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:py_make_scanner", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:py_make_scanner", "target": "{\"lineno\":9,\"end_lineno\":69,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_make_scanner\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:JSONObject", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:JSONObject", "target": "{\"lineno\":91,\"end_lineno\":192,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"JSONObject\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:py_scanstring", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:py_scanstring", "target": "{\"lineno\":195,\"end_lineno\":267,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"py_scanstring\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:NUMBER_RE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:NUMBER_RE", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.Assign\",\"tokens\":[\"NUMBER_RE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:FLAGS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:FLAGS", "target": "{\"lineno\":72,\"end_lineno\":72,\"type_name\":\"ast.Assign\",\"tokens\":[\"FLAGS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK", "target": "{\"lineno\":73,\"end_lineno\":73,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_SINGLEQUOTE", "target": "{\"lineno\":74,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_SINGLEQUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_DOUBLE_QUOTE", "target": "{\"lineno\":75,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_DOUBLE_QUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:STRINGCHUNK_TRIPLE_SINGLEQUOTE", "target": "{\"lineno\":76,\"end_lineno\":76,\"type_name\":\"ast.Assign\",\"tokens\":[\"STRINGCHUNK_TRIPLE_SINGLEQUOTE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:BACKSLASH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:BACKSLASH", "target": "{\"lineno\":77,\"end_lineno\":86,\"type_name\":\"ast.Assign\",\"tokens\":[\"BACKSLASH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:WHITESPACE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:WHITESPACE", "target": "{\"lineno\":87,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:WHITESPACE_STR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:WHITESPACE_STR", "target": "{\"lineno\":88,\"end_lineno\":88,\"type_name\":\"ast.Assign\",\"tokens\":[\"WHITESPACE_STR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/utils/custom_decoder.py:scanstring", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:scanstring", "target": "{\"lineno\":270,\"end_lineno\":270,\"type_name\":\"ast.Assign\",\"tokens\":[\"scanstring\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:json", "target": "{\"lineno\":1,\"end_lineno\":1,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:re", "target": "{\"lineno\":2,\"end_lineno\":2,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:module:json", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:names:['JSONDecodeError']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json\",\"names\":[\"JSONDecodeError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:module:json.decoder", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/custom_decoder.py:names:['_decode_uXXXX']", "target": "{\"lineno\":4,\"end_lineno\":4,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"json.decoder\",\"names\":[\"_decode_uXXXX\"]}}"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/utils/git_repository.py:GitRepository:_init", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : git_repository.py\n@Desc: Git repository management. RFC 135 2.2.3.3.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : git_repository.py\\n@Desc: Git repository management. RFC 135 2.2.3.3.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:shutil", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:enum", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Enum']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Dict', 'List']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:git.repo", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['Repo']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo\",\"names\":[\"Repo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:git.repo.fun", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['is_git_dir']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"git.repo.fun\",\"names\":[\"is_git_dir\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:gitignore_parser", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['parse_gitignore']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"gitignore_parser\",\"names\":[\"parse_gitignore\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.utils.dependency_file", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['DependencyFile']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.dependency_file\",\"names\":[\"DependencyFile\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/git_repository.py:names:['FileRepository']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "is", "source": "metagpt/utils/read_document.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/utils/read_document.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/utils/read_document.py", "target": "metagpt/utils/read_document.py:read_docx"}, {"predicate": "is", "source": "metagpt/utils/read_document.py:read_docx", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:read_docx", "target": "{\"lineno\":12,\"end_lineno\":23,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"read_docx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:ast.Constant:\n@Time : 2023/4/29 15:45\n@Author : alexanderwu\n@File : read_document.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/4/29 15:45\\n@Author : alexanderwu\\n@File : read_document.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/utils/read_document.py:docx", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.Import\",\"tokens\":[\"docx\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : s3_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : s3_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/s3_config.py:names:['YamlModelWithoutDefault']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : browser_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : browser_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:metagpt.tools", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['WebBrowserEngineType']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/browser_config.py:names:['YamlModel']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:ast.Constant:\n@Time : 2024/1/4 19:09\n@Author : alexanderwu\n@File : workspace_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:09\\n@Author : alexanderwu\\n@File : workspace_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:datetime", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['datetime']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:pathlib", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['Path']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:uuid", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['uuid4']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"uuid\",\"names\":[\"uuid4\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:pydantic", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['field_validator', 'model_validator']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['DEFAULT_WORKSPACE_ROOT']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DEFAULT_WORKSPACE_ROOT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/workspace_config.py:names:['YamlModel']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:ast.Constant:\n@Time : 2024/1/4 19:07\n@Author : alexanderwu\n@File : mermaid_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:07\\n@Author : alexanderwu\\n@File : mermaid_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:names:['Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/mermaid_config.py:names:['YamlModel']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/configs/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/configs/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/configs/__init__.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/configs/llm_config.py:LLMType:__missing__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:ast.Constant:\n@Time : 2024/1/4 16:33\n@Author : alexanderwu\n@File : llm_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 16:33\\n@Author : alexanderwu\\n@File : llm_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['field_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"field_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/llm_config.py:names:['YamlModel']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : redis_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : redis_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/redis_config.py:names:['YamlModelWithoutDefault']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModelWithoutDefault\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:ast.Constant:\n@Time : 2024/1/4 19:06\n@Author : alexanderwu\n@File : search_config.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4 19:06\\n@Author : alexanderwu\\n@File : search_config.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:module:metagpt.tools", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:names:['SearchEngineType']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:module:metagpt.utils.yaml_model", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/configs/search_config.py:names:['YamlModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.yaml_model\",\"names\":[\"YamlModel\"]}}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class_views", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_class", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_create_mermaid_relationship", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_diff_path", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_class_view.py:RebuildClassView:_align_root", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:ast.Constant:\n@Time : 2023/12/19\n@Author : mashenquan\n@File : rebuild_class_view.py\n@Desc : Rebuild class view info\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/19\\n@Author : mashenquan\\n@File : rebuild_class_view.py\\n@Desc : Rebuild class view info\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:pathlib", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Path']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Optional']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:aiofiles", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"aiofiles\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.actions", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.config2", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['config']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.const", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['AGGREGATION', 'COMPOSITION', 'DATA_API_DESIGN_FILE_REPO', 'GENERALIZATION', 'GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":17,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"AGGREGATION\",\"COMPOSITION\",\"DATA_API_DESIGN_FILE_REPO\",\"GENERALIZATION\",\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.logs", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['logger']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.repo_parser", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['DotClassInfo', 'RepoParser']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"DotClassInfo\",\"RepoParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.schema", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['UMLClassView']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.common", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['concat_namespace', 'split_namespace']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"concat_namespace\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['DiGraphRepository']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_class_view.py:names:['GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":29,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_main_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_main_entry", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_use_case", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_rebuild_sequence_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_participants", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_use_cases", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_class_detail", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_uml_class_view", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_source_code", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_get_full_filename", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_search_new_participant", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/rebuild_sequence_view.py:RebuildSequenceView:_merge_participant", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:ast.Constant:\n@Time : 2024/1/4\n@Author : mashenquan\n@File : rebuild_sequence_view.py\n@Desc : Rebuild sequence view info\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2024/1/4\\n@Author : mashenquan\\n@File : rebuild_sequence_view.py\\n@Desc : Rebuild sequence view info\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:datetime", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['datetime']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['List', 'Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:pydantic", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['BaseModel']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:tenacity", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.actions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['Action']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.config2", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['config']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['GRAPH_REPO_FILE_REPO']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"GRAPH_REPO_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.logs", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['logger']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.repo_parser", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['CodeBlockInfo', 'DotClassInfo']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.repo_parser\",\"names\":[\"CodeBlockInfo\",\"DotClassInfo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.schema", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['UMLClassView']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"UMLClassView\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.common", "target": "{\"lineno\":25,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['aread', 'concat_namespace', 'general_after_log', 'list_files', 'parse_json_code_block', 'read_file_block', 'split_namespace']", "target": "{\"lineno\":25,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"aread\",\"concat_namespace\",\"general_after_log\",\"list_files\",\"parse_json_code_block\",\"read_file_block\",\"split_namespace\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.di_graph_repository", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['DiGraphRepository']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.di_graph_repository\",\"names\":[\"DiGraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:module:metagpt.utils.graph_repository", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/rebuild_sequence_view.py:names:['SPO', 'GraphKeyword', 'GraphRepository']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.graph_repository\",\"names\":[\"SPO\",\"GraphKeyword\",\"GraphRepository\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":36,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code.py\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\n value of the `Message` object.\n@Modified By: mashenquan, 2023-11-27.\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\n code-block formatting to enhance the understanding for the LLM.\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\n than passing them in when calling the run function.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n", "target": "{\"lineno\":3,\"end_lineno\":16,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code.py\\n@Modified By: mashenquan, 2023-11-1. In accordance with Chapter 2.1.3 of RFC 116, modify the data type of the `cause_by`\\n value of the `Message` object.\\n@Modified By: mashenquan, 2023-11-27.\\n 1. Mark the location of Design, Tasks, Legacy Code and Debug logs in the PROMPT_TEMPLATE with markdown\\n code-block formatting to enhance the understanding for the LLM.\\n 2. Following the think-act principle, solidify the task parameters when creating the WriteCode object, rather\\n than passing them in when calling the run function.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:json", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:pydantic", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['Field']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:tenacity", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.action", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['Action']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['REFINED_TASK_LIST', 'TASK_LIST']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"REFINED_TASK_LIST\",\"TASK_LIST\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.actions.write_code_plan_and_change_an", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['REFINED_TEMPLATE']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_plan_and_change_an\",\"names\":[\"REFINED_TEMPLATE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.const", "target": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['BUGFIX_FILENAME', 'CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":26,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.logs", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['logger']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.schema", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CodingContext', 'Document', 'RunCodeResult']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\",\"Document\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.utils.common", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['CodeParser']", "target": "{\"lineno\":33,\"end_lineno\":33,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code.py:names:['ProjectRepo']", "target": "{\"lineno\":34,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py", "target": "python"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:LANGUAGE", "target": "{\"lineno\":12,\"end_lineno\":17,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PROGRAMMING_LANGUAGE", "target": "{\"lineno\":19,\"end_lineno\":24,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAMMING_LANGUAGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ORIGINAL_REQUIREMENTS", "target": "{\"lineno\":26,\"end_lineno\":31,\"type_name\":\"ast.Assign\",\"tokens\":[\"ORIGINAL_REQUIREMENTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENTS", "target": "{\"lineno\":33,\"end_lineno\":38,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENTS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PROJECT_NAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PROJECT_NAME", "target": "{\"lineno\":40,\"end_lineno\":46,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:PRODUCT_GOALS", "target": "{\"lineno\":48,\"end_lineno\":53,\"type_name\":\"ast.Assign\",\"tokens\":[\"PRODUCT_GOALS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_PRODUCT_GOALS", "target": "{\"lineno\":55,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRODUCT_GOALS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:USER_STORIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:USER_STORIES", "target": "{\"lineno\":67,\"end_lineno\":78,\"type_name\":\"ast.Assign\",\"tokens\":[\"USER_STORIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_USER_STORIES", "target": "{\"lineno\":80,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_USER_STORIES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_ANALYSIS", "target": "{\"lineno\":94,\"end_lineno\":103,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:COMPETITIVE_QUADRANT_CHART", "target": "{\"lineno\":105,\"end_lineno\":124,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMPETITIVE_QUADRANT_CHART\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_ANALYSIS", "target": "{\"lineno\":126,\"end_lineno\":131,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_ANALYSIS", "target": "{\"lineno\":133,\"end_lineno\":140,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REQUIREMENT_POOL", "target": "{\"lineno\":142,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIREMENT_POOL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_REQUIREMENT_POOL", "target": "{\"lineno\":149,\"end_lineno\":155,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_REQUIREMENT_POOL\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:UI_DESIGN_DRAFT", "target": "{\"lineno\":157,\"end_lineno\":162,\"type_name\":\"ast.Assign\",\"tokens\":[\"UI_DESIGN_DRAFT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ANYTHING_UNCLEAR", "target": "{\"lineno\":164,\"end_lineno\":169,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:ISSUE_TYPE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ISSUE_TYPE", "target": "{\"lineno\":171,\"end_lineno\":176,\"type_name\":\"ast.Assign\",\"tokens\":[\"ISSUE_TYPE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:IS_RELATIVE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:IS_RELATIVE", "target": "{\"lineno\":178,\"end_lineno\":183,\"type_name\":\"ast.Assign\",\"tokens\":[\"IS_RELATIVE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REASON", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REASON", "target": "{\"lineno\":185,\"end_lineno\":187,\"type_name\":\"ast.Assign\",\"tokens\":[\"REASON\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:NODES", "target": "{\"lineno\":190,\"end_lineno\":203,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_NODES", "target": "{\"lineno\":205,\"end_lineno\":218,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WRITE_PRD_NODE", "target": "{\"lineno\":220,\"end_lineno\":220,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_PRD_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:REFINED_PRD_NODE", "target": "{\"lineno\":221,\"end_lineno\":221,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PRD_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WP_ISSUE_TYPE_NODE", "target": "{\"lineno\":222,\"end_lineno\":222,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_ISSUE_TYPE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:WP_IS_RELATIVE_NODE", "target": "{\"lineno\":223,\"end_lineno\":223,\"type_name\":\"ast.Assign\",\"tokens\":[\"WP_IS_RELATIVE_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:ast.Constant:\n@Time : 2023/12/14 11:40\n@Author : alexanderwu\n@File : write_prd_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 11:40\\n@Author : alexanderwu\\n@File : write_prd_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":17,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:FORMAT_EXAMPLE", "target": "{\"lineno\":46,\"end_lineno\":87,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:ast.Constant:\n@Author : alexanderwu\n@File : summarize_code.py\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : summarize_code.py\\n@Modified By: mashenquan, 2023/12/5. Archive the summarization content of issue discovery for use in WriteCode.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:pathlib", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Path']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:tenacity", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.actions.action", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/summarize_code.py:names:['CodeSummarizeContext']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodeSummarizeContext\"]}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CollectLinks:_search_and_rank_urls", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/research.py:WebBrowseAndSummarize:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/research.py:ConductResearch:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/research.py:get_research_system_text", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:get_research_system_text", "target": "{\"lineno\":268,\"end_lineno\":278,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"get_research_system_text\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:LANG_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:LANG_PROMPT", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANG_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:RESEARCH_BASE_SYSTEM", "target": "{\"lineno\":20,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_BASE_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:RESEARCH_TOPIC_SYSTEM", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.Assign\",\"tokens\":[\"RESEARCH_TOPIC_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:SEARCH_TOPIC_PROMPT", "target": "{\"lineno\":25,\"end_lineno\":26,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_TOPIC_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:SUMMARIZE_SEARCH_PROMPT", "target": "{\"lineno\":28,\"end_lineno\":35,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_SEARCH_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:COLLECT_AND_RANKURLS_PROMPT", "target": "{\"lineno\":37,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"COLLECT_AND_RANKURLS_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:WEB_BROWSE_AND_SUMMARIZE_PROMPT", "target": "{\"lineno\":51,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"WEB_BROWSE_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:CONDUCT_RESEARCH_PROMPT", "target": "{\"lineno\":63,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONDUCT_RESEARCH_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:__future__", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['annotations']", "target": "{\"lineno\":3,\"end_lineno\":3,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:asyncio", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Callable', 'Optional', 'Union']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Callable\",\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:pydantic", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Field', 'parse_obj_as']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\",\"parse_obj_as\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.config2", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['config']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['SearchEngine']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.tools.web_browser_engine", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['WebBrowserEngine', 'WebBrowserEngineType']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.web_browser_engine\",\"names\":[\"WebBrowserEngine\",\"WebBrowserEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.utils.common", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['OutputParser']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:module:metagpt.utils.text", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/research.py:names:['generate_prompt_chunk', 'reduce_message_length']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.text\",\"names\":[\"generate_prompt_chunk\",\"reduce_message_length\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : skill_action.py\n@Desc : Call learned skill\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : skill_action.py\\n@Desc : Call learned skill\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:ast", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:importlib", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"importlib\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:traceback", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"traceback\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:copy", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['deepcopy']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"copy\",\"names\":[\"deepcopy\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Dict', 'Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.actions", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Action']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.learn.skill_loader", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Skill']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.learn.skill_loader\",\"names\":[\"Skill\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.logs", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['logger']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:module:metagpt.schema", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/skill_action.py:names:['Message']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_test.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:PROMPT_TEMPLATE", "target": "{\"lineno\":19,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:ast.Constant:\n@Time : 2023/5/11 22:12\n@Author : alexanderwu\n@File : write_test.py\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\n WriteTest object, rather than passing them in when calling the run function.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 22:12\\n@Author : alexanderwu\\n@File : write_test.py\\n@Modified By: mashenquan, 2023-11-27. Following the think-act principle, solidify the task parameters when creating the\\n WriteTest object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Optional']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.actions.action", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.const", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['TEST_CODES_FILE_REPO']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"TEST_CODES_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.logs", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['logger']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['Document', 'TestingContext']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_test.py:names:['CodeParser']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:PROMPT_TEMPLATE", "target": "{\"lineno\":20,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : debug_error.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : debug_error.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:re", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"re\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['Field']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.actions.action", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.logs", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['logger']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['RunCodeContext', 'RunCodeResult']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:module:metagpt.utils.common", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/debug_error.py:names:['CodeParser']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_new_system_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_update_system_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_data_api_design", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_seq_flow", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:WriteDesign:_save_mermaid_file", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":30,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:ast.Constant:\n@Time : 2023/5/11 19:26\n@Author : alexanderwu\n@File : design_api.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:26\\n@Author : alexanderwu\\n@File : design_api.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.3 of RFC 135, add incremental iteration functionality.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:json", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:pathlib", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Path']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.actions", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.actions.design_api_an", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['DATA_STRUCTURES_AND_INTERFACES', 'DESIGN_API_NODE', 'PROGRAM_CALL_FLOW', 'REFINED_DATA_STRUCTURES_AND_INTERFACES', 'REFINED_DESIGN_NODE', 'REFINED_PROGRAM_CALL_FLOW']", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_an\",\"names\":[\"DATA_STRUCTURES_AND_INTERFACES\",\"DESIGN_API_NODE\",\"PROGRAM_CALL_FLOW\",\"REFINED_DATA_STRUCTURES_AND_INTERFACES\",\"REFINED_DESIGN_NODE\",\"REFINED_PROGRAM_CALL_FLOW\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.const", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['DATA_API_DESIGN_FILE_REPO', 'SEQ_FLOW_FILE_REPO']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"DATA_API_DESIGN_FILE_REPO\",\"SEQ_FLOW_FILE_REPO\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.logs", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['logger']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.schema", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['Document', 'Documents', 'Message']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api.py:names:['mermaid_to_file']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/design_api_an.py", "target": "metagpt/actions/design_api_an.py:main"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:main", "target": "{\"lineno\":114,\"end_lineno\":118,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:IMPLEMENTATION_APPROACH", "target": "{\"lineno\":14,\"end_lineno\":19,\"type_name\":\"ast.Assign\",\"tokens\":[\"IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_IMPLEMENTATION_APPROACH", "target": "{\"lineno\":21,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_IMPLEMENTATION_APPROACH\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:PROJECT_NAME", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:PROJECT_NAME", "target": "{\"lineno\":30,\"end_lineno\":32,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROJECT_NAME\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:FILE_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:FILE_LIST", "target": "{\"lineno\":34,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"FILE_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_FILE_LIST", "target": "{\"lineno\":41,\"end_lineno\":47,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_FILE_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:DATA_STRUCTURES_AND_INTERFACES", "target": "{\"lineno\":49,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_DATA_STRUCTURES_AND_INTERFACES", "target": "{\"lineno\":58,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DATA_STRUCTURES_AND_INTERFACES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:PROGRAM_CALL_FLOW", "target": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_PROGRAM_CALL_FLOW", "target": "{\"lineno\":76,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PROGRAM_CALL_FLOW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:ANYTHING_UNCLEAR", "target": "{\"lineno\":86,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:NODES", "target": "{\"lineno\":93,\"end_lineno\":100,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_NODES", "target": "{\"lineno\":102,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:DESIGN_API_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:DESIGN_API_NODE", "target": "{\"lineno\":110,\"end_lineno\":110,\"type_name\":\"ast.Assign\",\"tokens\":[\"DESIGN_API_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:REFINED_DESIGN_NODE", "target": "{\"lineno\":111,\"end_lineno\":111,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_DESIGN_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:ast.Constant:\n@Time : 2023/12/12 22:24\n@Author : alexanderwu\n@File : design_api_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/12 22:24\\n@Author : alexanderwu\\n@File : design_api_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:names:['MMC1', 'MMC2']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"MMC1\",\"MMC2\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_an.py:__name__:__main__", "target": "{\"lineno\":121,\"end_lineno\":122,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_output.py:ActionOutput:__init__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:ast.Constant:\n@Time : 2023/7/11 10:03\n@Author : chengmaoyu\n@File : action_output\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/11 10:03\\n@Author : chengmaoyu\\n@File : action_output\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_output.py:names:['BaseModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/action_outcls_registry.py", "target": "metagpt/actions/action_outcls_registry.py:register_action_outcls"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py:register_action_outcls", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:register_action_outcls", "target": "{\"lineno\":11,\"end_lineno\":42,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"register_action_outcls\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_outcls_registry.py:action_outcls_registry", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:action_outcls_registry", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Assign\",\"tokens\":[\"action_outcls_registry\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:module:functools", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_outcls_registry.py:names:['wraps']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"functools\",\"names\":[\"wraps\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:ast.Constant:\n@Time : 2023/5/20 17:46\n@Author : alexanderwu\n@File : add_requirement.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/20 17:46\\n@Author : alexanderwu\\n@File : add_requirement.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/add_requirement.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/__init__.py", "target": "python"}, {"predicate": "has_class", "source": "metagpt/actions/__init__.py", "target": "metagpt/actions/__init__.py:ActionType"}, {"predicate": "is", "source": "metagpt/actions/__init__.py:ActionType", "target": "class"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:ActionType", "target": "{\"lineno\":27,\"end_lineno\":44,\"type_name\":\"ast.ClassDef\",\"tokens\":[\"ActionType\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/__init__.py:__all__", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:__all__", "target": "{\"lineno\":47,\"end_lineno\":51,\"type_name\":\"ast.Assign\",\"tokens\":[\"__all__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:ast.Constant:\n@Time : 2023/5/11 17:44\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:44\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:enum", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['Enum']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.action", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.action_output", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['ActionOutput']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.add_requirement", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['UserRequirement']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.add_requirement\",\"names\":[\"UserRequirement\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.debug_error", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['DebugError']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.debug_error\",\"names\":[\"DebugError\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.design_api", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteDesign']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api\",\"names\":[\"WriteDesign\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.design_api_review", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['DesignReview']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.design_api_review\",\"names\":[\"DesignReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.project_management", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteTasks']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management\",\"names\":[\"WriteTasks\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.research", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['CollectLinks', 'WebBrowseAndSummarize', 'ConductResearch']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.research\",\"names\":[\"CollectLinks\",\"WebBrowseAndSummarize\",\"ConductResearch\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.run_code", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['RunCode']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.run_code\",\"names\":[\"RunCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.search_and_summarize", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['SearchAndSummarize']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.search_and_summarize\",\"names\":[\"SearchAndSummarize\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_code", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCode']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_code_review", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteCodeReview']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_code_review\",\"names\":[\"WriteCodeReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePRD']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd\",\"names\":[\"WritePRD\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_prd_review", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WritePRDReview']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_review\",\"names\":[\"WritePRDReview\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:module:metagpt.actions.write_test", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/__init__.py:names:['WriteTest']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_test\",\"names\":[\"WriteTest\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:REVIEW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:REVIEW", "target": "{\"lineno\":12,\"end_lineno\":20,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:LGTM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:LGTM", "target": "{\"lineno\":22,\"end_lineno\":28,\"type_name\":\"ast.Assign\",\"tokens\":[\"LGTM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:WRITE_REVIEW_NODE", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_REVIEW_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:typing", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['List']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:metagpt.actions", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['Action']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_review.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_init_with_instruction", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_aask", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action.py:Action:_run_action_node", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:ast.Constant:\n@Time : 2023/5/11 14:43\n@Author : alexanderwu\n@File : action.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 14:43\\n@Author : alexanderwu\\n@File : action.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:__future__", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['annotations']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:typing", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['Optional', 'Union']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:pydantic", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['BaseModel', 'ConfigDict', 'Field', 'model_validator']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.actions.action_node", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ActionNode']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.context_mixin", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ContextMixin']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context_mixin\",\"names\":[\"ContextMixin\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.schema", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['CodePlanAndChangeContext', 'CodeSummarizeContext', 'CodingContext', 'RunCodeContext', 'SerializationMixin', 'TestingContext']", "target": "{\"lineno\":17,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\",\"CodeSummarizeContext\",\"CodingContext\",\"RunCodeContext\",\"SerializationMixin\",\"TestingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action.py:names:['ProjectRepo']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:ast.Constant:\n@Time : 2023/9/13 12:26\n@Author : femto Zheng\n@File : execute_task.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/13 12:26\\n@Author : femto Zheng\\n@File : execute_task.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:module:metagpt.schema", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/execute_task.py:names:['Message']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_bugfix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_new_requirement", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_handle_requirement_update", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_is_bugfix", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_is_related", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_update_prd", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_save_competitive_analysis", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:WritePRD:_rename_workspace", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:CONTEXT_TEMPLATE", "target": "{\"lineno\":41,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTEXT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":52,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd.py\n@Modified By: mashenquan, 2023/11/27.\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\n", "target": "{\"lineno\":3,\"end_lineno\":12,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. According to Section 2.2.3.1 of RFC 135, replace file data in the message with the file name.\\n 2. According to the design in Section 2.2.3.5.2 of RFC 135, add incremental iteration functionality.\\n 3. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n@Modified By: mashenquan, 2023/12/5. Move the generation logic of the project name to WritePRD.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:__future__", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['annotations']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:json", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:pathlib", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Path']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.action_node", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['ActionNode']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.fix_bug", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['FixBug']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.fix_bug\",\"names\":[\"FixBug\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.actions.write_prd_an", "target": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['COMPETITIVE_QUADRANT_CHART', 'PROJECT_NAME', 'REFINED_PRD_NODE', 'WP_IS_RELATIVE_NODE', 'WP_ISSUE_TYPE_NODE', 'WRITE_PRD_NODE']", "target": "{\"lineno\":22,\"end_lineno\":29,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.write_prd_an\",\"names\":[\"COMPETITIVE_QUADRANT_CHART\",\"PROJECT_NAME\",\"REFINED_PRD_NODE\",\"WP_IS_RELATIVE_NODE\",\"WP_ISSUE_TYPE_NODE\",\"WRITE_PRD_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.const", "target": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['BUGFIX_FILENAME', 'COMPETITIVE_ANALYSIS_FILE_REPO', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":30,\"end_lineno\":34,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"BUGFIX_FILENAME\",\"COMPETITIVE_ANALYSIS_FILE_REPO\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.logs", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['logger']", "target": "{\"lineno\":35,\"end_lineno\":35,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.schema", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['BugFixContext', 'Document', 'Documents', 'Message']", "target": "{\"lineno\":36,\"end_lineno\":36,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"BugFixContext\",\"Document\",\"Documents\",\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.common", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['CodeParser']", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['FileRepository']", "target": "{\"lineno\":38,\"end_lineno\":38,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:module:metagpt.utils.mermaid", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd.py:names:['mermaid_to_file']", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.mermaid\",\"names\":[\"mermaid_to_file\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:_simplify_python_code", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:_simplify_python_code", "target": "{\"lineno\":199,\"end_lineno\":212,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"_simplify_python_code\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_SYSTEM", "target": "{\"lineno\":34,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_GOOGLE", "target": "{\"lineno\":58,\"end_lineno\":84,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_GOOGLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_NUMPY", "target": "{\"lineno\":86,\"end_lineno\":122,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_NUMPY\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:PYTHON_DOCSTRING_EXAMPLE_SPHINX", "target": "{\"lineno\":124,\"end_lineno\":147,\"type_name\":\"ast.Assign\",\"tokens\":[\"PYTHON_DOCSTRING_EXAMPLE_SPHINX\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_docstring.py:_python_docstring_style", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:_python_docstring_style", "target": "{\"lineno\":149,\"end_lineno\":153,\"type_name\":\"ast.Assign\",\"tokens\":[\"_python_docstring_style\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:ast.Constant:Code Docstring Generator.\n\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\ndocstrings for the given code and system text.\n\nUsage:\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\n\nArguments:\n filename The path to the Python file for which you want to generate docstrings.\n\nOptions:\n --overwrite If specified, overwrite the original file with the code containing docstrings.\n --style= Specify the style of the generated docstrings.\n Valid values: 'google', 'numpy', or 'sphinx'.\n Default: 'google'\n\nExample:\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\n\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\nthe specified docstring style and adds them to the code.\n", "target": "{\"lineno\":1,\"end_lineno\":23,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"Code Docstring Generator.\\n\\nThis script provides a tool to automatically generate docstrings for Python code. It uses the specified style to create\\ndocstrings for the given code and system text.\\n\\nUsage:\\n python3 -m metagpt.actions.write_docstring [--overwrite] [--style=]\\n\\nArguments:\\n filename The path to the Python file for which you want to generate docstrings.\\n\\nOptions:\\n --overwrite If specified, overwrite the original file with the code containing docstrings.\\n --style= Specify the style of the generated docstrings.\\n Valid values: 'google', 'numpy', or 'sphinx'.\\n Default: 'google'\\n\\nExample:\\n python3 -m metagpt.actions.write_docstring ./metagpt/startup.py --overwrite False --style=numpy\\n\\nThis script uses the 'fire' library to create a command-line interface. It generates docstrings for the given Python code using\\nthe specified docstring style and adds them to the code.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:__future__", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['annotations']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:ast", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.Import\",\"tokens\":[\"ast\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:pathlib", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Path']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:typing", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Literal', 'Optional']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Literal\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.actions.action", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['Action']", "target": "{\"lineno\":30,\"end_lineno\":30,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.utils.common", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['OutputParser', 'aread', 'awrite']", "target": "{\"lineno\":31,\"end_lineno\":31,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"aread\",\"awrite\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:module:metagpt.utils.pycst", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:names:['merge_docstring']", "target": "{\"lineno\":32,\"end_lineno\":32,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.pycst\",\"names\":[\"merge_docstring\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_docstring.py:__name__:__main__", "target": "{\"lineno\":215,\"end_lineno\":218,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:ast.Constant:\n@Time : 2023-12-12\n@Author : mashenquan\n@File : fix_bug.py\n", "target": "{\"lineno\":2,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023-12-12\\n@Author : mashenquan\\n@File : fix_bug.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:module:metagpt.actions", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/fix_bug.py:names:['Action']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/prepare_interview.py:QUESTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:QUESTIONS", "target": "{\"lineno\":11,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:ast.Constant:\n@Time : 2023/9/19 15:02\n@Author : DevXiaolan\n@File : prepare_interview.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/19 15:02\\n@Author : DevXiaolan\\n@File : prepare_interview.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:module:metagpt.actions", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:names:['Action']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:module:metagpt.actions.action_node", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_interview.py:names:['ActionNode']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_via_subprocess", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_requirements", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_pytest", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:RunCode:_install_dependencies", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:PROMPT_TEMPLATE", "target": "{\"lineno\":29,\"end_lineno\":49,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:TEMPLATE_CONTEXT", "target": "{\"lineno\":51,\"end_lineno\":75,\"type_name\":\"ast.Assign\",\"tokens\":[\"TEMPLATE_CONTEXT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:ast.Constant:\n@Time : 2023/5/11 17:46\n@Author : alexanderwu\n@File : run_code.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\n the understanding for the LLM.\n 2. Fix bug: Add the \"install dependency\" operation.\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\n (code files, unit test files, log files) from using the message to using the file name.\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\n class.\n", "target": "{\"lineno\":3,\"end_lineno\":17,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:46\\n@Author : alexanderwu\\n@File : run_code.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Mark the location of Console logs in the PROMPT_TEMPLATE with markdown code-block formatting to enhance\\n the understanding for the LLM.\\n 2. Fix bug: Add the \\\"install dependency\\\" operation.\\n 3. Encapsulate the input of RunCode into RunCodeContext and encapsulate the output of RunCode into\\n RunCodeResult to standardize and unify parameter passing between WriteCode, RunCode, and DebugError.\\n 4. According to section 2.2.3.5.7 of RFC 135, change the method of transferring file content\\n (code files, unit test files, log files) from using the message to using the file name.\\n 5. Merged the `Config` class of send18:dev branch to take over the set/get operations of the Environment\\n class.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:subprocess", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.Import\",\"tokens\":[\"subprocess\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:pathlib", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Path']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:typing", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Tuple']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Tuple\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:pydantic", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Field']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.actions.action", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['Action']", "target": "{\"lineno\":24,\"end_lineno\":24,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.logs", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['logger']", "target": "{\"lineno\":25,\"end_lineno\":25,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.schema", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['RunCodeContext', 'RunCodeResult']", "target": "{\"lineno\":26,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"RunCodeContext\",\"RunCodeResult\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:module:metagpt.utils.exceptions", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/run_code.py:names:['handle_exception']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.exceptions\",\"names\":[\"handle_exception\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:main", "target": "{\"lineno\":584,\"end_lineno\":585,\"type_name\":\"ast.AsyncFunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REVIEW", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REVIEW", "target": "{\"lineno\":13,\"end_lineno\":22,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REVIEW_RESULT", "target": "{\"lineno\":24,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_RESULT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:NEXT_STEPS", "target": "{\"lineno\":31,\"end_lineno\":61,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEXT_STEPS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_DRAFT", "target": "{\"lineno\":63,\"end_lineno\":68,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_DRAFT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_FUNCTION", "target": "{\"lineno\":71,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_FUNCTION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:REWRITE_CODE", "target": "{\"lineno\":83,\"end_lineno\":94,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_CONTEXT", "target": "{\"lineno\":97,\"end_lineno\":416,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SMALLEST_CONTEXT", "target": "{\"lineno\":419,\"end_lineno\":489,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SMALLEST_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CODE_REVIEW_SAMPLE", "target": "{\"lineno\":492,\"end_lineno\":554,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_REVIEW_SAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_CODE_NODE", "target": "{\"lineno\":557,\"end_lineno\":557,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:WRITE_MOVE_NODE", "target": "{\"lineno\":558,\"end_lineno\":558,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_MOVE_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:CR_FOR_MOVE_FUNCTION_BY_3", "target": "{\"lineno\":561,\"end_lineno\":573,\"type_name\":\"ast.Assign\",\"tokens\":[\"CR_FOR_MOVE_FUNCTION_BY_3\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:ast.Constant:\n@Author : alexanderwu\n@File : write_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":6,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Author : alexanderwu\\n@File : write_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:asyncio", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['List', 'Literal']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\",\"Literal\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:module:metagpt.actions.action_node", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:names:['ActionNode']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_an_draft.py:__name__:__main__", "target": "{\"lineno\":588,\"end_lineno\":589,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:ast.Constant:\n@Time : 2023/8/28\n@Author : mashenquan\n@File : talk_action.py\n@Desc : Act as it\u2019s a talk\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/8/28\\n@Author : mashenquan\\n@File : talk_action.py\\n@Desc : Act as it\u2019s a talk\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.actions", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.config2", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['config']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.config2\",\"names\":[\"config\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:module:metagpt.schema", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/talk_action.py:names:['Message']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Actions of the tutorial assistant, including writing directories and document content.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:typing", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['Dict']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Dict\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.actions", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['Action']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.prompts.tutorial_assistant", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['CONTENT_PROMPT', 'DIRECTORY_PROMPT']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.tutorial_assistant\",\"names\":[\"CONTENT_PROMPT\",\"DIRECTORY_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:module:metagpt.utils.common", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_tutorial.py:names:['OutputParser']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_prd_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_prd_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:module:metagpt.actions.action", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_prd_review.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/generate_questions.py:QUESTIONS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:QUESTIONS", "target": "{\"lineno\":9,\"end_lineno\":15,\"type_name\":\"ast.Assign\",\"tokens\":[\"QUESTIONS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:ast.Constant:\n@File : generate_questions.py\n", "target": "{\"lineno\":3,\"end_lineno\":5,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@File : generate_questions.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:module:metagpt.actions", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:names:['Action']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:module:metagpt.actions.action_node", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/generate_questions.py:names:['ActionNode']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "is", "source": "metagpt/actions/prepare_documents.py:PrepareDocuments:_init_repo", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:ast.Constant:\n@Time : 2023/11/20\n@Author : mashenquan\n@File : prepare_documents.py\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\n RFC 135 2.2.3.5.1.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/11/20\\n@Author : mashenquan\\n@File : prepare_documents.py\\n@Desc: PrepareDocuments Action: initialize project folder and add new requirements to docs/requirements.txt.\\n RFC 135 2.2.3.5.1.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:shutil", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"shutil\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:pathlib", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Path']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:typing", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Optional']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['Action', 'ActionOutput']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\",\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.const", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['REQUIREMENT_FILENAME']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.file_repository", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['FileRepository']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file_repository\",\"names\":[\"FileRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.git_repository", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['GitRepository']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.git_repository\",\"names\":[\"GitRepository\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:module:metagpt.utils.project_repo", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/prepare_documents.py:names:['ProjectRepo']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.project_repo\",\"names\":[\"ProjectRepo\"]}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM", "target": "{\"lineno\":19,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SYSTEM_EN_US", "target": "{\"lineno\":42,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SYSTEM_EN_US\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_PROMPT", "target": "{\"lineno\":44,\"end_lineno\":58,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_SYSTEM", "target": "{\"lineno\":60,\"end_lineno\":80,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_SYSTEM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_AND_SUMMARIZE_SALES_PROMPT", "target": "{\"lineno\":82,\"end_lineno\":91,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_AND_SUMMARIZE_SALES_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:SEARCH_FOOD", "target": "{\"lineno\":93,\"end_lineno\":102,\"type_name\":\"ast.Assign\",\"tokens\":[\"SEARCH_FOOD\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:ast.Constant:\n@Time : 2023/5/23 17:26\n@Author : alexanderwu\n@File : search_google.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/23 17:26\\n@Author : alexanderwu\\n@File : search_google.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Any', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.Import\",\"tokens\":[\"pydantic\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['model_validator']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.actions", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Action']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.logs", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['logger']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.schema", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['Message']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Message\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.tools", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['SearchEngineType']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools\",\"names\":[\"SearchEngineType\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:module:metagpt.tools.search_engine", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/search_and_summarize.py:names:['SearchEngine']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.tools.search_engine\",\"names\":[\"SearchEngine\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:PROMPT_TEMPLATE", "target": "{\"lineno\":21,\"end_lineno\":34,\"type_name\":\"ast.Assign\",\"tokens\":[\"PROMPT_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:EXAMPLE_AND_INSTRUCTION", "target": "{\"lineno\":36,\"end_lineno\":56,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXAMPLE_AND_INSTRUCTION\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:FORMAT_EXAMPLE", "target": "{\"lineno\":58,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_EXAMPLE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:REWRITE_CODE_TEMPLATE", "target": "{\"lineno\":111,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REWRITE_CODE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:ast.Constant:\n@Time : 2023/5/11 17:45\n@Author : alexanderwu\n@File : write_code_review.py\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\n WriteCode object, rather than passing them in when calling the run function.\n", "target": "{\"lineno\":3,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 17:45\\n@Author : alexanderwu\\n@File : write_code_review.py\\n@Modified By: mashenquan, 2023/11/27. Following the think-act principle, solidify the task parameters when creating the\\n WriteCode object, rather than passing them in when calling the run function.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:pydantic", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['Field']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:tenacity", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.actions", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['WriteCode']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"WriteCode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.actions.action", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['Action']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.const", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CODE_PLAN_AND_CHANGE_FILENAME', 'REQUIREMENT_FILENAME']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"CODE_PLAN_AND_CHANGE_FILENAME\",\"REQUIREMENT_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.logs", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['logger']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.schema", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CodingContext']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodingContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:module:metagpt.utils.common", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_review.py:names:['CodeParser']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:_set_result", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/write_teaching_plan.py:WriteTeachingPlanPart:__repr__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:ast.Constant:\n@Time : 2023/7/27\n@Author : mashenquan\n@File : write_teaching_plan.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/7/27\\n@Author : mashenquan\\n@File : write_teaching_plan.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.actions", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Action']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.context", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['Context']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.context\",\"names\":[\"Context\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:module:metagpt.logs", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_teaching_plan.py:names:['logger']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py", "target": "python"}, {"predicate": "has_function", "source": "metagpt/actions/project_management_an.py", "target": "metagpt/actions/project_management_an.py:main"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:main", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:main", "target": "{\"lineno\":124,\"end_lineno\":128,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"main\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REQUIRED_PYTHON_PACKAGES", "target": "{\"lineno\":13,\"end_lineno\":18,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_PYTHON_PACKAGES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REQUIRED_OTHER_LANGUAGE_PACKAGES", "target": "{\"lineno\":20,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"REQUIRED_OTHER_LANGUAGE_PACKAGES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:LOGIC_ANALYSIS", "target": "{\"lineno\":27,\"end_lineno\":36,\"type_name\":\"ast.Assign\",\"tokens\":[\"LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_LOGIC_ANALYSIS", "target": "{\"lineno\":38,\"end_lineno\":50,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_LOGIC_ANALYSIS\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:TASK_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:TASK_LIST", "target": "{\"lineno\":52,\"end_lineno\":57,\"type_name\":\"ast.Assign\",\"tokens\":[\"TASK_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_TASK_LIST", "target": "{\"lineno\":59,\"end_lineno\":66,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TASK_LIST\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:FULL_API_SPEC", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:FULL_API_SPEC", "target": "{\"lineno\":68,\"end_lineno\":74,\"type_name\":\"ast.Assign\",\"tokens\":[\"FULL_API_SPEC\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:SHARED_KNOWLEDGE", "target": "{\"lineno\":76,\"end_lineno\":81,\"type_name\":\"ast.Assign\",\"tokens\":[\"SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_SHARED_KNOWLEDGE", "target": "{\"lineno\":83,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_SHARED_KNOWLEDGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:ANYTHING_UNCLEAR_PM", "target": "{\"lineno\":93,\"end_lineno\":98,\"type_name\":\"ast.Assign\",\"tokens\":[\"ANYTHING_UNCLEAR_PM\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:NODES", "target": "{\"lineno\":100,\"end_lineno\":108,\"type_name\":\"ast.Assign\",\"tokens\":[\"NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_NODES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_NODES", "target": "{\"lineno\":110,\"end_lineno\":118,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_NODES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:PM_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:PM_NODE", "target": "{\"lineno\":120,\"end_lineno\":120,\"type_name\":\"ast.Assign\",\"tokens\":[\"PM_NODE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management_an.py:REFINED_PM_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:REFINED_PM_NODE", "target": "{\"lineno\":121,\"end_lineno\":121,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_PM_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:ast.Constant:\n@Time : 2023/12/14 15:28\n@Author : alexanderwu\n@File : project_management_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/14 15:28\\n@Author : alexanderwu\\n@File : project_management_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['List']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['ActionNode']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:module:metagpt.logs", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:names:['logger']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management_an.py:__name__:__main__", "target": "{\"lineno\":131,\"end_lineno\":132,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_update_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_run_new_tasks", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_merge", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:WriteTasks:_update_requirements", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:NEW_REQ_TEMPLATE", "target": "{\"lineno\":23,\"end_lineno\":29,\"type_name\":\"ast.Assign\",\"tokens\":[\"NEW_REQ_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:ast.Constant:\n@Time : 2023/5/11 19:12\n@Author : alexanderwu\n@File : project_management.py\n@Modified By: mashenquan, 2023/11/27.\n 1. Divide the context into three components: legacy code, unit test code, and console log.\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\n", "target": "{\"lineno\":3,\"end_lineno\":11,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:12\\n@Author : alexanderwu\\n@File : project_management.py\\n@Modified By: mashenquan, 2023/11/27.\\n 1. Divide the context into three components: legacy code, unit test code, and console log.\\n 2. Move the document storage operations related to WritePRD from the save operation of WriteDesign.\\n 3. According to the design in Section 2.2.3.5.4 of RFC 135, add incremental iteration functionality.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:json", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:typing", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Optional']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.action", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Action']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.action_output", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['ActionOutput']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_output\",\"names\":[\"ActionOutput\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.actions.project_management_an", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['PM_NODE', 'REFINED_PM_NODE']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.project_management_an\",\"names\":[\"PM_NODE\",\"REFINED_PM_NODE\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.const", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['PACKAGE_REQUIREMENTS_FILENAME']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"PACKAGE_REQUIREMENTS_FILENAME\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:module:metagpt.schema", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/project_management.py:names:['Document', 'Documents']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"Document\",\"Documents\"]}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__str__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:__repr__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_compile_f", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_aask_v1", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_req", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:ActionNode:_makeup_nodes_output_with_comment", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:dict_to_markdown", "target": "function"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:dict_to_markdown", "target": "{\"lineno\":115,\"end_lineno\":119,\"type_name\":\"ast.FunctionDef\",\"tokens\":[\"dict_to_markdown\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:TAG", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:TAG", "target": "{\"lineno\":37,\"end_lineno\":37,\"type_name\":\"ast.Assign\",\"tokens\":[\"TAG\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:LANGUAGE_CONSTRAINT", "target": "{\"lineno\":39,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"LANGUAGE_CONSTRAINT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:FORMAT_CONSTRAINT", "target": "{\"lineno\":40,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"FORMAT_CONSTRAINT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:SIMPLE_TEMPLATE", "target": "{\"lineno\":43,\"end_lineno\":60,\"type_name\":\"ast.Assign\",\"tokens\":[\"SIMPLE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:REVIEW_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:REVIEW_TEMPLATE", "target": "{\"lineno\":62,\"end_lineno\":90,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVIEW_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/action_node.py:REVISE_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:REVISE_TEMPLATE", "target": "{\"lineno\":92,\"end_lineno\":112,\"type_name\":\"ast.Assign\",\"tokens\":[\"REVISE_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:ast.Constant:\n@Time : 2023/12/11 18:45\n@Author : alexanderwu\n@File : action_node.py\n\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\n", "target": "{\"lineno\":3,\"end_lineno\":10,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/11 18:45\\n@Author : alexanderwu\\n@File : action_node.py\\n\\nNOTE: You should use typing.List instead of list to do type annotation. Because in the markdown extraction process,\\n we can use typing to extract the type of the node, but we cannot use built-in list to extract.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:json", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"json\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:enum", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['Enum']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:typing", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['Any', 'Dict', 'List', 'Optional', 'Tuple', 'Type', 'Union']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"Dict\",\"List\",\"Optional\",\"Tuple\",\"Type\",\"Union\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:pydantic", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['BaseModel', 'Field', 'create_model', 'model_validator']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\",\"create_model\",\"model_validator\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:tenacity", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['retry', 'stop_after_attempt', 'wait_random_exponential']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"tenacity\",\"names\":[\"retry\",\"stop_after_attempt\",\"wait_random_exponential\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.actions.action_outcls_registry", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['register_action_outcls']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_outcls_registry\",\"names\":[\"register_action_outcls\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.llm", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['BaseLLM']", "target": "{\"lineno\":19,\"end_lineno\":19,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.logs", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['logger']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.provider.postprocess.llm_output_postprocess", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['llm_output_postprocess']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.postprocess.llm_output_postprocess\",\"names\":[\"llm_output_postprocess\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.utils.common", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['OutputParser', 'general_after_log']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\",\"general_after_log\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:module:metagpt.utils.human_interaction", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:names:['HumanInteraction']", "target": "{\"lineno\":23,\"end_lineno\":23,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.human_interaction\",\"names\":[\"HumanInteraction\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/action_node.py:__name__:__main__", "target": "{\"lineno\":684,\"end_lineno\":693,\"type_name\":\"ast.If\",\"tokens\":[\"__name__\",\"__main__\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE", "target": "{\"lineno\":16,\"end_lineno\":109,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:CODE_PLAN_AND_CHANGE_CONTEXT", "target": "{\"lineno\":111,\"end_lineno\":126,\"type_name\":\"ast.Assign\",\"tokens\":[\"CODE_PLAN_AND_CHANGE_CONTEXT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:REFINED_TEMPLATE", "target": "{\"lineno\":128,\"end_lineno\":180,\"type_name\":\"ast.Assign\",\"tokens\":[\"REFINED_TEMPLATE\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:WRITE_CODE_PLAN_AND_CHANGE_NODE", "target": "{\"lineno\":182,\"end_lineno\":182,\"type_name\":\"ast.Assign\",\"tokens\":[\"WRITE_CODE_PLAN_AND_CHANGE_NODE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:ast.Constant:\n@Time : 2023/12/26\n@Author : mannaandpoem\n@File : write_code_plan_and_change_an.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/12/26\\n@Author : mannaandpoem\\n@File : write_code_plan_and_change_an.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:os", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['Action']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.actions.action_node", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['ActionNode']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action_node\",\"names\":[\"ActionNode\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:module:metagpt.schema", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/write_code_plan_and_change_an.py:names:['CodePlanAndChangeContext']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.schema\",\"names\":[\"CodePlanAndChangeContext\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:ast.Constant:\n@Time : 2023/5/11 19:31\n@Author : alexanderwu\n@File : design_api_review.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/11 19:31\\n@Author : alexanderwu\\n@File : design_api_review.py\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:module:typing", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:names:['Optional']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:module:metagpt.actions.action", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/design_api_review.py:names:['Action']", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions.action\",\"names\":[\"Action\"]}}"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_check_file_type", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_unzip", "target": "class_method"}, {"predicate": "is", "source": "metagpt/actions/invoice_ocr.py:InvoiceOCR:_ocr", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 18:10:20\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Actions of the invoice ocr assistant.\n", "target": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 18:10:20\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Actions of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:os", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Import\",\"tokens\":[\"os\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:zipfile", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.Import\",\"tokens\":[\"zipfile\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:datetime", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['datetime']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"datetime\",\"names\":[\"datetime\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:pathlib", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Path']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pathlib\",\"names\":[\"Path\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:typing", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Optional']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:pandas as pd", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.Import\",\"tokens\":[\"pandas as pd\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:paddleocr", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['PaddleOCR']", "target": "{\"lineno\":18,\"end_lineno\":18,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"paddleocr\",\"names\":[\"PaddleOCR\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.actions", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['Action']", "target": "{\"lineno\":20,\"end_lineno\":20,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.actions\",\"names\":[\"Action\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.const", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['INVOICE_OCR_TABLE_PATH']", "target": "{\"lineno\":21,\"end_lineno\":21,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.const\",\"names\":[\"INVOICE_OCR_TABLE_PATH\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.logs", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['logger']", "target": "{\"lineno\":22,\"end_lineno\":22,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.prompts.invoice_ocr", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['EXTRACT_OCR_MAIN_INFO_PROMPT', 'REPLY_OCR_QUESTION_PROMPT']", "target": "{\"lineno\":23,\"end_lineno\":26,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.prompts.invoice_ocr\",\"names\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\",\"REPLY_OCR_QUESTION_PROMPT\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.common", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['OutputParser']", "target": "{\"lineno\":27,\"end_lineno\":27,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"OutputParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:module:metagpt.utils.file", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/actions/invoice_ocr.py:names:['File']", "target": "{\"lineno\":28,\"end_lineno\":28,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.file\",\"names\":[\"File\"]}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/sales.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:SALES_ASSISTANT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:SALES_ASSISTANT", "target": "{\"lineno\":10,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES_ASSISTANT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:SALES", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:SALES", "target": "{\"lineno\":33,\"end_lineno\":55,\"type_name\":\"ast.Assign\",\"tokens\":[\"SALES\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/sales.py:conversation_stages", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:conversation_stages", "target": "{\"lineno\":57,\"end_lineno\":65,\"type_name\":\"ast.Assign\",\"tokens\":[\"conversation_stages\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/sales.py:ast.Constant:\n@Time : 2023/5/8 15:29\n@Author : alexanderwu\n@File : sales.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/8 15:29\\n@Author : alexanderwu\\n@File : sales.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/__init__.py", "target": "python"}, {"predicate": "has_page_info", "source": "metagpt/prompts/__init__.py:ast.Constant:\n@Time : 2023/5/30 09:51\n@Author : alexanderwu\n@File : __init__.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/5/30 09:51\\n@Author : alexanderwu\\n@File : __init__.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT", "target": "{\"lineno\":11,\"end_lineno\":21,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_2", "target": "{\"lineno\":28,\"end_lineno\":40,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_2\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_3", "target": "{\"lineno\":43,\"end_lineno\":54,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_3\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_4", "target": "{\"lineno\":57,\"end_lineno\":69,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_4\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:SUMMARIZE_PROMPT_5", "target": "{\"lineno\":72,\"end_lineno\":92,\"type_name\":\"ast.Assign\",\"tokens\":[\"SUMMARIZE_PROMPT_5\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/summarize.py:ast.Constant:\n@Time : 2023/6/19 23:07\n@Author : alexanderwu\n@File : summarize.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/19 23:07\\n@Author : alexanderwu\\n@File : summarize.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/metagpt_sample.py:METAGPT_SAMPLE", "target": "{\"lineno\":9,\"end_lineno\":39,\"type_name\":\"ast.Assign\",\"tokens\":[\"METAGPT_SAMPLE\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/metagpt_sample.py:ast.Constant:\n@Time : 2023/6/7 20:29\n@Author : alexanderwu\n@File : metagpt_sample.py\n", "target": "{\"lineno\":3,\"end_lineno\":7,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/6/7 20:29\\n@Author : alexanderwu\\n@File : metagpt_sample.py\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:COMMON_PROMPT", "target": "{\"lineno\":10,\"end_lineno\":13,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:DIRECTORY_PROMPT", "target": "{\"lineno\":15,\"end_lineno\":25,\"type_name\":\"ast.Assign\",\"tokens\":[\"DIRECTORY_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:CONTENT_PROMPT", "target": "{\"lineno\":27,\"end_lineno\":45,\"type_name\":\"ast.Assign\",\"tokens\":[\"CONTENT_PROMPT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/tutorial_assistant.py:ast.Constant:\n@Time : 2023/9/4 15:40:40\n@Author : Stitch-z\n@File : tutorial_assistant.py\n@Describe : Tutorial Assistant's prompt templates.\n", "target": "{\"lineno\":3,\"end_lineno\":8,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/4 15:40:40\\n@Author : Stitch-z\\n@File : tutorial_assistant.py\\n@Describe : Tutorial Assistant's prompt templates.\\n\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py", "target": "python"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:COMMON_PROMPT", "target": "{\"lineno\":11,\"end_lineno\":11,\"type_name\":\"ast.Assign\",\"tokens\":[\"COMMON_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:EXTRACT_OCR_MAIN_INFO_PROMPT", "target": "{\"lineno\":13,\"end_lineno\":27,\"type_name\":\"ast.Assign\",\"tokens\":[\"EXTRACT_OCR_MAIN_INFO_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:REPLY_OCR_QUESTION_PROMPT", "target": "{\"lineno\":29,\"end_lineno\":42,\"type_name\":\"ast.Assign\",\"tokens\":[\"REPLY_OCR_QUESTION_PROMPT\"],\"properties\":{}}"}, {"predicate": "is", "source": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:INVOICE_OCR_SUCCESS", "target": "{\"lineno\":44,\"end_lineno\":44,\"type_name\":\"ast.Assign\",\"tokens\":[\"INVOICE_OCR_SUCCESS\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/prompts/invoice_ocr.py:ast.Constant:\n@Time : 2023/9/21 16:30:25\n@Author : Stitch-z\n@File : invoice_ocr.py\n@Describe : Prompts of the invoice ocr assistant.\n", "target": "{\"lineno\":4,\"end_lineno\":9,\"type_name\":\"ast.Expr\",\"tokens\":[\"ast.Constant\",\"\\n@Time : 2023/9/21 16:30:25\\n@Author : Stitch-z\\n@File : invoice_ocr.py\\n@Describe : Prompts of the invoice ocr assistant.\\n\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:enum", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['Enum']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"enum\",\"names\":[\"Enum\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:pydantic", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['BaseModel', 'Field']", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:module:metagpt.strategy.base", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot_schema.py:names:['BaseEvaluator', 'BaseParser']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"BaseEvaluator\",\"BaseParser\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:ThoughtSolverBase:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:BFSSolver:_bfs_build", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:DFSSolver:_dfs", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:__init__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:TreeofThought:_initialize_solver", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/tot.py:OUTPUT_FORMAT", "target": "global_variable"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:OUTPUT_FORMAT", "target": "{\"lineno\":19,\"end_lineno\":30,\"type_name\":\"ast.Assign\",\"tokens\":[\"OUTPUT_FORMAT\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:__future__", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['annotations']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"__future__\",\"names\":[\"annotations\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:asyncio", "target": "{\"lineno\":7,\"end_lineno\":7,\"type_name\":\"ast.Import\",\"tokens\":[\"asyncio\"],\"properties\":{}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:typing", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['Any', 'List', 'Optional']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"Any\",\"List\",\"Optional\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:pydantic", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['BaseModel', 'ConfigDict', 'Field']", "target": "{\"lineno\":10,\"end_lineno\":10,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\",\"ConfigDict\",\"Field\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.llm", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['LLM']", "target": "{\"lineno\":12,\"end_lineno\":12,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.llm\",\"names\":[\"LLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.logs", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['logger']", "target": "{\"lineno\":13,\"end_lineno\":13,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.logs\",\"names\":[\"logger\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.provider.base_llm", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['BaseLLM']", "target": "{\"lineno\":14,\"end_lineno\":14,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.provider.base_llm\",\"names\":[\"BaseLLM\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.strategy.base", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['ThoughtNode', 'ThoughtTree']", "target": "{\"lineno\":15,\"end_lineno\":15,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.base\",\"names\":[\"ThoughtNode\",\"ThoughtTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.strategy.tot_schema", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['MethodSelect', 'Strategy', 'ThoughtSolverConfig']", "target": "{\"lineno\":16,\"end_lineno\":16,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.strategy.tot_schema\",\"names\":[\"MethodSelect\",\"Strategy\",\"ThoughtSolverConfig\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:module:metagpt.utils.common", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/tot.py:names:['CodeParser']", "target": "{\"lineno\":17,\"end_lineno\":17,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"metagpt.utils.common\",\"names\":[\"CodeParser\"]}}"}, {"predicate": "is", "source": "metagpt/strategy/__init__.py", "target": "source_code"}, {"predicate": "is", "source": "metagpt/strategy/__init__.py", "target": "python"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseParser:__call__", "target": "class_method"}, {"predicate": "is", "source": "metagpt/strategy/base.py:BaseEvaluator:__call__", "target": "class_method"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:abc", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['ABC']", "target": "{\"lineno\":5,\"end_lineno\":5,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"abc\",\"names\":[\"ABC\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:typing", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['List']", "target": "{\"lineno\":6,\"end_lineno\":6,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"typing\",\"names\":[\"List\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:anytree", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['Node', 'RenderTree']", "target": "{\"lineno\":8,\"end_lineno\":8,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"anytree\",\"names\":[\"Node\",\"RenderTree\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:module:pydantic", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}, {"predicate": "has_page_info", "source": "metagpt/strategy/base.py:names:['BaseModel']", "target": "{\"lineno\":9,\"end_lineno\":9,\"type_name\":\"ast.ImportFrom\",\"tokens\":[],\"properties\":{\"module\":\"pydantic\",\"names\":[\"BaseModel\"]}}"}]}
\ No newline at end of file
diff --git a/tests/data/incremental_dev_project/Gomoku.zip b/tests/data/incremental_dev_project/Gomoku.zip
index a110ccdd2..5877b8b81 100644
Binary files a/tests/data/incremental_dev_project/Gomoku.zip and b/tests/data/incremental_dev_project/Gomoku.zip differ
diff --git a/tests/data/incremental_dev_project/dice_simulator_new.zip b/tests/data/incremental_dev_project/dice_simulator_new.zip
index 377eaa4f5..f6956cadf 100644
Binary files a/tests/data/incremental_dev_project/dice_simulator_new.zip and b/tests/data/incremental_dev_project/dice_simulator_new.zip differ
diff --git a/tests/data/incremental_dev_project/mock.py b/tests/data/incremental_dev_project/mock.py
index f2eb71359..e9f5cb123 100644
--- a/tests/data/incremental_dev_project/mock.py
+++ b/tests/data/incremental_dev_project/mock.py
@@ -149,7 +149,7 @@ sequenceDiagram
The requirement analysis suggests the need for a clean and intuitive interface. Since we are using a command-line interface, we need to ensure that the text-based UI is as user-friendly as possible. Further clarification on whether a graphical user interface (GUI) is expected in the future would be helpful for planning the extendability of the game."""
-TASKS_SAMPLE = """
+TASK_SAMPLE = """
## Required Python packages
- random==2.2.1
@@ -345,7 +345,7 @@ REFINED_DESIGN_JSON = {
"Anything UNCLEAR": "",
}
-REFINED_TASKS_JSON = {
+REFINED_TASK_JSON = {
"Required Python packages": ["random==2.2.1", "Tkinter==8.6"],
"Required Other language third-party packages": ["No third-party dependencies required"],
"Refined Logic Analysis": [
@@ -373,7 +373,14 @@ REFINED_TASKS_JSON = {
}
CODE_PLAN_AND_CHANGE_SAMPLE = {
- "Code Plan And Change": '\n1. Plan for gui.py: Develop the GUI using Tkinter to replace the command-line interface. Start by setting up the main window and event handling. Then, add widgets for displaying the game status, results, and feedback. Implement interactive elements for difficulty selection and visualize the guess history. Finally, create animations for guess feedback and ensure responsiveness across different screen sizes.\n```python\nclass GUI:\n- pass\n+ def __init__(self):\n+ self.setup_window()\n+\n+ def setup_window(self):\n+ # Initialize the main window using Tkinter\n+ pass\n+\n+ def bind_events(self):\n+ # Bind button clicks and other events\n+ pass\n+\n+ def update_feedback(self, message: str):\n+ # Update the feedback label with the given message\n+ pass\n+\n+ def update_attempts(self, attempts: int):\n+ # Update the attempts label with the number of attempts\n+ pass\n+\n+ def update_history(self, history: list):\n+ # Update the history view with the list of past guesses\n+ pass\n+\n+ def show_difficulty_selector(self):\n+ # Show buttons or a dropdown for difficulty selection\n+ pass\n+\n+ def animate_guess_result(self, correct: bool):\n+ # Trigger an animation for correct or incorrect guesses\n+ pass\n```\n\n2. Plan for main.py: Modify the main.py to initialize the GUI and start the event-driven game loop. Ensure that the GUI is the primary interface for user interaction.\n```python\nclass Main:\n def main(self):\n- user_interface = UI()\n- user_interface.start()\n+ graphical_user_interface = GUI()\n+ graphical_user_interface.setup_window()\n+ graphical_user_interface.bind_events()\n+ # Start the Tkinter main loop\n+ pass\n\n if __name__ == "__main__":\n main_instance = Main()\n main_instance.main()\n```\n\n3. Plan for ui.py: Refactor ui.py to work with the new GUI class. Remove command-line interactions and delegate display and input tasks to the GUI.\n```python\nclass UI:\n- def display_message(self, message: str):\n- print(message)\n+\n+ def display_message(self, message: str):\n+ # This method will now pass the message to the GUI to display\n+ pass\n\n- def get_user_input(self, prompt: str) -> str:\n- return input(prompt)\n+\n+ def get_user_input(self, prompt: str) -> str:\n+ # This method will now trigger the GUI to get user input\n+ pass\n\n- def show_attempts(self, attempts: int):\n- print(f"Number of attempts: {attempts}")\n+\n+ def show_attempts(self, attempts: int):\n+ # This method will now update the GUI with the number of attempts\n+ pass\n\n- def show_history(self, history: list):\n- print("Guess history:")\n- for guess in history:\n- print(guess)\n+\n+ def show_history(self, history: list):\n+ # This method will now update the GUI with the guess history\n+ pass\n```\n\n4. Plan for game.py: Ensure game.py remains mostly unchanged as it contains the core game logic. However, make minor adjustments if necessary to integrate with the new GUI.\n```python\nclass Game:\n # No changes required for now\n```\n'
+ "Development Plan": [
+ "Develop the GUI using Tkinter to replace the command-line interface. Start by setting up the main window and event handling. Then, add widgets for displaying the game status, results, and feedback. Implement interactive elements for difficulty selection and visualize the guess history. Finally, create animations for guess feedback and ensure responsiveness across different screen sizes.",
+ "Modify the main.py to initialize the GUI and start the event-driven game loop. Ensure that the GUI is the primary interface for user interaction.",
+ ],
+ "Incremental Change": [
+ """```diff\nclass GUI:\n- pass\n+ def __init__(self):\n+ self.setup_window()\n+\n+ def setup_window(self):\n+ # Initialize the main window using Tkinter\n+ pass\n+\n+ def bind_events(self):\n+ # Bind button clicks and other events\n+ pass\n+\n+ def update_feedback(self, message: str):\n+ # Update the feedback label with the given message\n+ pass\n+\n+ def update_attempts(self, attempts: int):\n+ # Update the attempts label with the number of attempts\n+ pass\n+\n+ def update_history(self, history: list):\n+ # Update the history view with the list of past guesses\n+ pass\n+\n+ def show_difficulty_selector(self):\n+ # Show buttons or a dropdown for difficulty selection\n+ pass\n+\n+ def animate_guess_result(self, correct: bool):\n+ # Trigger an animation for correct or incorrect guesses\n+ pass\n```""",
+ """```diff\nclass Main:\n def main(self):\n- user_interface = UI()\n- user_interface.start()\n+ graphical_user_interface = GUI()\n+ graphical_user_interface.setup_window()\n+ graphical_user_interface.bind_events()\n+ # Start the Tkinter main loop\n+ pass\n\n if __name__ == "__main__":\n main_instance = Main()\n main_instance.main()\n```\n\n3. Plan for ui.py: Refactor ui.py to work with the new GUI class. Remove command-line interactions and delegate display and input tasks to the GUI.\n```python\nclass UI:\n- def display_message(self, message: str):\n- print(message)\n+\n+ def display_message(self, message: str):\n+ # This method will now pass the message to the GUI to display\n+ pass\n\n- def get_user_input(self, prompt: str) -> str:\n- return input(prompt)\n+\n+ def get_user_input(self, prompt: str) -> str:\n+ # This method will now trigger the GUI to get user input\n+ pass\n\n- def show_attempts(self, attempts: int):\n- print(f"Number of attempts: {attempts}")\n+\n+ def show_attempts(self, attempts: int):\n+ # This method will now update the GUI with the number of attempts\n+ pass\n\n- def show_history(self, history: list):\n- print("Guess history:")\n- for guess in history:\n- print(guess)\n+\n+ def show_history(self, history: list):\n+ # This method will now update the GUI with the guess history\n+ pass\n```\n\n4. Plan for game.py: Ensure game.py remains mostly unchanged as it contains the core game logic. However, make minor adjustments if necessary to integrate with the new GUI.\n```python\nclass Game:\n # No changes required for now\n```\n""",
+ ],
}
REFINED_CODE_INPUT_SAMPLE = """
diff --git a/tests/data/incremental_dev_project/number_guessing_game.zip b/tests/data/incremental_dev_project/number_guessing_game.zip
index 9d192c1e6..f5d983d6c 100644
Binary files a/tests/data/incremental_dev_project/number_guessing_game.zip and b/tests/data/incremental_dev_project/number_guessing_game.zip differ
diff --git a/tests/data/incremental_dev_project/pygame_2048.zip b/tests/data/incremental_dev_project/pygame_2048.zip
index d589a59b3..35cd74259 100644
Binary files a/tests/data/incremental_dev_project/pygame_2048.zip and b/tests/data/incremental_dev_project/pygame_2048.zip differ
diff --git a/tests/data/incremental_dev_project/simple_add_calculator.zip b/tests/data/incremental_dev_project/simple_add_calculator.zip
index 945e2af5d..57975c8f3 100644
Binary files a/tests/data/incremental_dev_project/simple_add_calculator.zip and b/tests/data/incremental_dev_project/simple_add_calculator.zip differ
diff --git a/tests/data/incremental_dev_project/snake_game.zip b/tests/data/incremental_dev_project/snake_game.zip
index 739c2a1d1..2c7b01b7c 100644
Binary files a/tests/data/incremental_dev_project/snake_game.zip and b/tests/data/incremental_dev_project/snake_game.zip differ
diff --git a/tests/data/incremental_dev_project/word_cloud.zip b/tests/data/incremental_dev_project/word_cloud.zip
index 01f83f053..a929fdeaf 100644
Binary files a/tests/data/incremental_dev_project/word_cloud.zip and b/tests/data/incremental_dev_project/word_cloud.zip differ
diff --git a/tests/data/mermaid_rsp_cache.json b/tests/data/mermaid_rsp_cache.json
new file mode 100644
index 000000000..14c717e65
--- /dev/null
+++ b/tests/data/mermaid_rsp_cache.json
@@ -0,0 +1,4 @@
+{
+ "aiohttp-get-https://mermaid.ink/svg/CmNsYXNzRGlhZ3JhbQogICAgY2xhc3MgTWFpbiB7CiAgICAgICAgLVNlYXJjaEVuZ2luZSBzZWFyY2hfZW5naW5lCiAgICAgICAgK21haW4oKSBzdHIKICAgIH0KICAgIGNsYXNzIFNlYXJjaEVuZ2luZSB7CiAgICAgICAgLUluZGV4IGluZGV4CiAgICAgICAgLVJhbmtpbmcgcmFua2luZwogICAgICAgIC1TdW1tYXJ5IHN1bW1hcnkKICAgICAgICArc2VhcmNoKHF1ZXJ5OiBzdHIpIHN0cgogICAgfQogICAgY2xhc3MgSW5kZXggewogICAgICAgIC1Lbm93bGVkZ2VCYXNlIGtub3dsZWRnZV9iYXNlCiAgICAgICAgK2NyZWF0ZV9pbmRleChkYXRhOiBkaWN0KQogICAgICAgICtxdWVyeV9pbmRleChxdWVyeTogc3RyKSBsaXN0CiAgICB9CiAgICBjbGFzcyBSYW5raW5nIHsKICAgICAgICArcmFua19yZXN1bHRzKHJlc3VsdHM6IGxpc3QpIGxpc3QKICAgIH0KICAgIGNsYXNzIFN1bW1hcnkgewogICAgICAgICtzdW1tYXJpemVfcmVzdWx0cyhyZXN1bHRzOiBsaXN0KSBzdHIKICAgIH0KICAgIGNsYXNzIEtub3dsZWRnZUJhc2UgewogICAgICAgICt1cGRhdGUoZGF0YTogZGljdCkKICAgICAgICArZmV0Y2hfZGF0YShxdWVyeTogc3RyKSBkaWN0CiAgICB9CiAgICBNYWluIC0tPiBTZWFyY2hFbmdpbmUKICAgIFNlYXJjaEVuZ2luZSAtLT4gSW5kZXgKICAgIFNlYXJjaEVuZ2luZSAtLT4gUmFua2luZwogICAgU2VhcmNoRW5naW5lIC0tPiBTdW1tYXJ5CiAgICBJbmRleCAtLT4gS25vd2xlZGdlQmFzZQo=-{}": "b'
Main
-SearchEngine search_engine
+main() : str
SearchEngine
-Index index
-Ranking ranking
-Summary summary
+search(query: str) : str
Index
-KnowledgeBase knowledge_base
+create_index(data: dict)
+query_index(query: str) : list
Ranking
+rank_results(results: list) : list
Summary
+summarize_results(results: list) : str
KnowledgeBase
+update(data: dict)
+fetch_data(query: str) : dict
'",
+ "aiohttp-get-https://mermaid.ink/img/CmNsYXNzRGlhZ3JhbQogICAgY2xhc3MgTWFpbiB7CiAgICAgICAgLVNlYXJjaEVuZ2luZSBzZWFyY2hfZW5naW5lCiAgICAgICAgK21haW4oKSBzdHIKICAgIH0KICAgIGNsYXNzIFNlYXJjaEVuZ2luZSB7CiAgICAgICAgLUluZGV4IGluZGV4CiAgICAgICAgLVJhbmtpbmcgcmFua2luZwogICAgICAgIC1TdW1tYXJ5IHN1bW1hcnkKICAgICAgICArc2VhcmNoKHF1ZXJ5OiBzdHIpIHN0cgogICAgfQogICAgY2xhc3MgSW5kZXggewogICAgICAgIC1Lbm93bGVkZ2VCYXNlIGtub3dsZWRnZV9iYXNlCiAgICAgICAgK2NyZWF0ZV9pbmRleChkYXRhOiBkaWN0KQogICAgICAgICtxdWVyeV9pbmRleChxdWVyeTogc3RyKSBsaXN0CiAgICB9CiAgICBjbGFzcyBSYW5raW5nIHsKICAgICAgICArcmFua19yZXN1bHRzKHJlc3VsdHM6IGxpc3QpIGxpc3QKICAgIH0KICAgIGNsYXNzIFN1bW1hcnkgewogICAgICAgICtzdW1tYXJpemVfcmVzdWx0cyhyZXN1bHRzOiBsaXN0KSBzdHIKICAgIH0KICAgIGNsYXNzIEtub3dsZWRnZUJhc2UgewogICAgICAgICt1cGRhdGUoZGF0YTogZGljdCkKICAgICAgICArZmV0Y2hfZGF0YShxdWVyeTogc3RyKSBkaWN0CiAgICB9CiAgICBNYWluIC0tPiBTZWFyY2hFbmdpbmUKICAgIFNlYXJjaEVuZ2luZSAtLT4gSW5kZXgKICAgIFNlYXJjaEVuZ2luZSAtLT4gUmFua2luZwogICAgU2VhcmNoRW5naW5lIC0tPiBTdW1tYXJ5CiAgICBJbmRleCAtLT4gS25vd2xlZGdlQmFzZQo=-{}": "b'\\xff\\xd8\\xff\\xe0\\x00\\x10JFIF\\x00\\x01\\x01\\x00\\x00\\x01\\x00\\x01\\x00\\x00\\xff\\xe2\\x01\\xd8ICC_PROFILE\\x00\\x01\\x01\\x00\\x00\\x01\\xc8\\x00\\x00\\x00\\x00\\x040\\x00\\x00mntrRGB XYZ \\x07\\xe0\\x00\\x01\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00acsp\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x00\\x00\\xf6\\xd6\\x00\\x01\\x00\\x00\\x00\\x00\\xd3-\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\tdesc\\x00\\x00\\x00\\xf0\\x00\\x00\\x00$rXYZ\\x00\\x00\\x01\\x14\\x00\\x00\\x00\\x14gXYZ\\x00\\x00\\x01(\\x00\\x00\\x00\\x14bXYZ\\x00\\x00\\x01<\\x00\\x00\\x00\\x14wtpt\\x00\\x00\\x01P\\x00\\x00\\x00\\x14rTRC\\x00\\x00\\x01d\\x00\\x00\\x00(gTRC\\x00\\x00\\x01d\\x00\\x00\\x00(bTRC\\x00\\x00\\x01d\\x00\\x00\\x00(cprt\\x00\\x00\\x01\\x8c\\x00\\x00\\x00q\\xf5X\\xe3\\x0f+_\\xc9#\\xfa\\x88}\\x0f\\x96\\xbf\\x92G\\xf5\\x10\\xfa\\x1fA\\xc4\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x1e+\\xcbx\\xf8\\xfd-\\x85\\xa4\\xb5nE\\x83\\x1d\\xc9/+\\xf1!\\t5(\\xff\\x00\\xf8#\\x1e\\xd1\\x92v\\xb5v\\xed\\x1d\\x9bv\\x84\\xc6;W>\\xea\\xe6m[\\x95\\xf1\\xe1VG\\\\\\x89\\x0e\\x1b\\xe6L\\xa8\\xd0\\x84\\x11\\xa8\\xf4K\\x8aQ\\x99\\x17\"I\\x9f\\xc43T\\xe5\\xa6d\\x86&\\xf7os\\x87\\xd9\\x07\\x1a\\xda\\xc4\\x88u\\xa9\\xc8,n\\x1a\\xa7\\x93^\\x94\\xac\\xd8i\\xd2}]\\xfe\\x89\\xdf\\xde\\xfen\\xda\\x96\\x9dTz\\x1a\\x91\\xae\\xbe\\xe3\\xdf6\\x9f\\xdaGg;\\x19\\xb3\\x81\\x031\\xc9\\x13M&s%!\\x8da\\xc8y\\x06\\xd9\\xabt\\x96\\xa5\\xb6\\xda\\x92\\x82\\xd4\\xb4\\xd5FC\\x8co\\xfb\\x0c\\xde\\xb3\\x92d\\xb8\\x9b0\\xde{\\x01\\xae\\xc3\\xdf\\xba\\xa9a\\xb6\\x8dM/ v\\x02!n\\xeb\\xeeR\\xc9Q\\xcd\\xed\\x0b\\x99\\x1a\\xd3\\xff\\x001\\x0fNm\\xebg>\\xc7\\xe0S\\xe4x\\xfe\\xd3\\xd1W;\\x03\\x89\\x12\\xa6\\xa7\\x17aQ\\x18v\\xd5L\\x1brSh\\xa5n\\xa9\\t\\xef\\x0b\\xef\\\\2I\\xa3\\xe2=y\\xf8#\\x17\\x16\\x98\\x9c\\xd1\\xaf\\xe5\\xfd[\\xb4:\\xba\\xe7oqKo\\xd8\\x16\\x03OiM&5\\xedl\\x9b)(u\\x99J\\x90\\xebD\\xd1\\xae;\\x91]B\\x0e:\\x92{\\xab5o/]\\xdd4\\xe6e\\xaf\\xc6%\\xdb\\x17c\\xb9\\xcd\\xe5ME.m\\x1eT\\xebW\\t\\x88ir$\\x96P\\xeb\\xa7\\xeek\\xbcq\\xb4\\xa0\\x9c?\\x89\\x06d\\xa3\\xd4\\xb9s!\\x89\\xec\\xbf\\r\\xca\\x13\\x9avF\\x97/\\x1b\\xba\\x8a\\xd5\\x0e+g\\x06\\xd5\\xc9U\\xef6P\\x1d(m\\xb4\\x84>jO\\xdc\\xcdF\\x83$\\x92\\xb4\\xde\\xf8\\xb5\\x15,wf\\x19ln\\xc2[ \\xa4V%t\\xd6G]\\x99\\xb1:Er\\xab^)q\\x90V\\xb2\\x14o-\\xbd\\xdd\\xf4$\\x9bQ+x\\xc8\\x8buDz\\xe8c{\\\\Mf\\xde}\\xa3\\xdd-\\x0e\\xfe\\x00\\x01\\xeed\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x109\\xbf\\xfb\\x84\\xbf<\\x87\\xff\\x00\\x92\\xd0\\x9e\\x109\\xbf\\xfb\\x84\\xbf<\\x87\\xff\\x00\\x92\\xd0\\xeb\\x83\\xfc\\x94\\xfc\\xe1\\xaa\\x7ft4\\xc0\\x00\\x1f\\t\\xb0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00Vv\\x9f\\xfd\\x1ae\\xbf\\xa2%\\xfe\\xe5b\\xcc+;O\\xfe\\x8d2\\xdf\\xd1\\x12\\xff\\x00r\\xb1\\xe8\\xf0\\xff\\x00\\xcdG\\xce>\\xab\\x1caSohX\\xf96\\x92\\xf8C\\xe2/\\xfd\\x97>\\xa8\\xfa\\xf5\\x85\\x8f\\xf8\\x87\\xec\\\\\\xfa\\xa2\\xc0\\xd7\\xf2H\\xfe\\xa2\\x1fC\\xeb\\xdf\\x0b\\xa6}c\\xd9\\xcfEw\\xd6\\x16?\\xe2\\x1f\\xb1s\\xea\\x87\\xac,\\x7f\\xc4?b\\xe7\\xd5\\x16 \\x0b\\xe1t\\xcf\\xac{&\\x8a\\xef\\xac,\\x7f\\xc4?b\\xe7\\xd5\\x0fXX\\xff\\x00\\x88~\\xc5\\xcf\\xaa,@\\x17\\xc2\\xe9\\x9fX\\xf64W}ac\\xfe!\\xfb\\x17>\\xa8z\\xc2\\xc7\\xfcC\\xf6.}Qb\\x00\\xbe\\x17L\\xfa\\xc7\\xb1\\xa2\\xbb\\xeb\\x0b\\x1f\\xf1\\x0f\\xd8\\xb9\\xf5C\\xd6\\x16?\\xe2\\x1f\\xb1s\\xea\\x8b\\x10\\x05\\xf0\\xbag\\xd6=\\x8d\\x15\\xdfXX\\xff\\x00\\x88~\\xc5\\xcf\\xaa\\x1e\\xb0\\xb1\\xff\\x00\\x10\\xfd\\x8b\\x9fTX\\x80/\\x85\\xd3>\\xb1\\xech\\xae\\xfa\\xc2\\xc7\\xfcC\\xf6.}P\\xf5\\x85\\x8f\\xf8\\x87\\xec\\\\\\xfa\\xa2\\xc4\\x01|.\\x99\\xf5\\x8fcEw\\xd6\\x16?\\xe2\\x1f\\xb1s\\xea\\x87\\xac,\\x7f\\xc4?b\\xe7\\xd5\\x16 \\x0b\\xe1t\\xcf\\xac{\\x1a+\\xbe\\xb0\\xb1\\xff\\x00\\x10\\xfd\\x8b\\x9fT=ac\\xfe!\\xfb\\x17>\\xa8\\xb1\\x00_\\x0b\\xa6}c\\xd8\\xd1]\\xf5\\x85\\x8f\\xf8\\x87\\xec\\\\\\xfa\\xa1\\xeb\\x0b\\x1f\\xf1\\x0f\\xd8\\xb9\\xf5E\\x88\\x02\\xf8]3\\xeb\\x1e\\xc6\\x8a\\xef\\xac,\\x7f\\xc4?b\\xe7\\xd5\\x0fXX\\xff\\x00\\x88~\\xc5\\xcf\\xaa,@\\x17\\xc2\\xe9\\x9fX\\xf64W}ac\\xfe!\\xfb\\x17>\\xa8z\\xc2\\xc7\\xfcC\\xf6.}Qb\\x00\\xbe\\x17L\\xfa\\xc7\\xb1\\xa2\\xbb\\xeb\\x0b\\x1f\\xf1\\x0f\\xd8\\xb9\\xf5C\\xd6\\x16?\\xe2\\x1f\\xb1s\\xea\\x8b\\x10\\x05\\xf0\\xbag\\xd6=\\x8d\\x15\\xdfXX\\xff\\x00\\x88~\\xc5\\xcf\\xaa\"r\\x8c\\xce\\x9a\\xce\\xb1\\xa8\\xb1\\xa6w\\xaf\\xb96!%\\x1d\\xd2\\xcb_\\xf6\\x86\\xcf\\xdee\\xa7\\xc4/\\x02\\x077\\xff\\x00p\\x97\\xe7\\x90\\xff\\x00\\xf2Z\\x1d0\\xa7\\x0biM\\xa9\\x9e1\\xf1\\xff\\x00MSk\\xc3L\\x00\\x01\\xf9\\xc6\\x80\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01Y\\xda\\x7f\\xf4i\\x96\\xfe\\x88\\x97\\xfb\\x95\\x8b0\\xac\\xed?\\xfa4\\xcb\\x7fDK\\xfd\\xca\\xc7\\xa3\\xc3\\xff\\x005\\x1f8\\xfa\\xacq\\x87\\x95\\xaf\\xe4\\x91\\xfdD\"s\\x0c\\xc6\\x97\\x00\\xc6\\xe7d\\x19\\x15\\x93\\x154\\xd0Q\\xdeH\\x97 \\xf4J\\x08\\xcc\\x88\\xbd\\xdc\\xcc\\xcc\\xcc\\x88\\x88\\xb533\"\"31,\\xd7\\xf2H\\xfe\\xa2\\x18\\xd6YM7\\xb4\\x96\\xcf.\\xa8l(\\xaf\\xf6o2$\\xe8\\xb2k\\xa7\\xdb5\\x19\\xd39\\x0c<\\x97\\x9au-\\xb6\\xea\\xd2\\xb4\\x12\\xdbI\\x1aVi3%|G\\xcc\\xbd\\xd5L\\xc4i\\xc5\\xc5z\\xd9\\xc6\\xd5\\xf1\\x8d\\xac\\xd7L\\x9b\\x8cNzk\\x10\\xdf\\xf4y\\x1e\\x91\\x06DE\\xb6\\xe6\\xe9+t\\xd0\\xf2\\x10\\xafr\\x88\\xf5\\xd3Nb\\xda8\\xf3i\\x9d\\xa2\\xb6\\x87W\\x8a\\xe4XD\\xf6++3\\xda\\xdb\\xeaJiwt\\xd2\\xd4\\xc4%\\xc4\\xb1Z\\xb7$!n6\\xe2\\xa2\\xac\\xd2\\xda\\xdb=\\xe4\\xb9\\xdd\\x9a\\xc9e\\xbd\\xc8{\\x1e\\x85\\xb4\\r\\x8ccy\\x95\\xa6ecs\\x17\\x08\\x91V\\xd4X\\xf0\\xeb\\xb2\\xe7n\\xee\\x13f\\xec\\x96\\xd9d\\xe3H\\x91\\x19\\xa3h\\x9c\\xefwL\\x94\\xa5%&D\\xa2\\xd0\\xb5\\x1c#\\x1b\\xfd\\xad\\x9dn\\x03\\x88\\x1a\\xc8\\xf6\\x83\\xb3\\xea\\r\\xbfc6\\xb6W5\\xeb\\x81\\x80\\xf1\\x05Zfd\\xce[\\xcc\\xaeyM\\xcbA\\xa9\\x13\\r\\xb6\\xd6\\x933i\\n\\xdd\\xd5D\\x85\\'T\\xabC\\x17,\\x96\\x05\\xe6+\\x8fl\\x9b\\x1ec:\\xc9\\x99\\x93\\xb4;(\\xb1\\xaf29Vn8\\xf3d\\x88N\\xbemE%\\x99\\xa2*\\x9eZI\\x04m\\xa4\\xb9~3\\xe6,c_\\xe1\\xf9{-\\x9d%\\x93\\xe6\\xb4\\xb8s\\xd4\\x8d\\\\L\\xf47.\\xacQU\\x00\\xbb\\xa5\\xaf\\xbe\\x94\\xb4-io\\xd9I\\xee\\xea\\x96\\xd6{\\xca\\xd1<\\xbd\\xfc\\xc8y\\xb6\\x89\\xb4\\\\\\x7fe8\\x94\\xcc\\x9b(\\x9c\\xaa\\xdaH\\x8ai\\x0fHDw_4\\xa9\\xc7\\x12\\xda\\x08\\x90\\xd2T\\xb5\\x19\\xadi.D~\\xf1\\xcf\\xbb|\\xd9jq\\xdam\\x93\\xe3\\xd1r\\xcc\\xa6Csv\\x8b\\rI\\xb1\\xb0\\xb5T\\xb9\\xd1R\\xa8R\\xc8\\xd2\\xd3\\xee\\x92\\x94\\x92\\xe4fFz\\x99\\x1a\\x8c\\xc8\\xcb\\x96\\x99\\xe6\\xd9]\\xbb\\xa4\\xd9\\xde\\xdb04d\\x167p\\xf1\\xfc\\x8b\\x16v\\x9e^C!sd1\\xe9Rb8m\\xb8\\xea\\x8c\\x96\\xe2\\x12\\xe1\\x19\\x96\\xa7\\xae\\x8a2\\xd4f\\xacZ\\xa9\\xbe\\x9f\\x96\\xb9\\x11wTl\\xe7oX^\\xd5\\xedd\\xd7cSld\\xcb\\x8c\\xcf\\xa48\\x99\\x94\\xb3\\xa0\\xa4\\x91\\xbcI\\xd4\\x97!\\x94$\\xcfU\\x17\"3?\\x8fM\\x08\\xc6\\x829\\xd7n\\xf6[J\\xc2\\xbb2g6W\\xb9=rrF\\x15\\x1dpl\\xb1x\\x8f@8\\xe89\\x0c\\xa7\\x998\\xeb\\x86j\\xe6\\xady\\xe8dz\\x19\\x1f=ky\\xa3\\xf9\\xa6\\xc9v\\x81\\x9ac\\x98U\\xfd\\xfeG.^\\xce\\xa6\\xdfB\\x8dy9v\\x0e\"\\xc9\\x89\\x08i.3\\xdek\\xbaj\\'\\xb5\\xee\\x93\\xa2\\rIN\\x89/p\\xd6\\xd2i\\xd2\\xa8K:\\xad\\xe7\\x91\\x1d\\x97\\x1dp\\xf7[BMJ=5\\xd0\\x8b\\x99\\x88\\xccK+\\xab\\xceq\\xaa\\xdc\\x82\\x92I\\xcd\\xa8\\xb1a2b\\xc86\\x96\\xdfx\\xda\\x8bR=\\xd5\\x91(\\xbf\\xa8\\xc8\\x8cr>\\xc9XVq\\x98L\\x7f\\x1b\\xcd\\xf3\\xdc\\x8f\\ns\\x04t\\xe7\\xdaY\\xda\\xceh\\xe3Z\\xb8\\xebF]\\xc2\\xd4i\\xddt\\xd0\\xda\\xcdIG&\\xf4-\\xdd\\xdd\\xf3#\\xfel\\x8aE\\xfe\\xd4\\xec\\xb6+Iq\\x99\\xe5,\\xc0\\xb1\\xd9\\x9b\\x96\\xd6\\x07\\x02\\xe1\\xe8\\xefM\\x92\\x99\\x11P\\x97\\x1cy*\\xdf\\xde\\xfb\\xaa\\x8fy*%\\x1f\\xb8\\xcc\\xd2fG#\\x1a\\xf6\\xd1l\\xec\\xf0\\x1c-\\x0fi[D\\xcc(\\xf6Y\\x80D\\xb5\\x99>M\\x8d\\x86I\\x16]\\x83\\x97\\xab\\xa8\\x97d\\x8a\\xd9Ji\\x86\\xbd1\\xb6\\x1dZW\\xdd\\x9e\\xfa\\xf7\\x12J_w\\xf7\\xc5\\xedk\\xd2\\x9d\\x9fq\\xbc\\xff\\x00\\x15\\xa5\\xbb\\x83\\x9c\\xccn[>\\x9f\\xdeT%v\\xcb\\xb4\\x93\\x1e1\\xb6\\x9d\\xe6\\x9e\\x92\\xb6\\x19S\\xa6N\\x12\\xcd&\\xa4\\x9a\\xb7TDfzj7F.y\\xb4G\\xe7\\x14\\x98\\xb3U\\x01\\xcc2%d\\x1b9\\xed\\x10\\xed\\x86wg\\x95H\\xa9\\xbe\\xb8S\\x18\\xac\\x9a\\xbbS:e\\x12\\xa2\\x997]&\\x11}\\xe3\\xbb\\xc8qIwt\\xf7\\xd4I\\xd5E\\xa1\\x91\\xd0v0\\xde\\xdb6\\xb3\\x8eb\\x9bJ\\xac\\xb4$J\\xb4\\x9c\\xdc\\xd9.\\xc8\\xcc\\x9f]y\\xc6)\\x06\\x97\\xe2|\\x16P\\xbb\\xa4n\\xa0\\x96\\xd9h\\xe6\\xf9)$\\xa3Y\\x9e\\xba\\xe7k\\xad\\xad\\xa9gn\\x00\\xe2\\\\\\xaf:\\xc9\\x8b>\\xad\\xcf\\xf1\\x19\\xd9Jqe\\xe7\\x91\\xb1\\xf9\\x12n2ST9\\x88T\\xd2\\x89!\\xa6+\\t\\xb3A4J5\\x92\\\\5\\xa5\\xc24k\\xa1\\x8b\\xd6*W3s]\\xba\\xe5\\x932<\\x8e\\xcd\\x18}\\xdb\\xaa\\xa7\\xc7\\xda\\xb5}\\xb8d\\xa6\\xebXx\\xd0\\xa6\\xd0\\xa2\\xef\\x10\\xb5(\\xbe\\xe6\\xadPG\\xa9\\x92H\\xd4\\xa34cD\\xcd\\xacY\\xd3\\x166\\x11\\xeak\\xe5N\\x94\\xe7u\\x163Jy\\xd743\\xddBH\\xcdG\\xa1s=\\x08\\x8f\\xdc<\\x98\\xbeK[\\x99\\xe3UY\\x054\\x9fL\\xa8\\xb5\\x8a\\xd4\\xd8r;\\xb5#\\xbde\\xc4\\x12\\xd0\\xad\\xd5\\x11(\\xb5J\\x88\\xf42#/\\x8c\\x88s\\xce\\xccp\\xa9\\x97\\x9b\\x0e\\x85\\xb4\\x8bl\\xfb\\'\\xc8n\\xee\\xf1\\x87l\\xa6Gr\\xd1GV\\xa5\\xbf\\x11J6\\x91\\x10\\x8b\\xbbB[5\\xe8\\x9d\\xd2%j\\x8ef|\\xc8R\\xf6\\'_m\\xb3Jn\\xccVP\\xb2\\xdc\\x82\\xc2&]\\\\\\xcdm\\x95E\\x8c\\xe3z\\t4uK\\x90\\xd7r\\xce\\x84\\x96M\\xb54\\x84\\x91\\xa0\\x88\\xd4\\x9dw\\x8dFfa\\xb5\\x9b\\xc6\\x9aO\\xfa,\\xec\\xd0\\x01\\xc3\\xd8B\\xb6\\xdd\\xb6\\x9aiY\\xee;a\\xe8W\\x0e\\\\\\xcan1I\\xcc\\x9fb\\x0c41-m\\xfa#\\xb5I\\x84\\xa6\\xcc\\xb7\\x11\\xbaf\\xa7\\rj\\xde\\xdf\\xdf-H\\x8bu\\xd7\\x92b-r\"\\xee\\xe1\\x01\\xc5\\x99\\xc4\\xbc\\x95\\xdc;\\xb4Nl\\xc6q\\x94B\\xb4\\xc2\\xb2\\x19\\'I\\x16=\\xa3\\x88\\x87\\x1d,\\xc4\\x88\\xfe\\xe2\\x98#\\xddu\\n5\\xa8\\x8d\\x0eo$\\x88\\xfd\\x92I\\x99\\x99\\xf86\\xfb\\x95\\xe47\\xf9^\\xd3\\xaa\\\\\\xc9\\xf3*<\\xa15u\\xea\\xc0\\xe91\\xa7\\xa44\\xcc\\xf2y\\x82\\xef\\x14\\xa2h\\xb7]3\\x90n6\\xa3p\\xfd\\x84\\xa4\\x8c\\xb4\\xd3xs\\x9ck|?5\\xf6[;%\\x19\\x85B\\xf3\\x17qT\\xcb3\\xben\\x02l\\xd7\\x17\\xba^\\x85\\x1dN)\\xb4\\xaf\\x7fM\\xcf\\xbfJ\\x8bw]yk\\xa6\\x9c\\xc4\\xc8\\xe3\\x9d\\xb3\\xdcdxFQ\\xb66\\xe1d\\x97\\xb1\\x16\\x8d\\x947p\\xdcr\\xb7\\x90\\xe3P\\xa7\\x13\\x92\\x197c\\x92\\x96}\\xd2\\xb4a\\x1e\\xd2t3=TfffbK\"\\xc8\\xb2-\\x86et\\xb6\\x15\\xd9\\r\\xf6S\\xf0\\xd6\\tws.\\xbe\\xf2z\\xe56\\xec\\xe8L\\xc7y\\xa7\\x1aA\\xf2gx\\xddZ\\r\\r\\x12Q\\xa1\\x96\\x89-\\x08]\\xb5\\xafx\\xfc\\xbd\\x92\\xce\\xb4\\x109\\xbf\\xfb\\x84\\xbf<\\x87\\xff\\x00\\x92\\xd0\\xe6\\x1d\\x87c{c\\xb9{g\\xb9\\xb2.NMm\\xa2X\\x9du\"vf\\xf5\\x8c{\\x08\\xaf5\\xbc\\xb2j\\x01\\xc2Cq\\xd6JRT\\x82idI\\xdd4\\x99\\xa8\\x8c\\xcct\\xf6o\\xfe\\xe1/\\xcf!\\xff\\x00\\xe4\\xb4=>\\x1a\\xbc\\xf5\\xd36\\xb6\\xb0\\xb1\\x16\\xaa\\x1a`\\x00\\x0f\\x8c\\xd8\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00+;O\\xfe\\x8d2\\xdf\\xd1\\x12\\xff\\x00r\\xb1f\\x15\\x9d\\xa7\\xff\\x00F\\x99o\\xe8\\x89\\x7f\\xb9X\\xf4x\\x7f\\xe6\\xa3\\xe7\\x1fU\\x8e0\\xf2\\xb5\\xfc\\x92?\\xa8\\x84\\x16w\\x81\\xd1m/\\x18\\x97\\x8e\\xe4\\x90~\\x12\\xa7\\x94hS\\xb1\\xfb\\xd5\\xb5\\xa9\\xa1d\\xb4\\x19)\\nJ\\x88\\xc9II\\x91\\x91\\x91\\xeaD?&\\xf3-\\x1bO\\xfe\\x87u\\xee/\\xfe\\xcf\\xf8\\x8f\\xae3\\xfa\\x0e\\xeb\\xa3\\xfe#\\xebN\\x05s\\xa4\\xc3\\x9eYWi;<\\xec\\xeb\\x1f\\xc2\\xae1(\\x98\\xa45P\\xdc\\x9e\\xf5\\x94yJ\\\\\\x95\\xccW-\\x14\\xeb\\xae\\xa9N-E\\xa1n\\x99\\xa8\\xcd:\\x16\\x9a\\x0f=Gf\\xdd\\x9c\\xd2c7\\xb8\\xfb\\x18\\xe9\\xbfUx\\xd3L\\xd85>t\\x99k}\\r\\x99\\x9bI\\xef\\x1eqKI \\xd4f\\x9d\\xd5\\x16\\xe9\\xf3-\\x0cZ\\xb8\\xcf\\xe8;\\xae\\x8f\\xf8\\x87\\x19\\xfd\\x07u\\xd1\\xff\\x00\\x11\\x9d\\xdaz~\\x85\\xaaT+\\xfb1\\xec\\xd6\\xb1\\x9b\\x96\\xd8\\xc7W\\xbduV\\xf5-\\x93\\xce\\xd9Ku\\xe9\\xb1\\x1d\\xd3}\\x0e\\xba\\xa7Mk=\\x08\\x89+Q\\x9a\\xd0Z\\x92T\\x923!h\\xcbv_\\x8bgXsx\\xad\\xf536tM\\xa5\\xa2j+\\xcaV\\xad\\x1bzwjC\\x84d\\xb4-:rZTJ/\\xc6?~3\\xfa\\x0e\\xeb\\xa3\\xfe!\\xc6\\x7fA\\xddt\\x7f\\xc4#\\xc3U\\x11h\\xa7\\xe8ZU\\xdaN\\xcf\\xb8\\x16?\\x06\\xb6$*WI\\xba\\xfbt_G[\\xf6\\x12\\x9ft\\xa7!\\xa3i/)\\xc7\\x1cR\\xdc2mF\\x9d\\x16f\\x9d4\\xe5\\xc8\\xb4\\xfdr\\xdd\\x82\\xe0\\xb9\\xcc|\\xa9\\x9b\\xaaEKo(\\\\7-\\xf7&\\xc8h\\xe4*.\\xe9\\xc7248\\x93l\\xd1\\xb8\\x9f\\xbc\\xdd\\xd7Nz\\x89\\xde3\\xfa\\x0e\\xeb\\xa3\\xfe!\\xc6\\x7fA\\xddt\\x7f\\xc47j\\xadl\\xbfB\\xd2\\xa3V\\xf6R\\xd9\\x9d]U\\xc5cT\\xd6/@\\xb7a\\x11\\xe6\\xb12\\xfe\\xc6J\\\\B\\\\K\\x89\"\\xef$+p\\xc9hI\\xea\\x9d\\x0f\\x96\\x9a\\xe8fB\\xc9\\x9el\\xae\\x9f/;\\xab?\\x83bI\\xc8\\xe6c\\xf2\\xf1\\xe6\\xde\\x9e\\xe3\\xc7\\x1dQ_\\xd1Ji\\xc6\\xd0\\xb4\\xea\\x83ZRfi\\xd1z\\x11\\x91(\\xb5\\x12\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\x9b\\xb4\\xc4Z)\\xfa\\x16\\x96\\x1d\\xb1\\x0e\\xce\\xf9\\x96\\x11\\x9c\\x15\\xa5\\xcc\\xe8\\x14\\xf4\\t\\xae~\\x14\\x8a:|\\x82\\xda\\xd1\\x9b\\x15\\xac\\xd1\\xba\\xe2\\xfd9fL\\xee\\x12U\\xbaM\\x91\\x9f\\xb6dj\\xd0l\\x18\\xae\\xc7q\\x0c*m\\x0c\\xbaZ\\x8fC\\x91EP\\xaa\\x1a\\xe5\\xfaK\\xcew\\x10T\\xb6\\xd6mh\\xa5\\x99+\\xdai\\xb3\\xdeV\\xaa\\xf6}\\xfc\\xcfY\\x1e3\\xfa\\x0e\\xeb\\xa3\\xfe!\\xc6\\x7fA\\xddt\\x7f\\xc4J|-T\\xc5\\xa2\\x9f\\xa1iV\\xed;;\\xec\\xf2\\xeb\\x12o\\x1a\\x99\\x8e!\\xda\\x96l^\\xb6e\\x05)\\xf4\\xbc\\xc4\\xb7][\\xae<\\xd3\\xe4\\xb2u\\xb5\\x1a\\xdcY\\xfb\\n-\\tZ\\x16\\x85\\xc8Y\\xb0l\\x06\\x8bf\\xd4\\x08\\xa5\\xc7`\\x9c\\n\\xf4\\xb8\\xb7\\xb7\\x14\\xfb\\x8f-n,\\xf5R\\xd4\\xe3\\x8aR\\xd4\\xa3?y\\xa8\\xcc\\xc7\\xcf\\x19\\xfd\\x07u\\xd1\\xff\\x00\\x10\\xe3?\\xa0\\xee\\xba?\\xe25\\x1e\\x1e\\xa8\\x9b\\xc5?B\\xd2\\xaf\\xb7\\xb0\\x0c\\t\\xad\\xa0q\\xaf\\xc0=\\xe6G\\xe9*\\x9a\\x99\\x0e\\xcc}\\xc6\\x91 \\xd1\\xb8o%\\x858m%\\xcd\\xd3\\xd3|\\x90J\\xfc\\xa3\\xcf[\\xd9\\xbfg4\\xd9\\xaf\\x15\\xc1\\xc6\\xd1\\x12\\xe7\\xd2\\xd5<\\x8d\\x99r\\x13\\x18\\xa4\\xa8\\x8c\\x94\\xf1F\\';\\x92p\\xf5=TH\\xd7\\x99\\xf3\\x16\\x8e3\\xfa\\x0e\\xeb\\xa3\\xfe!\\xc6\\x7fA\\xddt\\x7f\\xc47i\\xe9\\xfa\\x16\\xa9K\\xb4\\xec\\xb3\\xb2\\xfb\\xabi\\xf62\\xf1t\\xb9*l\\xcf\\x84\\x1c\\xdd\\x9d%\\r\\xb7+|\\x96r\\x1am.\\x12\\x19t\\xd4Df\\xe3d\\x95\\x1e\\xa7\\xa9\\x9e\\xa7\\xad\\xef\\x1e\\xc2\\xa9qY\\xf7\\xd3j\\xe1z,\\x9b\\xd9\\xbf\\x08X\\xaf\\xbdZ\\xfb\\xf7\\xfb\\xb45\\xbf\\xa2\\x8c\\xc9>\\xc3h-\\x13\\xa1r\\xd7ML\\xcc~\\x1cg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88G\\x86\\xaa5\\x8a~\\x85\\xa5O\\xa4\\xec\\xc3\\xb3-O\\x91\\x16\\xa7\\xcdG\\xee-O\\xe2\\x1a\\x9a\\xa2/\\x7f\\x82-\\xc09\\x9fk\\xfbj\\xda\\\\-\\x85E\\xc9\\xea\\xf1\\xba\\xba+I7\\xf5q\\x1b\\\\\\\\\\x81\\xa9\\xcc?\\r\\xe9\\x0c\\xa7}\\xb7\\x93\\x1c\\xc8\\xc9\\xc3_r~\\xc9\\x1aIJZL\\xf7RJ\\xb6\\xe4\\xbbq\\xcch3\\xfc\\x9b\\xd4\\x95\\xba\\x9d\\xc3#5\\x166\\xb4\\xfeG5\\xb3k\\x01\\xf9C[\\xeeDarZC\\x12T\\x84\\x9b\\xad6\\xbd\\xf4\\xa1zsI+B\\xde\"=K]\\x0b_\\xc4C\\xf5\\x1dP\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x109\\xbf\\xfb\\x84\\xbf<\\x87\\xff\\x00\\x92\\xd0\\x9e\\x109\\xbf\\xfb\\x84\\xbf<\\x87\\xff\\x00\\x92\\xd0\\xeb\\x83\\xfc\\x94\\xfc\\xe1\\xaa\\x7ft4\\xc0\\x00\\x1f\\t\\xb0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00Vv\\x9f\\xfd\\x1ae\\xbf\\xa2%\\xfe\\xe5b\\xcc+;O\\xfe\\x8d2\\xdf\\xd1\\x12\\xff\\x00r\\xb1\\xe8\\xf0\\xff\\x00\\xcdG\\xce>\\xab\\x1ca\\xe5k\\xf9$\\x7fQ\\n\\xe5N\\xce\\xe9is\\x0b\\x9c\\x924}\\xdb\\x0bFc0\\xf2M)\\xee\\xd0Lw\\x9b\\x86\\x82$\\xeaF}\\xea\\xb5=O]\\x0b\\xdd\\xa0\\x92k#\\xa9\\xee\\xd1\\xff\\x00\\xaaB\\xf7\\x17\\xff\\x00p\\x8f1\\xf5\\xc4u>)\\x0b\\xa8G\\x98\\xfas\\x87T\\xcf\\x07+K\\x06\\xaa\\xec\\xe9\\x92A\\xd9F\\r\\x8c96\\xa8\\xe7\\xd1gE\\x93\\xc9q.\\xb9\\xdd./\\xc2o\\xcb\\xdcA\\xf7z\\x9b\\x9d\\xdb\\xa9-\\x0c\\x89;\\xc4e\\xbd\\xa73\\xfcv\\x9d\\xd9\\xaf#\\xcdo\\xb6\\x8fe\\x16m:\\xd9\\xbd\\xb3\\xa0\\xb3\\x85]`\\xa7U\\x1eYW\\xa4\\xbb\\xc8\\xd3\\x12\\x94ri\\xc3/\\xf8w\\xfd\\xc4f_\\x10\\xdf\\xf8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc7\\x1d\\xda\\xf1kO\\xe4Yus\\xe4]\\x80gsa\\xed\\xb5vnb\\xb0\\xe4\\xed\\x07\\x19E\\\\X\\xb5*}\\x0cW\\xc8n<\\x86\\x10\\x95)M\\xea\\xe3fO!F\\xe1%&FFD\\xde\\x9a\\x18\\xba\\xec\\xebc\\xf78\\x8e\\xd2fd3$\\xc1r\\x13\\xd8\\x85U\\x02[a\\xc5\\x9b\\x85\"*\\x9f7\\x14dh\"\\xdc>\\xf5;\\xa7\\xae\\xa7\\xa1\\xeaE\\xf1\\xe9\\xdcGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1eb\\xc7\\x87\\x98\\x98\\x9bJj\\xe6Z\\x9d\\x8e\\xdblr\\x07f\\x89W\\x0eF\\x96\\xbc%\\xd94V\\xb2 \\xa9Ke\\t\\x9d\\x19L\\xa1\\xd2R\\x92\\x93\\xdc\\xef\\xd2\\xc2L\\xcc\\x8b\\xef\\xc6\\x85M@\\xeeC\\xda\\xe6\\xff\\x00+i\\'\\xf0m\\x06(\\xc68n\\x9f\\xb9r\\xdf\\x92r\\x9dA~T4\\x98\\xe6\\x7f\\xdf\\x10\\xd6\\x0f\"\\xa8Q\\x19\\x1d\\x9c##\\xf8\\x8eB<\\xc0\\xb2*\\x84\\xfb\\xac\\xe1\\x17\\xc7\\xcaB<\\xc4\\x8f\\x0f1\\xa4D\\xfeE\\x97T>m\\x1b2\\x91;\\x1a)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6\\x19*\\xe4ZR #\\xb8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc3%\\\\\\x8bJD\\x04w\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xc4u>)\\x0b\\xa8G\\x98d\\xab\\x91iH\\x80\\x8e\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0c\\x95r-)\\x11\\x03\\x9b\\xff\\x00\\xb8K\\xf3\\xc8\\x7f\\xf9-\\x0fo\\x11\\xd4\\xf8\\xa4.\\xa1\\x1eb\\x17/\\xbc\\xae\\x95L\\x86\\x99\\xb0\\x8a\\xf3\\xaa\\x99\\x13u\\r\\xbc\\x95(\\xff\\x00\\xda[\\xf7\\x11\\x18\\xeb\\x85EQ\\x89N\\x9f\\x18j\\x98\\x9b\\xc3Y\\x00\\x01\\xf9\\xf6\\xc0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\xf0\\xebH}\\xa5\\xb6\\xe2\\x12\\xe3k#J\\x90\\xa2\\xd4\\x94G\\xef#/\\x8c\\x87\\xd8\\x00\\x8b\\xe1Z_\\x07\\x81\\xd3#\\xc88V\\x97\\xc1\\xe0t\\xc8\\xf2\\x12\\x80:m+\\xea\\x95\\xbc\\xa2\\xf8V\\x97\\xc1\\xe0t\\xc8\\xf2\\x0e\\x15\\xa5\\xf0x\\x1d2<\\x84\\xa0\\x06\\xd2\\xbe\\xa9/(\\xbe\\x15\\xa5\\xf0x\\x1d2<\\x83\\x85i|\\x1e\\x07L\\x8f!(\\x01\\xb4\\xaf\\xaaK\\xca/\\x85i|\\x1e\\x07L\\x8f \\xe1Z_\\x07\\x81\\xd3#\\xc8J\\x00m+\\xea\\x92\\xf2\\x8b\\xe1Z_\\x07\\x81\\xd3#\\xc88V\\x97\\xc1\\xe0t\\xc8\\xf2\\x12\\x80\\x1bJ\\xfa\\xa4\\xbc\\xa2\\xf8V\\x97\\xc1\\xe0t\\xc8\\xf2\\x0e\\x15\\xa5\\xf0x\\x1d2<\\x84\\xa0\\x06\\xd2\\xbe\\xa9/(\\xbe\\x15\\xa5\\xf0x\\x1d2<\\x85\\x03o\\x98\\xedT]\\x8e\\xe5n\\xb3[\\x0e;\\xa8\\x86f\\x97Z\\x8e\\x92R}\\xa2\\xe6FE\\xa8\\xd4\\xc6{\\xda\\x08\\xb7\\xb61\\x96\\x16\\xee\\xfe\\xb0\\xcf\\xd9\"3\\xd7\\xdaO\\xe2\\r\\xa5}R^V\\xee\\x15\\xa5\\xf0x\\x1d2<\\x83\\x85i|\\x1e\\x07L\\x8f!(\\x01\\xb4\\xaf\\xaaK\\xca/\\x85i|\\x1e\\x07L\\x8f \\xe1Z_\\x07\\x81\\xd3#\\xc8J\\x00m+\\xea\\x92\\xf2\\x8b\\xe1Z_\\x07\\x81\\xd3#\\xc88V\\x97\\xc1\\xe0t\\xc8\\xf2\\x12\\x80\\x1bJ\\xfa\\xa4\\xbc\\xa2\\xf8V\\x97\\xc1\\xe0t\\xc8\\xf2\\x0e\\x15\\xa5\\xf0x\\x1d2<\\x84\\xa0\\x06\\xd2\\xbe\\xa9/(\\xbe\\x15\\xa5\\xf0x\\x1d2<\\x83\\x85i|\\x1e\\x07L\\x8f!(\\x01\\xb4\\xaf\\xaaK\\xca/\\x85i|\\x1e\\x07L\\x8f \\xe1Z_\\x07\\x81\\xd3#\\xc8J\\x00m+\\xea\\x92\\xf2\\x8b\\xe1Z_\\x07\\x81\\xd3#\\xc8}7\\x8c\\xd3\\xb4\\xe2V\\x8a\\xa8(ZL\\x94\\x95&2\\x08\\xc8\\xcb\\xdcdz\\t \\r\\xa5}R^@\\x00\\x1c\\xd0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x9ev\\x83\\xd0\\xb6/\\x96\\xeb\\xa1\\x97\\xa1\\x9e\\xbb\\xda\\xe9\\xf7\\xc9\\xfc\\\\\\xc6\\x863\\xde\\xd0)\\xdf\\xd8\\xceXZ\\x12\\xb5\\x86|\\x8f^~\\xd2\\x7f\\x170\\x1a\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0c\\xef\\xb4\\x06\\x8f\\xec[-&\\xcc\\x97\\xacE\\'\\xd9\\xe7\\xcc\\x96De\\xff\\x00\\xc8\\xd1\\x07\\x11\\xf6\\xc3^W\\xd9\\xd8\\xaer,q\\xb5\\xd9l\\xd70R\\x99\\xbc\\xa7>e[`\\xb35z[\\x06_\\xc9\\x93\\xa6Z\\xa8\\xb44\\xa9{\\xdb\\xc6Jq\\x06\\x90\\xed\\xb3Q$\\xc8\\x8c\\xc8\\x8dG\\xa1\\x11\\x9f\\xbc\\xc7\\xf4s\\xdfe\\xea,\\xaf:c\\xd6\\xee\\xd1\\xcc\\x8b#\\xbb`\\xd1KR\\x9dI\\x8aj\\xe5\\x19(\\x89\\xb4|K{u\\x0bR\\x8c\\xcdF\\x94\\xb6Fe\\xed$t \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcb\"\\xc6\\x9dwgx\\xeb\\xb7\\xb6\\xac\\x13V/0\\xdbQ\\xe4n!\\x08I\\x91\\x11\\x11h=|;\\'\\xe7\\x1d\\xe7Y\\xf6C\\x1b\\xfeu\\x90\\xfe\\x97\\x93\\xfed&\\x87\\xdf\\xae\\xb9\\xa6m\\x1fHJ\\xaa\\x98\\x94/\\x0e\\xc9\\xf9\\xc7y\\xd6}\\x90\\xe1\\xd9?8\\xef:\\xcf\\xb2&\\x80ciW\\xe4C9\\xaa\\xe6\\x85\\xe1\\xd9?8\\xef:\\xcf\\xb2\\x1c;\\'\\xe7\\x1d\\xe7Y\\xf6D\\xd0\\xaa\\xedGi\\xd4\\x1b\\x1d\\xc1\\xac\\xf2\\xdc\\x9aJ\\xe2\\xd4W\\xa5&\\xe1\\xb4\\xd9\\xb8\\xe2\\xd4\\xa5\\x12\\x10\\x84$\\xb9\\xa9JR\\x88\\x88\\xbf/=\\x0bS\\x12qf\"\\xf3\\xf4\\x835I\\x0e\\x1d\\x93\\xf3\\x8e\\xf3\\xac\\xfb!\\xc3\\xb2~q\\xdeu\\x9fdU\\xb6A\\xb6v6\\xbe\\xd5\\xa9\\xb7\\x88\\xe5\\xb8\\x83\\xd5\\xcah\\x97\\x1f,\\xaa8.:N\\x12\\x8d*l\\xb7\\x94J/d\\xf5\\xe7\\xcb\\x96\\xa3C\\x08\\xc5\\x9a\\xa2\\xf1\\xf4\\x835H^\\x1d\\x93\\xf3\\x8e\\xf3\\xac\\xfb!\\xc3\\xb2~q\\xdeu\\x9fdM\\x00\\xbbJ\\xbf\"\\x0c\\xd5sB\\xf0\\xec\\x9f\\x9cw\\x9dg\\xd9\\x1e\\x1b\\xdd\\x9fE\\xca*dU\\xdc\\xd8\\xd8\\xdb\\xd6I\"K\\xd0\\xa7:\\x87\\x99t\\x88\\xc8\\xc8\\x94\\x85 \\xc9\\\\\\xc8\\x8f\\x99{\\xc8\\x87\\xb3;\\xcbc`8FC\\x93\\xcce\\xd9\\x11)k\\xa4Y<\\xcb\\x1aw\\x8bC-)\\xc5%:\\x99\\x16\\xa6I2-L\\x8bQ\\xf8\\xec\\xe73gh\\xdb?\\xc6\\xb2\\xb8\\xd1\\x9c\\x87\\x1e\\xf2\\xb65\\x93q\\xdd25\\xb4\\x97\\x9aK\\x84\\x95\\x19r3\"V\\x9c\\x84\\xda\\xcd\\xed\\xf6\\x835OG\\x0e\\xc9\\xf9\\xc7y\\xd6}\\x90\\xe1\\xd9?8\\xef:\\xcf\\xb20J.\\xdc\\xd59\\\\\\x87\\x8a\\x8bd\\xdbT\\xbc\\x82\\xd4\\xd7 \\xaa\\xca\\xb7\\x1fi\\xf8\\x9d\\xe2\\x17\\xb8\\xbf\\xba%\\xf3-\\x08\\xcb\\x9f\\xc6_\\x88t\\xa8\\xcd8\\xf9\\xff\\x00l\\xf6\\\\\\xd5B\\x17\\x87d\\xfc\\xe3\\xbc\\xeb>\\xc8p\\xec\\x9f\\x9cw\\x9dg\\xd9\\x13B\\xaf;h1ag\\x94x\\xb1VZ\\xcav\\xda\\x1b\\xf3Z\\xb4\\x8d\\x10\\xd7\\x01\\x94\\xb7\\xbb\\xaa]x\\x8fD\\xa9[\\xc5\\xbaZ\\x1e\\xbf\\x8c\\xb5-w8\\xb3\\x1c~\\x90\\x99\\xaa{\\xb8vO\\xce;\\xce\\xb3\\xec\\x87\\x0e\\xc9\\xf9\\xc7y\\xd6}\\x914\\x01\\xb4\\xab\\xf2 \\xcdW4/\\x0e\\xc9\\xf9\\xc7y\\xd6}\\x90\\xe1\\xd9?8\\xef:\\xcf\\xb2&\\x806\\x95~D\\x19\\xaa\\xe6\\x85\\xe1\\xd9?8\\xef:\\xcf\\xb2\\x1c;\\'\\xe7\\x1d\\xe7Y\\xf6D\\xd0\\x06\\xd2\\xaf\\xc8\\x835\\\\\\xd0\\xbc;\\'\\xe7\\x1d\\xe7Y\\xf6G\\xeb\\x8c\\xa6en}\\x1a\\x12\\xad\\xa7\\xce\\x8a\\xfdd\\x97\\x94\\xd4\\xc7\\xbb\\xc2%\\xa1\\xd6\\t&\\\\\\x8bNKW\\xff\\x00\"TG\\xd6\\xff\\x00I\\xb5\\xdf\\xa1\\xe6~\\xfa(MSU5D\\xf2\\x9f\\x87\\x93T\\xd536\\x95\\xf8\\x00\\x07\\xc3P\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00f\\xf8\\xdf\\xf3\\xac\\x87\\xf4\\xbc\\x9f\\xf3!4!q\\xbf\\xe7Y\\x0f\\xe9y?\\xe6Bh}\\xccO\\xdc\\xc5\\\\@\\x00\\x1c\\xd9\\x06i\\xda?\\x1c\\xc1\\xf2\\xcd\\x8f^U\\xed\\x16\\xd5\\x14x\\xac\\x83e/Y\\xaaA0q]\\xef\\x91\\xdc\\xb8\\x97\\x0c\\x8c\\x92\\xa2ssC22\\xfc|\\xb5\\x1aX\\xf1]QV\\xe4\\xb5\\x8f\\xd6\\xdb\\xd7\\xc5\\xb5\\xae|\\xb7]\\x895\\x84\\xbc\\xd3\\x85\\xf8\\x94\\x85\\x11\\x91\\xff\\x00\\xdc\\x86j\\x8c\\xd10?\\xcf\\x9c\\xcf\\xb4.\\xd0\\xa1lcn\\x18}&m\\x1bh\\x9c+\\x06\\xbd\\xc8\\x1b@\\xa3\\xdd\\xef}\\x12C\\xc9C\\xc8um\\x1a\\x92o!\\xbd\\xff\\x00\\xba \\xf5\\xd1+Q\\x9e\\xa5\\xcb\\xf9\\xb1\\xeag\\xb6I};=\\xc5\\xed\\xf6}+\\x17\\xa7\\xc5\\xa7\\xd8d\\x18\\xd6\\x19\\x95\\xce\\xb3\\x93p\\xd2X52\\xf3\\x8d\\xbe\\xde\\x8d\\xb8N\\x92H\\xdc=\\xd3\"R\\xb9|G\\xdfX\\xf6\\x11\\x8eb4\\xeeT\\xd1PU\\xd2\\xd5\\xb9\\xa9\\xae\\rt6\\xe3\\xb0\\xadKC\\xd5\\x08I$\\xf5.G\\xc8x\\xf1\\x8d\\x97\\xe1\\xb8K\\x93\\x17\\x8e\\xe2TT+\\x98\\x93L\\x95VV\\xb3\\x18\\xdf#\\xf7\\x92\\xcd\\t-\\xe2\\xfe\\xb1\\xe4\\xd8Ux\\x99\\x9e\\r]\\xfezvt\\x9a\\xc6-\\xda\\x13\\t*)8\\x9dMvg\\x8a\\xd8J\\x99A\\x89\\xda\\xcb\\x9b\\xdd\\x11G7\\x99)\\x86\\xfb\\xab#\\x90[\\xa6Z\\xa4\\x92~\\xca\\xcb\\x9f\\xbc\\xec\\x9b\\x13\\xd9\\xe4]\\x9d\\x7f\\xf4\\xfb\\x99\\xb5,6\\xb9\\xdfY\\x8fc\\x93\\x90WIu\\xc7$2\\xc1\\xcaQ/\\xba#3J\\t\\r\\xb7\\xbc[\\xa4FF\\x93?\\x8c\\xf5\\xee\\n\\x9d\\x90`t\\x0f0\\xf5f\\x13\\x8e\\xd7;\\x1d\\xd5\\xbe\\xcb\\x91*XiM\\xb8\\xb4\\xee-i4\\xa0\\xb4R\\x92f\\x932\\xe6dz\\x1f!9C\\x8eT\\xe2\\xb4\\xd1\\xea)j\\xe1S\\xd4\\xc7I\\xa5\\x98\\x10#\\xa1\\x86\\x1a#33$\\xb6\\x82$\\x91\\x19\\x99\\x9f\"\\xf7\\x99\\x85\\x1e\\x1e\\xdcg\\x9f\\xfd^\\xde\\xc6g\\x17\\xd0\\xe2\\x1b\\x0c\\xa4\\xec\\xf1\\x9c\\xda\\xe0\\x17\\xb0m\\xb3[-\\x9cY\\xb9`\\xeao\\x1c\\x952RN&\\xaf:\\xfb\\nu[\\xab\\'\\r$fi#I\\xa8\\xd3\\xc8\\xb9\\n\\xd6\\xcc\\xf6qK\\xb1\\xf9\\xfd\\x92\\xf2\\xacQ3+.2\\xf8\\xadE\\xbes\\xd3\\x9eq\\x16\\r\\xb9^\\x977\\\\B\\xd4i\\xd1*?d\\x92DI\\xd0\\xb4/d\\xb4\\xed\\x8a\\xcd\\x8f`T\\xaa\\xb3:\\xfc#\\x1c\\x80v\\x8c\\xae<\\xf3\\x8dS\\x1d\\xbfKie\\xa2\\xdbwu\\x05\\xbe\\x95\\x11\\xf3%jG\\xf1\\x89.\\x05\\xc6\\xfb\\xaa6\\xf8z\\xab\\xbb\\xa1\\xd3\\xe0\\x94z\\x13ZWh\\x8d\\xc2\\xf4r\\xdd\\xfb\\x96\\x89-\\xd2\\xdc\\xd3\\x97/p\\xbb\\x0e\\x13\\xa6\\x9e\\xe5\\xdc5\\xd8\\xaf%\\xe1\\xe6\\\\~\\xc7oTx\\xdd#y%\\x99;\\x80\\xcef\\xbd\\xb7_5<\\xb4\\x92\\xbb\\xf7\\x14O\\xa7yF\\x95\\x16\\x85\\xf1h\\\\\\x8cx\\xf2\\xbd\\x95c\\xb9\\x9b\\xbd\\xaf2{H\\xd2\\x1d\\xbd\\xc6e\\xbf>\\x9a[S\\x1eh\\xe0\\xbe\\xdc\\x02t\\x9cm(Q$\\x94jm\\x1a\\xabML\\x92E\\xee\\x1d\\x96}\\x9dvP\\xa9\\xc74\\xf6c\\x86\\x9c\\xc3s\\xbe9\\x07A\\x13\\xbc\\xdf\\xd7]\\xfd\\xee\\xef]\\xedy\\xeb\\xef\\xd4Y\\xb8\\x17\\x1b\\xee\\xaf\\x1a\\xe1\\xea\\xae\\xee\\xf7_\\x85\\x91\\xe8Mic\\xaa7\\x0f\\xd2\\x0bw\\xee\\xba\\xa7\\xd9=\\xfdyr\\xf7\\t\\x18\\x13\\x96)\\xab\\xe1\\xecf\\xd6\\xef\\xf3\\x7fk\\xb2g\\xed//\\xc6\\x91{\\t\\x9c\\xf6\\xca\\xd7e\\xf5\\xb60Z\\x9d\\x92\\x95+t\\x13^A\\x11\\xcd58\\xb46\\xea\\x94\\xe1\\xefh\\x935\\x9e\\x9a\\x19hD4\\xdc[e\\xb1vY\\xb7\\xfd\\x87W\\x9aa=r\\x9d\\x9cM\\x8ba:\\x01\\xea\\xd4\\x952\\xc2R\\x95$\\xfd\\xc6E\\xaa\\xb4Q\\x11ok\\xa9\\xfb\\xc6\\xc7\\xb7^\\xc8\\x8b\\xda\\xdd\\xdd\\\\\\x9a\\x8c\\x8a\\x8f\\x1a\\xab\\x81Z\\x8a\\xa6\\xaa\\xe6\\xe1U\\xb6\\xcd\\xb0\\xcaM[\\xbe\\x8e\\xa7\\x92JgB=\\x08\\x92{\\xa5\\xa1hD4\\x9d\\x97l+\\x15\\xd9n\\x1f\\x8bRF\\x82\\xcd\\xb4\\x9cv\\x02\\xeb\\xe2[\\xd90\\xdb\\x93\\x12\\xd2\\xcc\\xcd\\xd4\\x93\\x9b\\xba\\xa5*3=R\\x9d\\x0bM\\x0b\\xe2\\x18\\xa7\\x06\\xac\\xf33\\x1f\\xf6\\xb7p\\x86\\xccpj\\x9c\\x0f\\xb3\\xe7f\\xcd\\xa6\\xd1\\xa2T\\x1c\\xd6\\xc72\\xaf\\xab\\x9df\\x99\\x8f)Ra\\xbb%\\xf6\\x97\\x19I5\\x1a{\\xbd\\xc6\\xd0\\x92I\\x11i\\xa7/y\\xeb\\x0f\\x95S\\xdcmci{^\\x93\\x90\\xe4XE\\x1ee[\\x92H\\xaf\\xa8\\x9d\\x96eS\\xaa\\xeci\\xd8B\\x88\\xa2*\\x13- \\xdbSfFFJ-Mfg\\xa9s#?\\xf4\\xa1\\xbd\\x9cbMQ\\xd5\\xd2\\xa3\\x17\\xa5E=T\\x84K\\xaf\\xafM{%\\x1e\\x1b\\xc9Q\\xa9\\x0e\\xb2\\xde\\xee\\xebk%)FJI\\x11\\x91\\x99\\x9e\\xbc\\xc7\\xe5{\\xb2\\xdc/(\\xbcb\\xea\\xe7\\x11\\xa1\\xb7\\xb8cBf\\xc2uc/HoOv\\xeb\\x8aI\\xa8\\xb4\\xf8\\xb41wi\\xb4E\\xff\\x00,fHa\\xd1m\\xe0\\xe24q\\xb2\\t,\\xcd\\xbef\\x0b\\r\\xd8I\\x8f\\xafv\\xec\\x92m$\\xea\\xd1\\xa9\\x11\\xee\\x9a\\xc9FZ\\x91r?q\\tp\\x01\\xef\\x8d\\x18\\x00\\x00\\x00G\\xd6\\xff\\x00I\\xb5\\xdf\\xa1\\xe6~\\xfa(\\x90\\x11\\xf5\\xbf\\xd2mw\\xe8y\\x9f\\xbe\\x8a5\\x1c*\\xf9O\\xd1\\xba8\\xaf\\xc0\\x00>+@\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xc7\\xeb\\xb1\\x1a\\x9b\\x8bL\\x8aL\\xb8\\x9d\\xf3\\xc7m \\x8d]\\xea\\xd3\\xc8\\x8c\\xb4\\xe4FD$=^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fXz1\\xbf\\xe7Y\\x0f\\xe9y?\\xe6Bh~\\x8a\\xbclH\\x9bES\\xf0\\xf8\\xf9%UM\\xf8\\xab\\xbe\\xafq\\xff\\x00\\x90~\\xd9\\xcf\\xac\\x1e\\xafq\\xff\\x00\\x90~\\xd9\\xcf\\xac,@1\\xb7\\xc5\\xeb\\x9fYc4\\xf3W}^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fX=^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fXX\\x806\\xf8\\xbds\\xeb&i\\xe6\\xae\\xfa\\xbd\\xc7\\xfeA\\xfbg>\\xb0z\\xbd\\xc7\\xfeA\\xfbg>\\xb0\\xb1\\x00m\\xf1z\\xe7\\xd6L\\xd3\\xcd]\\xf5{\\x8f\\xfc\\x83\\xf6\\xce}`\\xf5{\\x8f\\xfc\\x83\\xf6\\xce}ab\\x00\\xdb\\xe2\\xf5\\xcf\\xac\\x99\\xa7\\x9a\\xbb\\xea\\xf7\\x1f\\xf9\\x07\\xed\\x9c\\xfa\\xc1\\xea\\xf7\\x1f\\xf9\\x07\\xed\\x9c\\xfa\\xc2\\xc4\\x01\\xb7\\xc5\\xeb\\x9fY3O5w\\xd5\\xee?\\xf2\\x0f\\xdb9\\xf5\\x83\\xd5\\xee?\\xf2\\x0f\\xdb9\\xf5\\x85\\x88\\x03o\\x8b\\xd7>\\xb2f\\x9ej\\xef\\xab\\xdc\\x7f\\xe4\\x1f\\xb6s\\xeb\\x07\\xab\\xdc\\x7f\\xe4\\x1f\\xb6s\\xeb\\x0b\\x10\\x06\\xdf\\x17\\xae}d\\xcd<\\xd5\\xdfW\\xb8\\xff\\x00\\xc8?l\\xe7\\xd6\\x0fW\\xb8\\xff\\x00\\xc8?l\\xe7\\xd6\\x16 \\r\\xbe/\\\\\\xfa\\xc9\\x9ay\\xab\\xbe\\xafq\\xff\\x00\\x90~\\xd9\\xcf\\xac\\x1e\\xafq\\xff\\x00\\x90~\\xd9\\xcf\\xac,@\\x1b|^\\xb9\\xf5\\x934\\xf3W}^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fX=^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fXX\\x806\\xf8\\xbds\\xeb&i\\xe6\\xae\\xfa\\xbd\\xc7\\xfeA\\xfbg>\\xb0\\xfe\\xe2\\xd8\\xfd}\\x0e\\xd3a\\x94\\x18\\xfd\\xc7{Q/\\x7f\\xdbR\\xb5\\xd1\\xe8\\xda{\\xcc\\xff\\x00\\x19\\x8b\\x08\\x8f\\xad\\xfe\\x93k\\xbfC\\xcc\\xfd\\xf4P\\x9c\\\\J\\xa9\\xaa*\\xaaf-?\\x1f&\\xe9\\x99\\x99\\xe2\\xbf\\x00\\x00\\xf8\\n\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0c\\xdf\\x1b\\xfeu\\x90\\xfe\\x97\\x93\\xfed<\\xf2\\xf6\\x8f\\x8a@\\xcc\\xa2b2r:\\xb62\\x99m\\xf7\\xb1\\xe9\\\\\\x96\\x84\\xcby\\x1a)[\\xc9h\\xcfx\\xcbD,\\xf5\"\\xff\\x00\\x84\\xff\\x00\\x10\\xf4c\\x7f\\xce\\xb2\\x1f\\xd2\\xf2\\x7f\\xcc\\x84\\x8a\\xea\\xe199\\x13W\\x11\\x85LAn\\xa6B\\x9aI\\xb8\\x92\\xe7\\xc8\\x95\\xa6\\xa5\\xef?\\xfeG\\xdb\\xc5\\xbem<\\x98\\xab\\x8c\\xb9\\x03e;G\\xc9\\xb0m\\x9db\\xb5x\\xb4j\\xa7\\xe7d\\xfbF\\xbf\\xa9Z\\xed\\xc9\\xd3i\\x94\\xf7\\xf3\\x9d\\'\\x0b\\xbb234\\xa9\\xa4\\x9e\\xef\\xfcE\\xaauN\\xbb\\xe9\\xba\\xca\\xed)\\x96ct\\xf9E\\r\\xa5E=\\xa6\\xd1k\\xf2\\x98X\\xa5r`\\x9b\\xb1\\xeb\\xa6\\xbd1\\x86\\xdf\\x8e\\xf2\\xc9jZ\\xdaJ[Z\\xd4\\xb4\\xef(\\xfe\\xe6dG\\xedr\\xb1c\\xbd\\x99~\\x00\\x8d\\x875\\xc4\\x9d\\xff\\x00\\x0fe\\xd6\\x19V\\xbe\\x83\\xbb\\xe9\\x1e\\x95\\xe9_p\\xfeP\\xf7w}+\\xef\\xf9\\xeb\\xb9\\xf7\\xa5\\xaf/\\xe6_\\xd9\\x81\\xac\\xb2\\xc39\\xb1NM\"\\xb2\\xd6\\xf6\\xf2\\xb7\"\\xab\\x9b\\x16*Mu\\x13!Fi\\x96\\xd5\\xa2\\x94ix\\x8f\\xbb322In\\xb8i\\xff\\x00\\xa8x\"\\x9cH\\xa7O\\xcd=\\xcd\\x19<\\xed\\xa7d\\xfb\\x13\\xda\\xf6\\xd5\\xf3\\r\\xa05OomW\\x85S\\x9b,\\xe3\\x8d>\\xcb\\x12M\\xc9\\xd2[e\\x06\\x97\\r\\xc5\\xa4\\xcd\\xd77L\\xc8\\xd5\\xcbC\"\\xd7\\xd9\\x17=\\x9d\\xed\\xe7h\\xf9fVx\\xd3\\xf5\\x95\\xf2\\xa4X\\xd6\\xcaz\\x15\\xcb8\\xb5\\xd5|:\\xd9m\\xa4\\x8d\\xb6\\xa5\\x14\\xc4#\\xbdmz\\x9e\\x8amhV\\xa82\\xdd-\\xe2\\x12\\xaf\\xf6U\\x9b\\x99I\\xcd_\\xda\\x16k\\xc5\\x0ee\\x14Qi\\x1d:\\xfa\\xa4\\xd6\\x9c_G}\\xc7\\x9by\\xad\\x1ds\\xda%\\xb8J\"V\\xba):\\xeadd\\x92\\xb6\\xe3{<\\xdauUE\\xb4kM\\xab3s1\\xda\\xe5C\\xae\\x92x\\xdbL\\x94W\\x8fM\\xd9N\\xa5.\\x99\\xbc\\xe1i\\xee%!\\x07\\xa9\\xfb!M8\\x91>_\\xef\\xe6h\\xaf\\xec/nyN\\xdar7\\xa3\\x9e>\\xc5\\x05n8\\xc2\\xeb\\xb2s\\x96\\xda\\xd4\\xef\\xc3iV\\x8b\\x8b\\x14\\xc9{\\xbd\\xd3d[\\xe6\\xe2\\x89[\\xc4\\xebdZ\\x1e\\xf1\\x8fV\\xdclfA\\xda\\xd6\\xc5Yr\\x15T\\xea\\x89y\\x03\\xac\\xff\\x00\\xb56\\xff\\x00\\xa5\\xc6\\x92P\\xa4\\xad/4\\xb4:\\x94i\\xb8\\x95\\xa4\\xd2\\xb4,\\x8f\\x7f^FD?]\\x96\\xf6k\\x87\\xb1\\x9c\\x9e\\xb6\\xcf\\x15\\xbbz47+}\\x0f!\\x85)\\x93x\\xee\\xe4\\x91\\x9a\\xd19K\\xdf.\\xeeF\\xfa\\xdc\\xdeV\\x8a%\\xa5{\\xba\\x16\\xeaL\\xae\\x1b@\\xd9\\xa7\\x1dd\\xd8\\x1d\\xbf\\xc2>\\x83\\xc2\\xd6\\xea\\xb5\\xee{\\x8e\\xf3\\xd2\\xb5\\x8c\\xf3\\x1d\\xde\\xbb\\xc5\\xb9\\xfc\\xb6\\xf6\\xf6\\x8a\\xfb\\xdd4\\xe7\\xa9t\\x8ak\\x9a-W\\x14\\xd2\\xecG\\x1f\\xed\\x19\\xb4g\\xf1lo8\\xb4\\x81\\x8cp\\x95\\x86Vx\\xcc\\x88Q\\x1a\\x90SR\\x85X9\\t\\x12R\\xe2\\x9c4\\x16\\x8bJL\\xda\\xddV\\xa4Fd\\xb2\\xd7u5N\\xd2\\x9bL\\xcf6\\xa3\\xb1\\x1d\\xb5\\xc9\\xc7\\xe2c\\xd0\\xb6}G\\xe9\\xb4n\\xaa\\xc0\\x9f]\\x8c\\xf7\\x182D\\x87ZR\\x14M\\xb4\\x84\\xafy)%%F\\xad\\xc334\\x91\\x90\\xd8c\\xf6i\\xf4}\\x90S\\xe0\\xbcG\\xbd\\xf0~L\\x9c\\x8b\\xd3\\xfd\\x07N\\xf3KEO\\xee{\\xbe\\xf3\\x97\\xdfw{\\xfb\\xc7\\xee\\xde\\xdd\\xff\\x00\\x84Ws\\xae\\xc9\\xb7\\xb7\\xf5[A\\xc7\\xb1\\xed\\xa4+\\x1d\\xc3\\xb3G\\xe4N\\x9bN\\xfd#sW\\x1eS\\xfa\\x1b\\xebe\\xe3u\\x06\\x94-E\\xbch2=\\x0c\\xd5\\xba\\xa4\\xeb\\xa8\\xe5U8\\x93M\\xbc\\xbb\\xd9tFg\\xdd\\xa7\\xf28\\x19\\xed\\xf6-\\x88E\\x86\\x84cL\\xc7j[\\xf3\\xf1\\xeb{OL\\x92\\xe3\\t{\\xbaB\\xa0\\xb6\\xa4\\xb0IJ\\xd0F\\xb5\\x9a\\x8c\\xcdG\\xa24-O\\xdd\\x94\\xf6\\x9f\\xcb\\xb1\\n\\x9cB\\xf2n\\x0e\\xf1\\xc2\\xcc\\xea\\xda\\x8dMPl\\xb8\\xd4\\xe8\\xb9\\x02\\xfe\\xf2\\x0c\\xa3Y\\x91\\x13N\\x11\\x99\\x93\\x9b\\xa94\\x93+\\xd4\\x8fR\\x16\\xcb\\xcd\\x82dPs\\xdb\\xbc\\xa7\\x01\\xcf\\xd5\\x86H\\xc8\\x18\\x8e\\xdd\\xccY\\x15\\r\\xd8\\xb2\\xfb\\xac\\xb7\\xdd\\xb7!\\xa2R\\xd3\\xdd;\\xb8D\\x93\\xfb\\xe4\\xabu&i3!\\xfd\\xda/f\\x98\\x9b^\\xbf\\\\\\xcc\\xc6\\xfaE\\xa4(\\x95\\x05\\x02\\x9e+\\x0c\\x14u\\xd6\\xccQ\\x92\\x9c\\xb1\\'\\x12\\xa3%H5!\\xbd\\xc3$\\xa4\\x90I2\"=\\xe31\\xa9\\x8c]m\\xf9\\xf9\\x1eF\\x8d[\\x1aM\\xba1\\xfa\\xe2\\xbfr\\x13\\xd7}\\xc2=5u\\xcd\\xad\\xb8\\xc6\\xf6\\x85\\xbf\\xdd\\xa5jR\\x89:\\xeb\\xa6\\xa6g\\xa0\\x92\\x11\\x18\\x85m\\xb5>/W\\x06\\xf6\\xd9\\xbb\\xebx\\xd1\\xd2\\xd4\\xab6\\xa2\\xfa1JY\\x16\\x86\\xe7u\\xbe\\xbd\\xc3?y\\x91(\\xcb]t\\xd0\\xb9\\x14\\xb8\\xf5G\\x06@\\x00\\x14\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00G\\xd6\\xff\\x00I\\xb5\\xdf\\xa1\\xe6~\\xfa(\\x90\\x11\\xf5\\xbf\\xd2mw\\xe8y\\x9f\\xbe\\x8a5\\x1c*\\xf9O\\xd1\\xba8\\xaf\\xc0\\x00>+@\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcd\\xf1\\xbf\\xe7Y\\x0f\\xe9y?\\xe6BhB\\xe3\\x7f\\xce\\xb2\\x1f\\xd2\\xf2\\x7f\\xcc\\x84l\\xed\\xa7\\xd2Wm\\x02\\x0e\\x18\\xf2,\\xce\\xeak]\\xf3Jn\\xaeJ\\xe2\\xee\\xee\\xad^\\xd4\\x92l\\xdaA\\xe8\\x85rR\\xc8\\xfd\\xc5\\xf1\\x96\\xbfo\\x16b*\\xd7\\xc9\\x8a\\xb8\\xbe(\\xf6\\xc7\\x80\\xe4\\xf7\\xaa\\xa4\\xa6\\xce1\\xbbk\\x94\\xa9HUt\\x1bh\\xefH%\\']\\xe26\\xd2\\xb3V\\xa5\\xa1\\xeb\\xcb\\x96\\x82\\xde?\\xcd\\xec\\x0c\\xa3\\xe6\\x98\\xbe\\xcd\\xf0X\\xf8J\\xa9\\xb2\\t\\xb9\\xc4\\xf9\\xf0s\\xe9\\xa8\\x8e\\xd3F\\x98\\x96\\xaf\\xc8y1\\xddJ\\x8d\\xd5=\\xdd\\xa4\\xdb&\\xd4I\\xd7EhfI\\xd4l}\\xa0v\\xf3\\x98`\\xf9.Wy\\x86\\xe4w7u8\\xac\\x98\\xad\\xd9\\xd4G\\xc7\\xe2*\\xa2)\\x9fu\\xde\\xc7~c\\x8bK\\xeat\\xd2\\xbd\\xef\\xb8k\\xb9\\xbe\\x82R}\\xe6<4\\xe3\\xff\\x00\\x8ej\\xa0\\x9a]|\\xd1.\\xc4]\\xf9\\xdb4\\xde\\xcd\\xac\\'\\xc7r]l\"}\\x99,\\xbf\\x15\\x06\\xe2^C)^\\x8b35\\xa9\\xbd{\\xbd\\xed4IhZB\\xec\\xdfi\\x1bE\\x85\\xea\\x1a\\xfb \\xcb\\xcb$\\x83\\xb4H\\x84\\x89\\xf5GY\\x1e3q]Ur\\xa5\\xb4\\xe3\\x0bBIz\\xea\\xde\\xea\\xc9jROx\\xcd$\\x8eDWk\\x17\\xb4\\xc1gT\\x00\\xe3\\x1d\\x97m\\xbb;\\xce2\\x9d\\x91Y;\\xb4\\x06g\\xab+\\xb4\\x9c\\x9b\\xac\\x1e\\x04\\x18\\xa8]C,\\xb2\\xf9\\xee){\\x86\\xf2R\\xda\\xd2\\xda\\\\7\\x0fU)I\\xdd4\\xeb\\xcfk\\xed1\\x97e\\x98\\xbdf\\x03\\x1b\\x0f\\xb7j\\x92\\xc6\\xf3.\\x83N\\xfc\\xa7\\xe2\\xa2BJ;\\xa8x\\xd7\\xec(\\xb9\\xe9\\xb8\\x95\\x16\\x86G\\xaaH\\xb5\"3\\x161b\\xaaf\\xa8\\x82\\xcd\\x8c\\x074m\\x83#\\xcdqI\\xb4\\xd8\\x869\\xb4\\\\\\x9e\\xe70f\\xb9\\xfb\\x17\\xe3\\xd5\\xe3U\\xb2\\xa4>\\xd1\\xba\\xa2i\\xf9*p\\x9aa\\xa6\\x88\\xc8\\xdb$\\xa3uk\\xdc3#3#\\x11\\xb8\\xde\\xd7s\\xcd\\xaf\\xce\\xd8\\xa4j\\xdc\\x90\\xb0\\xf6\\xf2\\xfcBm\\xbd\\xb2\\xe1W\\xb1!d\\xfbJ\\x88D\\xa6;\\xe4\\xa8\\x91\\xcd\\xc5\\x97\\xb4K-\\xd5\\x19\\x1aM[\\xaaL\\xda\\xc4M\\xacY\\xd3\\x93okk\\'\\xd7\\xc1\\x99a\\x16$\\xdb\\x15\\xad\\xa8Q\\x9f}(rJ\\xd2\\x83Z\\x92\\xdaL\\xf5Y\\x92\\x12\\xa5\\x19\\']\\x08\\x8c\\xfd\\xc4\\x16\\x97u\\xd4\\x85\\x14\\xecg\\xc5\\x80R\\xa4\"$s\\x94\\xf2[\\xef\\x9eY\\xe8\\x86\\x91\\xbce\\xbc\\xb5\\x1f\\xb9%\\xcc\\xfe!\\xc4yn\\xdc/+\\xd3\\xb2L\\x8f!\\x87\\'-\\xc8q\\x8c\\xcb%\\xa2Su\\x117^\\xb5~\\xcf\\xb3\\xbc\\xbdx\\xc5\\x06A\\xf0\\xa5\\xb2M\\xd2Os\\x0eG\\xa3\\xb8m\\x1e\\x8e\\x13r\\r\\xb2e\\xcd\\xd3#\\xd7uf4a\\xe6\\x8ap\\xea\\x8d5K\\xcb;N\\xc3\\xa9M\\x1bD\\xef\\xacm$;\\x9dEn-\\xab\\xce8\\xd6\\xf2I\\x10\\xca&\\xfbZ6D\\x95\\x1a\\x0bx\\xf5%\\x16\\xf1\\x99\\x91\\x11{#\\xc9_\\xd9\\xdb\\x13\\x86\\xe5\\x99H)\\x96\\x91l\\xb1\\x98\\x98\\x9c\\xa8sV\\x854\\xe4(\\xe4\\xe1 \\xf4J\\x08\\xfb\\xc5\\x13\\xaa\\xdeV\\xbar-\\t:\\r<\\x06\\xb2S\\xc9.\\xcc*\\xfb?\\xd3W\\xcc\\xab\\x98\\xfd\\xd5\\xe5\\xa4\\xca\\xfcY\\xfcI\\x12g>\\xd2\\xdcv#\\xabmf\\xe3\\x86M\\x16\\xf3\\xc5\\xdc\\xa0\\x89\\\\\\x8bMuI\\x99\\xea=06\\x13A_U\\xb3\\x1a\\xf6\\xe5\\xd9)\\x9d\\x9e\\x93eT\\xa5:\\xde\\xf3\\xdb\\x91\\x17\\x14\\xbb\\xff\\x00c\\xda\\xfb\\x9a\\xcc\\xfd\\x8d\\xcfkC\\xf7r\\x1a0\\x06Jy\\x17q\\xf6\\xcb\\xf6G\\xb5,;j\\xd0\\xa6TT\\xdec\\xd5\\xafZ\\xad\\xeb\\xd9w\\xb756\\x11\\'C5-KJ\\x14\\xccd\\xcb[\\xaa3I\\xa5N\\xa8\\xb4?\\xbe5|}1\\x9d\\xec\\xea\\xb7hNcK\\xb1~S\\'Ar\\xc5\\xe4_EZS\\xbe\\xfbIZR\\x95\\xef$\\xf5A\\x93\\x8a\\xd4\\x8bC\\xe4\\\\\\xc8Z@f\\x9c8\\xa6-\\xc5n\\xcd\\xb3\\xbd\\x84\\xd5g9\\x8by2or\\x0cv\\xd1U\\xe5U1tSS\\x1c\\xa7\\xc4%\\xa9ie\\xddP\\xa3-\\x14\\xb5\\x99-\\xb3B\\xcb|\\xf4P\\xf3`}\\x9d\\xb1\\xcd\\x9eM\\xc3$V\\xce\\xb6\\x7f\\x84\\xebf\\xd4\\xd77-\\xe6\\xd6\\x9fG\\x92\\xebn\\x1aW\\xa3dj\\xdc\\xee\\x90\\x84\\x1e\\xa5\\xec\\x97\\xb5\\xbc|\\xc6\\xa4\\x03Y)\\xbd\\xec\\x97e\\xb4\\xbd\\x9d1\\xba+\\xea[h\\xf3mW&\\xab!\\xb4\\xc9XK\\x8e\\xb6hT\\x99\\xe9u/!DM\\x91\\x9bi\\'\\x97\\xbaDde\\xa1j\\xa5s\\xd7\\xe1\\x9e\\xcd\\xf8\\xd4h\\xf1\\xe2G\\x9dk\\x1e\\xb6&T\\x8c\\xbe%{o5\\xdcE\\x94FjSM\\x91\\xb7\\xaaXR\\xd4\\xb5\\x9a5\\xd4\\x94\\xb5n\\x9aH\\xf4\\x1a\\xa8\\t\\xb3\\xa7\\x91v[?\\xb3\\xae7c\\xb3\\xfc\\xb7\\x0frm\\xaak2[\\xb7\\xaf\\xa6:\\x97[\\xef\\x9b}\\xd9I\\x92\\xa4\\xb6}\\xde\\x84\\x8d\\xf4\\x11\\x11\\x1aL\\xf7u\\xe6g\\xccb{_\\xd9&\\xd3d\\xed\\x8b \\xc9pJ{\\xe8\\x97r\\x94\\xcf\\xc1\\xb9\\x02\\xee\\xaa]\\xadgF\\x90\\x83\\xefY\\x91\\x19R\\x9bl\\x8c\\x95\\xabM)Dz\\xa9E\\xbak1\\xd7\\xc03V\\x155E\\xb8-\\xdf\\xc6\\xc9D\\x84\\xef\\x99\\x1a\\xf4-\\xe3/v\\xa3\\xfa\\x00; \\x00\\x00\\x00\\x00\\x00#\\xeb\\x7f\\xa4\\xda\\xef\\xd0\\xf3?}\\x14H\\x08\\xfa\\xdf\\xe96\\xbb\\xf4<\\xcf\\xdfE\\x1a\\x8e\\x15|\\xa7\\xe8\\xdd\\x1cW\\xe0\\x00\\x1f\\x15\\xa0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x07\\xe1:|j\\xc8\\x8e\\xcb\\x99!\\xa8\\x91ZN\\xf3\\x8f\\xbe\\xb2B\\x10_\\x8c\\xd4|\\x88\\xbf\\xacP\\x95\\xb6\\xda\\x8bs6\\xf1\\x1a\\xebL\\xe9\\xdfq;F\\xc1\\x1c?\\xeb\\xf4\\xc7T\\x88\\xe6_\\x8c\\x92\\xe2\\x95\\xff\\x00I\\xf2\\xd4?\\xec\\x93\\xa9\\x1e\\x9e\\xe1\\xf8E\\xec\\xbb\\xb3\\x187Pm\\x18\\xc6{\\xb9P,J\\xda\\x12\\n|\\xae\\xe2\\x1c\\xa2Y\\xaf\\xbce\\x9e\\xf7\\xbbkU\\x19\\x99\\xa5\\t$\\xab\\xe3#\\x1e-\\x9dv\\xb4}~E\\xe1\\xcdr\\xcf&\\x9b\\xb3\\x84\\xe5\\xc8\\xda\\x1ec\\x16\\xe1\\xcd\\xa6=\\x8f#\\xb8\\xb8s\\xb8j\\x03\\xb7\\x0b\\x8am\\x13\\'\\xabj\\xddB\\xcc\\xd2\\xa5\\xa5JI\\x92H\\x8c\\x92\\x94\\xa4\\xa56\\x99}\\x93l\\xea\\xabnX\\xb56c\\x91\\x14jW\\xf19\\x95S\\xe6Y9&l#\\x9b8\\x9b\\x90\\x84\\xbe\\xe1\\xa9jA\\x93_x\\xb3Qh\\xb5\\x16\\x86\\x932\\x1d:[\\x15\\xc3\\x0b\\x1fM\\x19S\\x7f\\xe9i\\xba\\xe2\\x12c\\xd2\\x9e\\xe5?\\xd2}\\'\\xbe\\xde\\xdf\\xde\\xfe[\\xda\\xdd\\xd7w\\xe2\\xd3NA\\x90\\xecW\\x0c\\xca\\xe4\\xe4R-i\\xbd)\\xec\\x84\\xa0\\x15\\x9a\\xbd)\\xe4zABt\\xdd\\x8b\\xc9+-\\xdd\\xc5\\x99\\x9f\\xb3\\xa6\\xf7\\xb9[\\xc5\\xc8M\\x8dV\\xd2\\x7f-?\\xe8\\xbc0)\\xdb;\\xb0-\\xb5\\xe78k[C\\xcf\\x1a\\xa3\\x87\\x88\\xc5\\xbd\\x8a\\x8e#\\x90n\\xb35\\xc7d\\xb4n\\x13\\xa6{\\xfb\\xa4L\\xa4\\xfb\\xad\\xee\\xefS=Re\\xa1\\x14\\x03\\x99\\xa6I\\xb6\\xcc\\'f\\xf0k\\'e23\\x870\\x98\\xd7\\xf6o\\xd4d\\xa7C\\x01\\x94\\xba[\\x89\\x90\\xf2\\x90\\xda\\xcd\\xd7T\\xe3n\\x1a[\\xdd4hJ\\xde\\xd0\\xb4\\x1df\\xbc\\x06\\x85\\xcc\\xae\\xc7$T\\x1dn\\xac+\\x9b\\xa9\\x93+\\xbes\\xee\\x91P\\xb7\\x16\\x86\\xf7w\\xb7KE:\\xe1\\xef\\x11\\x12\\xbd\\xaf\\x7f\"\\xd2\\x9f7\\xb3\\x1e\\xcd\\'\\xc2\\xc7\\xe2=\\x8d\\x11\\xc7\\xa2\\xafML$\"t\\x94\\x7f\\xb1\\xa4\\xf5(\\xee\\x9a\\\\#}\\xady\\xee;\\xbe\\\\\\xcf\\x973\\x16p\\xaa\\xf8\\x17a\\x18\\xbeK\\x93\\xed\\xa6_f\\xc6\\xac\\xf2\\xcb\\xba\\xa6r\\x0cJ\\xceu\\xe2i\\'.\\x12\\xac\\x1ci\\x10\\xc9&\\xa56e\\xba\\xad\\xe5\\x1a\\xb7\\x93\\xa2\\x8byD\\x93I(\\xc7\\xa7h\\xd9\\x8eI\\xb2\\xab|\\xefe02\\x0bg\\xed\\xf3\\x0f\\x83\\x8f\\n\\x9f:s\\xb2%G)JL9\\x84\\x97\\x96\\xa3Yz9\\xa1R\\x0b\\x9f.\\xf3^^\\xf1\\xd0\\xf8\\xd6\\xc50\\xcc=\\xfcm\\xeazb\\x84\\xbcq\\x89qj\\x88\\xa5<\\xa4\\xc5jJ\\xd2\\xb7\\xd0\\x94\\xa9fF\\x93R\\x13\\xa1\\x19\\x1e\\xe1$\\x89;\\xa5\\xc8W\\xed6Ok\\x97m\\xfa\\x8f6\\xbf:\\x82\\xa4\\xc4\\xa3\\xc9o\\x1eb*\\\\\\\\\\xc7\\x1e\\x94\\xd3H}\\xd9\\nV\\x89I$\\x90\\xb4\\xa1\\x08#\\xd7{x\\xd4G\\xec\\x898uDy\\xe9\\xf4\\xb4\\xfb\\x97\\x84\\xee\\xd4\\xb1\\x9c\\x9a~\\xc7\\xaf(\\xb0\\x8b\\x95\\xd6e\\n\\xad8\\xb5\\xb6s\\x1e5-.\\x92H\\x89Jp\\xc8\\xcfyDF[\\xfc\\xcc\\x8d[\\xdc\\xcc\\x878\\xc2\\xce\\xe4U\\xd5bT0\\xec\\xf3jl\\x8e\\x06\\xd2*+\\xf2\\x1a\\xac\\x9a\\xe9sd0\\x87\\xd8R\\x89\\x94\\xc8J\\x8c\\x9e\\x8c\\xe9\\x11,\\xb53#3=H\\xb9$\\xba\\xcf+\\xc5j\\xf3|v}\\x15\\xdcB\\x9dU9\\xb3jDsZ\\x91\\xbe\\x9f~\\x9b\\xc92Q{\\x8b\\x99\\x19\\x18\\xa4\\xc3\\xec\\xdd\\xb3\\x888}\\x962\\xde6\\x95\\xd5X\\xc9nl\\xb3~d\\x87d\\xba\\xfb{\\xbd\\xdb\\xa7%n\\x1b\\xc4\\xb4n\\xa7uD\\xbdS\\xa7-\\x07J\\xe8\\xaa\\xa9\\xbd)\\x12\\xc1\\xb6\\xfb\\x9dd\\xd5y\\x06\\xdd\\xd8\\xaa\\xc9\\xedj\\xce\\xb6>\\x19\\xe8\\'\\x12Z\\x8b\\xd0V\\xfd\\x8a\\xd0\\xf2\\x9aI\\x99\\xa5&\\xb4\\xe8J-4Y\\x11\\x12\\x88\\xcb\\x90\\x90\\x9d\\xb3\\xbb\\x02\\xdb^s\\x86\\xb5\\xb4<\\xf1\\xaa8x\\x8c[\\xd8\\xa8\\xe29\\x06\\xeb3\\\\vKF\\xe1:g\\xbf\\xbaD\\xcaO\\xba\\xde\\xee\\xf53\\xd5&Z\\x11lp\\xfb1\\xec\\xd6\\x0c\\x0b\\xf8\\x8d\\xe3\\xabSw\\xc7\\tV\\x8bz\\xc6S\\x8e\\xccTGM\\xd8\\xcaq\\xc5:k5%g\\xae\\xf6\\xba\\xab\\x91(\\xd4DD.+\\xc0h\\\\\\xca\\xecrEA\\xd6\\xea\\xc2\\xb9\\xba\\x992\\xbb\\xe7>\\xe9\\x15\\x0bqhow{t\\xb4S\\xae\\x1e\\xf1\\x11+\\xda\\xf7\\xf2-1\\xb2\\xaaf\\xf5~q\\xf7\\x85\\xbc9of\\xd6\\xb9\\x06\\xde2\\xcd\\x9c\\xc3\\xbe\\xcb\\xf2:\\xe8\\x96{/\\x8du5\\xaa\\x1b7 w\\xf3}!-\\xf7\\xe6\\xa6\\x8c\\x8d\\'\\xed\\xa8\\xf4I\\x91\\x1f\"=RZ\\x08\\xdd\\x93\\xdde\\x15\\x98_g\\xec\\xeaVm\\x92\\\\\\xdbe9\\x07\\xc0W\\x11\\xec\\xacV\\xec91\\xd4\\xcc\\xcd\\xd3\\xee>\\xf1\\x0bA\\xc6l\\xc9i\"Q\\x9e\\xf1\\xa8\\xd5\\xa9\\x8e\\xa4\\xc4\\xb6=\\x88`\\xb3\\xaafQ\\xd4z\\x0c\\x9a\\xaad\\xe3\\xf0\\xd7\\xe9/9\\xddAJ\\xc9igE\\xac\\xc9^\\xd2H\\xf7\\x8fU~]\\x07\\xe5_\\xb1\\\\2\\xaf\\x1e\\xc5(\\xe2\\xd3wUx\\xb4\\xe2\\xb2\\xa7c\\xd2\\x9e?E\\x90Iu$\\xbd\\xe3^\\xf2\\xf9>\\xef%\\x9a\\x8b\\xda\\xf7r-$aU\\xa4\\xcc\\xeb\\xff\\x00\\x9f\\xec\\xbb\\x97*\\xf3\\xbc\\x98\\xf6\\x8d\\x81g\\xb8\\xe4\\xdc\\xa4\\xb0|\\xa70U19\\x90\\xe4\\xa7%\\xa9\\xec9\\xe9\\x05\\xf7*\\xde\\xefr;iSZ\\xb6\\xb2Y/u\\x05\\xbc\\x93\\xde\\xd4Z6s\\xb3\\xdc\\x93j\\xf8>\\xd4\\xec\\x8fh\\x19k9\\x12rL\\x8a\\xb6\\x89L\\xdeHf=y7%\\xd40\\x9e\\xed\\x0b\"Y%D_\\x7f\\xae\\x89\\xd1)\\xd0\\x8bA\\xae\\xb3\\xd9ke\\xf1\\xed\\xdb\\xb3k\\x17Kr\\xd9\\x9cVq\\x8d3\\xa4\\x92!\\xc9\\'I\\xde\\xf2:;\\xcd\\xd6\\x0c\\xd6Z\\xa8\\x9a$\\x92\\xb9\\x91\\x91\\x91\\x99\\x0bev\\x19\\x1f\\x03\\xc6oc\\xe1u\\xf1cO\\x98\\xfc\\xcbF\\xd9\\x9d!\\xd3a\\xd9\\xef\\xa9N)N+\\xdbRP\\xa7\\x15\\xa9\\xee\\x91\\xe8F{\\xa9\\xf7\\x10S\\x85U\\xff\\x00\\xcb\\x81v-\\xb0\\xcd\\xac\\xd9\\xf6\\x83\\xdaE=\\xd3\\x12\\xe5\\xc0\\xa7\\xc6\\xb1\\x86\\xd3qZ\\xcb\\xcam\\xa5^J^\\xeb\\xac\\xba\\x82=\\x17\\xe8\\xe9\\x8c\\xbd\\tE\\xec\\x9b\\xe4e\\xa0\\xe9!\\x9bl\\x1fd\\xcb\\xd9>3n\\x89\\xce\\xc2\\x91\\x90\\xe4\\x17\\x12\\xef\\xee\\x1f\\xaeeMGT\\xa9\\x0b\\xdeRZJ\\x8c\\xd5\\xb8\\x94\\x92R[\\xc7\\xa9\\xee\\xeazk\\xa0\\xd2Gl8\\x98\\xa7\\xfc\\xb8\\xa4\\x80\\x00:\\xa0#\\xeb\\x7f\\xa4\\xda\\xef\\xd0\\xf3?}\\x14H\\n\\xad\\xcc\\\\\\x82V{S\\xc3v0+\\xa7\\xb7Y-j;8k\\x92\\xcb\\xc8\\xefc\\x11\\xb6d\\x87\\x1bRL\\xcc\\xc8\\xc9dg\\xa6\\x9fz\\xafp\\xd4p\\xab\\xe5?F\\xe8\\xe2\\xd6\\x00g^\\xb0\\xf2\\x9cs\\xd9\\xcapija?}e\\x8b=\\xf0\\xa3\\x04_\\x8c\\xd9\\xddnA\\x19\\xff\\x00\\xca\\x86\\x9c\\xd3\\xdd\\xbc|\\x8c\\xe7\\xf1]\\xa5\\xe2\\xd9\\xb3\\xceG\\xa5\\xbc\\x892kE\\xab\\xd0w\\xfb\\xb9L\\xff\\x00x\\xc2\\xf4q\\x1f\\xd4\\xa4\\x90\\xf8\\xad,\\xc0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x03\\xf3}\\xf6\\xa2\\xb0\\xe3\\xcf8\\x86Ym&\\xa5\\xb8\\xe2\\x89)I\\x17\\xbc\\xcc\\xcf\\xdcB\\x84\\xfe\\xdbh\\xa6<\\xb8\\xf8\\xc4k\\x1c\\xe2ZOM\\xdcv9=\\x1c\\x8f\\xf1*Z\\xcd1\\xd2\\x7f\\x91N\\x91\\xfeN@4\\x11\\xf8\\xcb\\x98\\xc5|gd\\xca}\\xb8\\xd1\\xdaI\\xa9\\xc7\\x9eY!\\x08\"\\xf7\\x99\\x99\\xf2\"\\x14\\x13ciYI\\xfbr*0H*\\xff\\x00\\x86:N\\xcey\\x97\\xf6\\xd4He\\xa5\\x7f\\xfb\\x1e/\\xca?h\\xbb\\x12\\xc6\\x9d\\x94\\xd4\\xdb\\xe4K\\xcc\\xac[2Rd\\xe4\\x8f\\x9c\\xb4\\xa1E\\xff\\x00\\x13l\\x19\\x13\\r+\\xf2\\xb6\\xda@~K\\xdbu-\\x9a\\xd4\\xce\\'\\n\\xcb:|\\x8ft\\x95@\\xc1..\\xbf\\x96[\\x86\\x88\\xfc\\xbe2\\'\\r_\\x90\\xc7\\xcf\\xa2m/*\\xfeq:\\xa7\\x04\\x84\\xaf\\xfd\\xba\\xf4|\\'?O\\xc7\\xde\\xb8\\x942\\xda\\xbf\\'t\\xe9~Q\\xa1\\xa1\\tm\\tB\\x12IJKBI\\x16\\x84D>\\x80P`\\xecK\\x17L\\xb6\\xa7\\\\\\xb3\\'/\\xb3i[\\xe8\\x99\\x92HT\\xd3m_\\xf36\\xd2\\xbe\\xe4\\xc9\\xff\\x00t\\x84\\x0b\\xe9$\\x92DDDD\\\\\\x88\\x8b\\xe2\\x1f\\xd0\\x01\\x8f\\xd7d\\x7f\\x06\\xdadL|\\x17e+Ki\\x07\\xdeF\\x8f\\xbe\\x83\\xe6_\\x1e\\xa2C\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xf4c\\x7f\\xce\\xb2\\x1f\\xd2\\xf2\\x7f\\xcc\\x84\\xd0\\xfd\\x15uQ\\x13\\xad<\\xbe>IT\\xc5\\xf8+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00\\xc6|>\\x9e\\xec^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcC\\x8c\\xfe\\x83\\xba\\xe8\\xff\\x00\\x88\\xb1\\x00g\\xc3\\xe9\\xee^9+\\xbcg\\xf4\\x1d\\xd7G\\xfcG\\xf7\\x16\\xb9\\xf8_i\\xb0\\xff\\x00\\xd8f\\xc2\\xee\\xea%\\xff\\x00z\\']5\\x90\\xa4\\xdb\\x16%wh\\xddQ\\xda|\\x15v\\xb3\\xd157L\\xae\\x04\\xc5\\x9f\\xc7\\xb8\\xd3\\xc9J\\x9c/\\xfa\\x90JI\\xeaZ\\x19\\x91\\x90\\x0b\\xa0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\nM\\xce\\xd8\\xf1z\\xab\\x07\\xab\"\\xccw \\xbah\\xf7WUB\\xc2\\xe7Hm_\\x118M\\x11\\x93?\\xd6\\xe9\\xa0\\xbf(\\x0b\\xb0\\xf9Z\\xd2\\xda\\x14\\xa5(\\x92\\x94\\x96\\xa6\\xa3=\\x08\\x88g\\xa5g\\xb4|\\xac\\x8f\\xd0\\xaakphJ/fE\\xcb\\x85a;\\xf2\\xeb\\x1d\\x85\\xa5\\xa4\\x1e\\x9e\\xe5w\\xees>i=4?\\xeb{\\x14\\xa8\\xb3q/e\\xb6\\x16y\\xcc\\x822V\\xe5\\xe3\\xe4q\\x08\\xff\\x00$6\\x92\\x88\\xfc\\xbe#SjW\\xfdG\\xcc\\xcc?I{m\\xc6\\xdc\\x94\\xec:\\x03\\x99\\x9aX\\xb6\\xa3B\\xa2\\xe3LzZP\\xa2\\xf7\\xa5\\xc7\\xf5&\\x1a?\\xc8\\xe3\\x89\\x1f\\x9a\\xcfiYJ\\x8c\\x90T\\xf8,\\x03=\\tJ\\xd6\\xd2z\\x93\\xfdE\\xb8\\xcb*\\xff\\x00\\xbb\\xe5\\xf99\\xf2\\xbe\\xc4\\x86\\xc5|V\\xa3Ea\\xb8\\xd1\\xdaI!\\xb6YA!\\x08\"\\xf7\\x11\\x11r\"\\x1f\\xb0\\x0c\\xfd\\xad\\x88\\xe3\\x93\\x1fnVJ\\xa9\\xd9\\xc4\\xd4\\x19(\\x9d\\xc9_\\xf4\\x96\\x92\\xa2\\xf7-\\x11H\\x93\\x19\\xb5k\\xcfV\\xdaI\\xfb\\xbf\\x11i}i\\xa40\\xd2\\x1bm\\tm\\xb4\\x11%(AhI\"\\xf7\\x11\\x17\\xc4C\\xec\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x06o\\x8d\\xff\\x00:\\xc8\\x7fK\\xc9\\xff\\x002\\x14\\x8d\\xa8\\xf6\\x8c\\xc2\\xb6S\\x91c\\xf4\\xb6\\xf9\\x15\\x0ck\\x0b\\x1b\\x04E\\x97\\x1em\\xc3\\x11\\x9d\\x80\\xc2\\x99u\\xc2\\x92\\xe2\\x14z\\xeej\\xdaQ\\xcft\\x8c\\xdc/k\\xdcGw\\xc6\\xff\\x00\\x9dd?\\xa5\\xe4\\xff\\x00\\x99\\x0f.W\\xb3\\xea|\\xca}\\x0c\\xcb\\x16L\\xdf\\xa6\\xb0M\\x94sA\\'\\xdbp\\x9au\\xa2J\\xf5#\\xd5;\\xaf+\\x97.d\\\\\\xf9\\x0f\\xb5\\x8d\\x9a\\xff\\x00\\xe3\\xe4\\xc5_\\xb9\\x9d/\\xb4<\\xab\\xbd\\xaf\\'\\x0b\\xc41\\xc8y,F\\xa0\\xc0\\xb3\\x93n\\xab\\xc6c\\x93\\x91%\\x19\\xee\\xbf\\x11\\xbd\\xd5zSiAo)IRK\\x99\\x11jfZ\\xd1\\xf3\\x9e\\xdd\\xb8\\xfe%\\x90d\\x8c\\xc6\\x85M>\\x97\\x1c\\x96\\xe4+\\x07de0\\xe2Y\\xba\\xe3G\\xa3\\xfe\\x8b\\x01~\\xdb\\xc4\\x83\\xde\"\\xd5H5\\x9aL\\x90J\\xe4gc\\xdb\\xbe\\xc5\\xb3-\\xab\\xe4\\xb5\\x0c\\xd73\\x89VTWJ\\x87*\\x0eH\\xa2\\x90\\x8b\\xca\\xa3m\\xd4\\xad\\xe2\\x8f\\xba\\x9d\\xc5\\x12\\xd2\\x9d\\xcd\\rh-\\x14z\\x92\\xb9i\\xf9\\xe3{\\x1e\\xda.\\xcc\\xb2l\\x82\\x1e(\\xe6\\x1dg\\x86\\xdd^=t\\x97/\\xd1 \\xa7W\\x1c\\x87\\tr\\x19B[I\\xa1\\xe4\\xefo\\x9a\\rKA\\x96\\xf7=\\xe2!\\xe2\\x99\\xc5\\xbd\\xa0\\xd0\\xdb?j\\xf3\\xd8\\xcc\\xd6f\\xce\\xc7\\xabd\\xe2Ka\\x99Eb\\xe6K\\x1a<\\xf9\\x0c\\xac\\x88\\xd4\\xb8\\xd0\\x16\\x9d\\xf7\\xb7\\x08\\xcfR\\xdeI\\x9e\\xe9\\xe8F,v{m\\xc8_\\xdb5\\xa6\\xcf\\xf1\\xac)\\xab\\xa7+\\xab\\xe1Y\\xbfm*\\xdc\\xa2\\xc7C/\\xad\\xc4\\x99\\x19\\x13+V\\xf9wz\\xa5%\\xa9+\\xda\\xd4\\xd1\\xba[\\xd9\\xc6\\xd5{0\\xe6\\x99u\\x86\\xd6b\\xd3?\\x89\\xaa\\xbf=i\\xbdn\\xae\\x10\\xfa\\xeck\\xc9\\x11\\xd0\\xd1EBR\\x9d\\xd3ky\\xbd\\xe4\\xab|\\xb7;\\xc5\\x1e\\xe2\\xcc\\x8b]W\\x01\\xd9\\xb5\\xed\\x16\\xd6\\xf2L\\xc2\\xd5\\xca\\xe2f\\xde\\x82\\xa2\\xbb\\xd1\\xe1\\xbc\\xe3\\x8anDc\\x90o}\\xf2\\x13\\xaa\\x0c\\xdeN\\xe9\\xfb\\xcfC\\xd5)\\x16\\'\\x12j\\xb4\\xf0\\xff\\x00\\xdf\\xf4h\\x8c\\xc36\\xe7\\x92m&\\xec\\xe4\\xe2\\xd8\\x01\\xd8`I\\xb3r\\xb7\\x89d\\xdc7\\x1d\\xc7\\xbb\\xa7M\\xa7\\x9ff1\\xa0\\xcdm%iYjkJ\\x95\\xbaz$e\\x9b\\x0f\\xed\\x07\\x96cx>>\\xf6Q\\x8d\\xce\\xb6\\xc6,2\\xb9\\xd4J\\xcbe\\\\\\xa5\\xe9\\x08u\\xdbI\\x0c\\xc7\\xfb\\x82\\x88\\xd4l\\xa5F\\xdb;\\xc6\\xb24\\xee\\xf2F\\xe9\\x11\\x9e\\x81\\xb3\\r\\x99m?c\\xae\\xb5\\x89\\xd1\\xcb\\xc5,vx\\xcd\\xa3\\xd2\\xa3I\\xb09(\\xb3\\x8d\\x11\\xe9\\ny\\xd8\\xfd\\xda\\x13\\xdd\\xadDn-)p\\xd6_\\x16\\xa9=4\\x11\\xb1{:\\xe4\\x8cl\\x1a\\x8f\\tT\\xda\\xa3\\xb5\\x83\\x97\\xa6\\xfd\\xc7\\x89\\xd7;\\x83\\x8eW*\\x9d\\xba\\x93\\xee\\xf7\\xb7\\xfb\\xa5\\x12t4\\x91or\\xd7OhO\\xd4\\x9bN\\xb7\\xb4\\xfd\\x8d\\x13\\xf1\\xb6\\xb2\\x83\\xda\\xe6\\xd5fY\\xd8;\\x0f\\x13\\xd9\\xd5\\xe7\\x96\\xa5\\xa0\\xdd\\xeb\\x89\\x88\\xbf\\x1f\\xcf\\xa2h\\xdevu\\x94^e\\xb4rfd\\x18\\xab\\xf8\\x84\\xd6\\xe6\\xc8\\x8c\\xdc\\x19\\x12\\x91!N2\\x85\\x9aP\\xf1)\\x1c\\x88\\x96E\\xae\\x9f\\x17\\xe32\\xd0\\xce\\x90\\xf6\\xdd-\\xa7m\\xca\\xcfg\\x94X\\x8bVH\\xa6(NZXI\\xb8n+\\xcd\\xb5 \\xb7\\xbb\\xd6#\\xa9\\x06o\\xb6\\xda~\\xf9[\\xc9\\xe6F\\x92#1w\\xd9\\xccl\\xca-\\x1c\\x94g\\x12\\xea&\\xdb\\x1c\\xe9\\ne\\xcaf\\xdcC%\\x14\\xd6f\\xcaTK\\xe7\\xbeI\\xd3_\\x8b\\xf2\\x9f\\xbc\\xf2\\xcd\\xb3\\xecg4\\xda\\x96\\xd0\\xa8\\xa5Fo\\x13\\xad\\xa9\\xa8\\xb2\\x87:\\x16H\\x9fHM\\xf4$6\\xb4\\xad\\xf6Q\\xa2w\\x14\\x97tRy\\xac\\x93\\xba\\xb3\\xd5*2#\\x1b\\xaaj\\xcb\\x13\\x06\\x88\\xcd\\x97\\xed\\x8fhro6\\xd3\\'!\\xa3\\xaf\\x97\\x8f\\xe3\\x16\\xf3Q\\x1d\\xd6\\xed\\xbe\\xea\\xc13\\t\\x87[\\x8c\\x96\\xca1\\x12\\x92\\xa2Q\\xac\\xddR\\xb5%8e\\xba\\xa2I\\x19\\xcaE\\xdafm\\xb5}\\x80\\\\\\xe5\\xd1\\xf1\\xd2\\xc1\\xbb\\xfc}\\xbb\\xda\\x19\\x05k\\xe92\\x1cy-\\x9b\\xe8K\\xad\\xa5\\xa4\\x92Z5!\\x05\\xcdg\\xde6\\xe1\\x92\\x92\\x8dM%\\xf6\\xde\\xc83\\x9a\\\\\\x9fj1*\\xe4c\\xf2p\\xec\\xe1r\\'\\xa9\\xc9o>\\xdc\\xf8r\\x9c\\x82\\x98\\xfb\\x84\\x94\\xb6\\xa4-\\xb3[M\\xab{x\\x8c\\x88\\xd5\\xec\\x99\\xe8&m\\xabe\\xec\\xa3\\xb2yR\\xcc\\xee\\xe6\\xdb\\xd3\\xe2MS\\xa5\\xb8F\\xa5\\xa6T\\xc2\\x8a\\x98\\xed\\xb6\\xd6\\xa4F\\xae\\xf1\\xd3JS\\xa9\\x11\\x9e\\xf1r!\\xce3Zo3mWE\\xeff\\xb9\\xac}\\xa4l\\xf3\\x19\\xca\\xe2\\xa3\\xba\\x8fu[\\x1e\\xc1\\r\\x19\\xeam\\xf7\\xad\\xa5{\\xa7\\xf9K]?\\xec?,\\x0f(\\xbc\\xc9\\x8f \\xf8o\\x15\\x91\\x8b\\xfc\\x1fl\\xfc\\x18]\\xfc\\xa4?\\xf0\\x84dn\\xeeKN\\xef\\xde%z\\x9f\\xb0|\\xcbOx\\xf2\\xec[\\x07wf\\x9b\"\\xc31G\\xd4\\x95\\xc9\\xa7\\xa8\\x8b\\t\\xf5\\xa4\\xf5%:\\x86\\x92\\x95\\x99~CQ\\x18\\xf5`q\\xb3(\\xe7\\x90q\\x84\\xca\\x89d\\xbbg\\xd7Q\\xf0Kn#\\xbb\\xaf=\\xde\\xe5\\x0fo\\xfb\\xdd/kx\\xd3\\xcb\\xdd\\xa0\\xed\\x17\\xb4]\\x95\"\\xdbn\\x96\\xde\\xbc$l\\xea\\x83\\x11j\\xd9\\xca\\xf8\\xf0\\xe5\\xd8\\xcc\\x97p\\xdc\\'\\x12\\xcc\\x85\\xa9=\\xe4v\\x14\\x85\\x1c\\x84\\xb6I3Y\\x92\\x93\\xa1\\xfb%\\xa9\\x99\\x11\\xc1\\xec\\x8bi[C\\xc8\\xb6\\xd1\\xb5z\\x8b\\x9a\\x9a\\xf71\\x8aKt\\xc6\\x8f!6\\x9a\\xbb\\r\\xbfCi\\xc6\\xd0\\x86\\x8a:{\\xce\\xf3\\x7f\\xbcR\\x94\\xb24\\x1b\\x86\\x92\\xde$\\x91\\x9bo[\\x19\\xcd6\\xb9\\x94U\"\\x0bx\\x9du\\\\\\tp\\xe5\\xc2\\xc9\\x97\\xe9\\t\\xbd\\xabSn\\xa5o\\x13\\x1b\\xa9\\xdcQ,\\x92i\\xd0\\xd6\\x92\\xd1G\\xa9+\\x96\\x93x\\xfe\\xcd\\xf3C@\\x00\\x00\\x00\\x00\\x00\\x8f\\xbd\\xc7\\xaa\\xb2\\x8a\\xd7k\\xaek!\\xdb\\xd7\\xbb\\xfc\\xa4I\\xec!\\xf6\\x97\\xfdhQ\\x19\\x1f\\xff\\x00\\x02@\\x00g~\\xa7\\x1b\\xa3\\xf6\\xf0\\xfc\\x92\\xe7\\x122\\xfb\\xd8m?\\xe9\\x90\\x0f\\xfe\\x9fG\\x91\\xbe\\x96\\xd3\\xf9\\x196\\xbf\\xaf\\xde?\\xa7}\\xb4,Y\\xb2\\xf8W\\x1e\\x83\\x98GI\\x9e\\xf4\\xbcm\\xd2\\x89#N\\\\\\xfd\\x16J\\xf7\\x7f\\x1e\\xbb\\xaf\\x99\\xf2\\xe4\\x93\\xf7\\r\\x0c\\x00R\\xe8v\\xc1\\x8a\\xdfY\"\\xac\\xec\\x15St\\xbf\\xbd\\xa9\\xbaa\\xc8\\x12\\xd5\\xcc\\x8b\\xd8i\\xe2I\\xb8Z\\x99\\x16\\xf27\\x93\\xcc\\xb43\\xd4\\x85\\xd0G\\xde\\xe3\\xd5yEc\\xb5\\xd75\\xb0\\xed\\xeb\\xdd\\xe4\\xe4I\\xcc!\\xe6\\x97\\xfdhQ\\x19\\x1f\\xfd\\xc8S\\x11\\xb1\\xf4\\xd0(\\x97\\x87\\xe4\\xb78\\xaaRz\\xfa\\x02_\\xf4\\xda\\xf5\\x17\\xfc\\xbe\\x8f#\\x7f\\xbaO\\xe4aM\\x7f_3\\xd440\\x19\\xd7\\x14g\\xd8\\xaf+\\xdc^6Q\\x11>\\xfb\\x1cU\\xee\\xed\\xed>5*\\x1c\\x85\\x11\\xa4\\xbf\"\\x1euG\\xf1\\x17\\xe3\\x99\\xc6v\\xa9\\x8b\\xe5\\x96\\x07[\\n\\xd5\\x0c\\xdc%;\\xeb\\xa8\\x9e\\xda\\xe2NA~3\\x8e\\xe9%\\xcd?.\\xee\\x9f\\x94\\x05\\xb0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x04u\\xf6EU\\x8bV;cse\\x12\\xa6\\x03_\\x7f*k\\xe9e\\xb4\\xf2\\xd7\\x9a\\x94d_\\x11\\x80\\x91\\x01\\x9d\\x96\\xd4\\xecrS\\xdc\\xc2\\xf1;\\x0b\\xa6\\xd5\\xee\\xb5\\xb6\\xd6\\xae\\xbc\\xbf))\\xc4\\x9b\\xce\\x17\\xc6Ji\\x95\\xa4\\xf4\\xfb\\xe2\\xe5\\xab\\xd5\\xeeM\\x94{Ync)1\\x95\\xef\\xa8\\xc5\\xd2\\xaa\\xd8\\xfa~%\\xbeJT\\x95\\x19{\\xb5C\\x8d\\x91\\xf3\\xd5\\x1e\\xed\\x02s*\\xdav1\\x85\\xcan\\x1d\\xad\\xbbH\\xb2u;\\xcc\\xd5\\xc6B\\xe4\\xcex\\xbf\\x1bq\\x9a%:\\xbf\\xff\\x00jO\\xde \\xd5\\x96g9I\\xee\\xe3\\xd8\\xb38\\xf45\\x17+<\\xa9\\xcd\\x17\\xa7\\xfc\\xc8\\x86\\xca\\x8dj\\xfe\\xa7\\x1cd\\xff\\x00 \\xb3\\xe2\\xb86?\\x83\\xc5q\\x8a\\nhu(u[\\xcf*3$\\x95\\xbc\\xaf\\xf9\\x9c_\\xdf-_\\xf5(\\xcc\\xff\\x00(\\x9d\\x01\\x9e+d)\\xc8R\\x85fy\\r\\xa6Tz{P{\\xd3\\x85\\\\|\\xcf\\x91\\xc6d\\xd3\\xde\\'\\x9f\\xde\\xbc\\xa7E\\xd6\\x96\\x8a\\xb7\\x1b\\xaef\\xbe\\xa6\\xbe-\\\\\\x06KF\\xe2\\xc2e,\\xb4\\x82\\xfcIJH\\x88\\xbf\\xecC\\xdc\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x002\\xba[\\x98\\x10\\xa7\\xe4-H\\x9d\\x19\\x87\\n\\xdaA\\x9a\\x1dy)?y|FbW\\x88\\xea|R\\x17P\\x8f1n\\x7f\\x1d\\xaa\\x94\\xf2\\xddz\\xb2\\x1b\\xce\\xac\\xf5R\\xdc\\x8e\\x85)G\\xf9L\\xc8|p\\xad/\\x83\\xc0\\xe9\\x91\\xe4>\\xa4\\xf8\\x9c*\\xb5\\x98\\x9e\\xc4\\xc4L\\xddT\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x16\\xbe\\x15\\xa5\\xf0x\\x1d2<\\x83\\x85i|\\x1e\\x07L\\x8f!7\\x8c\\x1eS\\xd92\\xc2\\xa9\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6-|+K\\xe0\\xf0:dy\\x07\\n\\xd2\\xf8<\\x0e\\x99\\x1eA\\xbc`\\xf2\\x9e\\xc6XU8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc5\\xaf\\x85i|\\x1e\\x07L\\x8f \\xe1Z_\\x07\\x81\\xd3#\\xc87\\x8c\\x1eS\\xd8\\xcb\\n\\xa7\\x11T\\x19\\x91\\xfc\\'\\x0bR\\xf7\\x1f\\xa4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x16\\xbe\\x15\\xa5\\xf0x\\x1d2<\\x83\\x85i|\\x1e\\x07L\\x8f \\xde0yOc,*\\x9cGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1eb\\xd7\\xc2\\xb4\\xbe\\x0f\\x03\\xa6G\\x90\\xa0m\\xf3\\x1e\\xa9\\x89\\xb1\\xcc\\xad\\xe6ka\\xc7u\\x10\\xcc\\xd2\\xebQ\\xd0JO\\xb4\\\\\\xc8\\xc8\\x83x\\xc1\\xe5=\\x8c\\xb0\\x94\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x16\\xbe\\x15\\xa5\\xf0x\\x1d2<\\x83\\x85i|\\x1e\\x07L\\x8f \\xde0yOc,*\\x9cGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1eb\\xd7\\xc2\\xb4\\xbe\\x0f\\x03\\xa6G\\x90p\\xad/\\x83\\xc0\\xe9\\x91\\xe4\\x1b\\xc6\\x0f)\\xece\\x85S\\x88\\xea|R\\x17P\\x8f0<\\x8a\\xa1E\\xa1\\xd9\\xc2?\\x8f\\x9c\\x84y\\x8b_\\n\\xd2\\xf8<\\x0e\\x99\\x1eA\\xc2\\xb4\\xbe\\x0f\\x03\\xa6G\\x90o\\x18<\\xa7\\xb1\\x96\\x15N#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f1k\\xe1Z_\\x07\\x81\\xd3#\\xc88V\\x97\\xc1\\xe0t\\xc8\\xf2\\r\\xe3\\x07\\x94\\xf62\\xc2\\xa9\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6-|+K\\xe0\\xf0:dy\\x07\\n\\xd2\\xf8<\\x0e\\x99\\x1eA\\xbc`\\xf2\\x9e\\xc6XU8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x1ez+\\x18\\x96\\x1bM\\x81\\xe8\\xb2\\x99\\x93\\xb9Q/{\\xb9p\\x97\\xbb\\xab\\xd1t\\xd7As\\xe1Z_\\x07\\x81\\xd3#\\xc8~\\xf0\\xa9\\xab\\xeb\\\\7\"A\\x8d\\x15\\xc5\\x16\\xe9\\xad\\x96R\\x832\\xfcZ\\x91\\x04\\xf8\\x9c<\\xb3\\x14\\xc4\\xdebc\\xd5b\"\\x1e\\xd0\\x00\\x1f0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00C\\xe4\\xf8u\\x16k\\x00\\xa1_\\xd3\\xc1\\xb9\\x88J\\xdfKS\\xa3\\xa5\\xd2B\\xbe%\\'x\\x8fuE\\xf1\\x19he\\xa7!0\\x003\\xbfV7\\x18\\xd1\\x1a\\xb0\\xdc\\xc2\\xc2\\xb9\\xb2\\xe6\\x9a\\xcb\\xd3U\\xb4/\\xea#qd\\xfa\\x0b\\xf1\\x12^$\\x97\\xc4\\x9d\\x08\\x88\\x13\\xb4,\\x97\\x19=\\xcc\\xbb\\r\\x94Q\\xd2Fj\\xb6\\xc6VvQ\\x88\\x8b\\xe3S$\\x94\\xc9I\\x9f\\xe2KN\\x11s\\xf6\\xfd\\xda\\xe8\\x80\\x02\\x13\\x16\\xcdh3xK\\x95Aq\\x0e\\xdd\\x96\\xd5\\xb8\\xe9\\xc5x\\x96\\xa6\\x97\\xff\\x00\"\\xd2\\\\\\xd0\\xaf~\\xa9Q\\x11\\x96\\x9e\\xe16*\\xb9V\\xcb\\xb1\\x8c\\xc6j\\'\\xd8\\xd5!6\\xed\\'q\\xabxK\\\\Y\\xed\\x17\\xe2D\\x96\\x8d.$\\xb9\\x17\"V\\x87\\xa1jF!UC\\x9f\\xe2&j\\xa6\\xbd\\x8b\\x98W\\x972\\xaf\\xc8\\xd2Q\\xe5$\\xbf\\x12&2\\x8d\\xd3\"\\xf8\\x89\\xc6T\\xa3\\xe5\\xab\\x9e\\xf3\\x01\\xa2\\x00\\xa0\\xc7\\xdb-<\\x19MB\\xca\\xa2\\xcc\\xc2\\'\\xb8iB\\x13x\\x84\\xb7\\x19\\xd5\\x9f\\xb9-\\xcbI\\xa9\\x85\\x99\\x9f\"N\\xf9/\\xfe\\x92\\x17\\xd4\\xa8\\x94\\x92RL\\x8c\\x8c\\xb5#/\\x8c\\x07\\xf4\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00P\\xa6\\xedj5\\x84\\xc7\\xeb\\xb0\\xfa\\xe7\\xb3;&Tm\\xba\\xb8K&\\xe0FY\\x1e\\x86\\x97\\xa5\\xab\\xd8##\\xf7\\xa1\\xbe\\xf1\\xc2\\xf8\\xd0\\x02\\xfa)\\x97\\xfbZ\\xc7\\xe9-\\x1c\\xa7\\x8c\\xe4\\x8c\\x83 oM\\xeaz6N\\\\\\x96\\xf5\\xf7w\\xbb\\xbe\\xcb\\x04\\x7f\\x12\\x9eR\\x13\\xf9Dz\\xb6{{\\x98\\x12W\\x99\\xe4oz*\\x8b\\xda\\xa1\\xc7]\\\\8\\x9f\\xd4\\xe3\\xe4d\\xfb\\xdf\\x88\\xfd\\xa6\\xd0\\xa2\\xd7y\\xb3#\\xd0\\\\\\xe8\\xb1\\xea\\xbc^\\xb9\\x10)\\xeb\\xa2\\xd5\\xc1A\\x9a\\x93\\x1e\\x1b)i\\xb23\\xf7\\x9e\\x89\"-O\\xe3?\\x8c\\x05--\\xed\\x170=]r\\x16\\xcf\\xab\\x14G\\xa2c\\x9a,m\\x0c\\x8f\\xe3\\xdeR}\\x1d\\x95\\x17\\xe2\\xdd\\x90\\\\\\xbd\\xfc\\xf4)\\x1c\\x7fdx\\xdd\\r\\xa3v\\xeeEv\\xee\\xfd\\xbdwnn\\x9eT\\xc9h\\xd7\\xdf\\xdd\\xad\\xcd{\\xa2?\\xf9Z$\\'\\xf2\\x0b\\x98\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0c\\xf7\\xb4\\x11\\x91lc,\\xd7wOC?\\xbe\\xd7O\\xbeO\\xe2\\xe64!\\x9ev\\x835\\x96\\xc5\\xf2\\xd3ox\\x97\\xe8g\\xa6\\xef\\xbf]\\xe2\\x01\\xa1\\x80\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0f\\xcaTV\\'Fv<\\x96[\\x91\\x1d\\xd4\\x9a\\x1ci\\xd4\\x92\\x90\\xb4\\x9f\\xbc\\x8c\\x8f\\x91\\x97\\xe4\\x14\\x05ly\\x9c|\\xcd\\xec\\x1a\\xe2V\\x14\\xe1s*\\xf8\\xc9)\\x15K\\xfc\\x8a\\x86\\xbfe\\x05\\xfd\\xc2\\x99Q\\xf2\\xd5Zr\\x1a \\x00\\xce\\xfd`d8\\x82I9\\xa68\\xe2\\xa2\\x11\\xe8w\\x98\\xdaW6)\\x17\\xfc\\xce\\xb0E\\xdf\\xb3\\xaf?\\xbdK\\xa8I\\x11\\x9a\\x9c!s\\xa0\\xc8\\xaa\\xb2\\xaa\\xb6\\xac\\xa9\\xac\\xa2[W\\xbb\\xfc\\x9c\\xa8O%\\xd6\\xd5\\xf8\\xf4RL\\xc8H\\x8afA\\xb2\\xba\\x9b[\\x17-\\xab^\\x95\\x8cd\\x0b=\\xe5[R\\xac\\x99q\\xd5\\x7f\\xfa\\xc826\\xdf.E\\xc9\\xd4/O\\x8bOx\\x0b\\x98\\x0c\\xec\\xf2\\xec\\xa7\\x04\\xd19ma^U\\'\\xff\\x00\\xee\\x0cz2\\xd4\\xa6\\xcb\\xf1\\xc8\\x87\\xaa\\x9cIi\\xa7\\xb6\\xd1\\xb8^\\xf34\\xb6D.\\xd4\\xb7u\\xf9%\\\\k*\\xa9\\xd1\\xec\\xab\\xe4\\xa7}\\x99Q\\\\\\'\\x1bp\\xbf\\x19(\\xb9\\x18\\x0fp\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\n\\xf6W\\x9a\\xc3\\xc5\\xbd\\x1e?q\"\\xd2\\xe2^\\xf7\\xa1\\xd4@$\\xaaL\\x93/y\\x91(\\xc9(Ar\\xd5\\xc5\\xa9(N\\xa4F\\xa23\"?\\xeei\\x95p\\xc6)\"\\xd6+)\\xb0\\x90\\xae\\xe9\\x98L%z&C\\xef--\\xb0\\x8d\\xeez%KZ\\x08\\xd5\\xcfB3>z\\x0f\\xe6+\\x8b\\xb1\\x8e\\x1b\\xef\\xc8}3\\xef\\xec\\x08\\x9c\\x9d`\\xb4\\x12\\\\\\x90i\\xd7D\\xa4\\xbd\\xe9i\\xbd\\xf3$#S$\\x92\\xb9\\x99\\xa9JR\\x82\\xbcx\\r\\xaev\\x93w:\\x98\\xda\\xab\\xd7\\xa1\\xa7\\x18\\xabqh\\x88\\x92\\xd3\\x9ad\\xbb\\xa9*Q\\xfe22CFZ\\x11\\xb6\\xad7\\x8e\\xf9\\x0e\\x1cz\\xf8\\xadF\\x8a\\xc3q\\xa34\\x92Cl\\xb2\\x82B\\x10\\x92\\xf7\\x11\\x11r\"\\xfc\\x83\\xf6\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x9d\\xf6\\x86\\xd3\\xd4\\xae]\\xa9j^\\x84~\\xef\\xed\\x10\\xd1\\x06y\\xda\\x0c\\xc8\\xb6/\\x96\\x99\\xa8\\xd2^\\x86|\\xd2Z\\x99{I\\x01\\xa1\\x80\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa4\\xdd\\xec\\xcd\\xa3\\xb6\\x91{\\x8b\\xce\\x99\\x16\\xaa\\xfac\\xb6\\x94r]&+\\xef\\x1f/\\xbaGQ\\xe8H\\x8f1Z\\xfbJQ\\x9e\\xebo\\xe8D\\xb3\\xddB\\xfe\\xe8iS\\xc1z\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x1d\\x91>\\xe4\\\\~\\xcd\\xe6\\x96m\\xba\\xdcWV\\x85\\x97\\xbd&H3#\\x19\\xed=4\\xc9\\xb5\\x10d;\\x91\\xdd\\x9b\\x8f0\\x87\\x15\\xa4\\xbd\\x0bSI\\x19\\xff\\x00\\xc2=xX\\x1bZf\\xa9\\xaa\\xcb\\xa5\\xaf-L\\x06o\\xc3\\xb2~q\\xdeu\\x9fd8vO\\xce;\\xce\\xb3\\xec\\x8e\\xbb\\xad=}\\xa5/O6\\x90\\x037\\xe1\\xd9?8\\xef:\\xcf\\xb2\\x1c;\\'\\xe7\\x1d\\xe7Y\\xf6Cu\\xa7\\xaf\\xb4\\x97\\xa7\\x9bH\\x01\\x9b\\xf0\\xec\\x9f\\x9cw\\x9dg\\xd9\\x0e\\x1d\\x93\\xf3\\x8e\\xf3\\xac\\xfb!\\xba\\xd3\\xd7\\xdaK\\xd3\\xcd\\xa4\\x00\\xcd\\xf8vO\\xce;\\xce\\xb3\\xec\\x87\\x0e\\xc9\\xf9\\xc7y\\xd6}\\x90\\xddi\\xeb\\xed%\\xe9\\xe6\\xd2\\x00f\\xfc;\\'\\xe7\\x1d\\xe7Y\\xf6C\\x87d\\xfc\\xe3\\xbc\\xeb>\\xc8n\\xb4\\xf5\\xf6\\x92\\xf4\\xf3i\\x003~\\x1d\\x93\\xf3\\x8e\\xf3\\xac\\xfb!\\xc3\\xb2~q\\xdeu\\x9fd7Zz\\xfbIzy\\xb4\\x80\\x19\\xbf\\x0e\\xc9\\xf9\\xc7y\\xd6}\\x90\\xe1\\xd9?8\\xef:\\xcf\\xb2\\x1b\\xad=}\\xa4\\xbd<\\xdc\\x9f\\xda[#\\xcb\\xbb\"[7\\x1a\\xa69\\xdbl\\xa6\\xe6\\xce5\\xb5T%$\\xff\\x00\\xf4k\\x06$\\xa2J\\xa2!De\\xba\\xc3\\xa6\\xd9\\xe8\\x8eDD\\xa5n\\x17\\xb0\\xb2_Hvn\\xc02X\\x152s\\xad\\xa2>s6\\x8b\\x92\\xb6\\x85\\xcbJ\\xc8\\xc9\\x15q\\x08\\xcdL\\xc1e\\'\\xfc\\x9aS\\xbcjY\\x11\\x16\\xabQ\\xef\\x1a\\x8c\\xb7\\x8eJ\\xdfg\\xf1r\\x06\\x19f\\xd2\\xca\\xc6\\xc9\\x96^D\\x96\\x9b\\x98\\xea\\x1dKn\\xa0\\xf7\\x90\\xe2II=\\x14\\x93\\xe6J.d~\\xe1\\xee\\xe1\\xd9?8\\xef:\\xcf\\xb2\\x1b\\xad=}\\xa4\\xbd<\\xda@\\x0c\\xdf\\x87d\\xfc\\xe3\\xbc\\xeb>\\xc8p\\xec\\x9f\\x9cw\\x9dg\\xd9\\r\\xd6\\x9e\\xbe\\xd2^\\x9em \\x06o\\xc3\\xb2~q\\xdeu\\x9fd8vO\\xce;\\xce\\xb3\\xec\\x86\\xebO_i/O6\\x90\\x037\\xe1\\xd9?8\\xef:\\xcf\\xb2\\x1c;\\'\\xe7\\x1d\\xe7Y\\xf6Cu\\xa7\\xaf\\xb4\\x97\\xa7\\x9bH\\x01\\x9b\\xf0\\xec\\x9f\\x9cw\\x9dg\\xd9\\x0e\\x1d\\x93\\xf3\\x8e\\xf3\\xac\\xfb!\\xba\\xd3\\xd7\\xdaK\\xd3\\xcd\\xa4\\x00\\xcd\\xf8vO\\xce;\\xce\\xb3\\xec\\x87\\x0e\\xc9\\xf9\\xc7y\\xd6}\\x90\\xddi\\xeb\\xed%\\xe9\\xe6\\xd2\\x00f\\xfc;\\'\\xe7\\x1d\\xe7Y\\xf6C\\x87d\\xfc\\xe3\\xbc\\xeb>\\xc8n\\xb4\\xf5\\xf6\\x92\\xf4\\xf3i\\x003~\\x1d\\x93\\xf3\\x8e\\xf3\\xac\\xfb!\\xc3\\xb2~q\\xdeu\\x9fd7Zz\\xfbIzy\\xb4\\x80\\x19\\xc5\"&\\xd5gUQN\\xe2\\xc6li1e)\\xc6\\xa6?\\xde\\'T\\x1b[\\xa6\\\\\\x8bC\\xf6\\x8f\\xff\\x00\\x91\\xa3\\x8f>6\\x16\\xcab/{\\xc5\\xfe\\xdfe\\x00\\x00y\\xd0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x19\\xe7hB\\xd7b\\xd9i\\x1a\\x89%\\xe8G\\xcd^\\xe2\\xf6\\x88hc=\\xed\\x05\\xcbc\\x19o4\\xa7\\xfd\\x8c\\xf9\\xa8\\xb5\"\\xf6\\x93\\xef \\x1a\\x10\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xf3YV\\xc4\\xb8\\xae\\x95\\x02|ff\\xc1\\x94\\xd2\\xd8\\x91\\x1aB\\tm\\xba\\xda\\x88\\xd2\\xa4)\\'\\xc9I23##\\xe4dc\\xd2\\x00(\\xb8U\\x94\\x9cn\\xfd\\xec\"\\xd6S\\xd3\\\\b1\\xcd\\xa8\\x9f)F\\xa7e\\xc2%\\x92\\x14\\x85\\xac\\xcc\\xcdn\\xb0\\xa56\\x85,\\xf9\\xa9.\\xb2\\xa33R\\x96b\\xf4(\\x1bb\\xff\\x00\\xd2*i\\xf2\\x96\\x8bI8\\xfd\\xa4y&\\xa2.g\\x19\\xc5\\x94y)>Fzw/-z{\\x8dM\\xa3S-5+\\xf8\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x8b\\xca\\xbf\\x06.?3{\\xfd\\x06*\\x98\\xe7\\xe0\\xf5_\\xe6\\xad\\x7f\\xa0\\x85\\xaf*\\xfc\\x18\\xb8\\xfc\\xcd\\xef\\xf4\\x18\\xaac\\x9f\\x83\\xd5\\x7f\\x9a\\xb5\\xfe\\x82\\x1fO\\xc3\\xff\\x00\\x0c\\xfc\\xfe\\xc9W\\xedH\\x80\\x00\\xea\\xe6\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\n9mz\\x98\\xf6\\xda{.\\xf4i\\xdc@X\\xf7\\x12zOv\\x8fE\\xf4oI\\xf4}\\xcd\\xed\\xfd\\xee\\xf3\\x7f\\x9e\\x9b\\x9ai\\xff\\x00\\x16\\xbc\\x85\\xe0q\\xb6\\xd9\\xff\\x00\\xfe\\xaf\\xf6\\x81\\xff\\x00\\xf8*\\x7f\\xfez\\xc6w\\xb3\\x9c\\x16\\xa7f4]\\x93\\xb3lq\\x12\\xab\\xf2<\\x9alZ\\xdb\\x99~\\x98\\xf3\\x9e\\x9f\\x1d\\xe8\\xaa56\\xe2T\\xa3I\\xa5;\\xa5\\xbaZh\\x9d\\x0bM4!\\xe4\\xdbLU11\\xf9\\xa45gj\\xed\\xb7j\\xd0v\\x1f\\xb2\\xdb\\xfc\\xe2\\xca\\x14\\x8b\\x18U\\r!\\xc5\\xc5\\x8ai\\'\\x1c\\xdfq\\r\\x91\\x11\\xa8\\xc8\\x8b\\x9a\\xcb_\\xc9\\xaf\\xbc]\"\\xbeR\\xa32\\xf1\\x16\\xe98\\x82Y\\x11\\xfcZ\\x96\\xa3\\xfc\\xa7\\xda\\xcc\\\\\\x176\\xd8\\x8e\\xdc2\\xbc\\xee\\xe5\\xa9\\x1bo\\x85\\x91\\xbf\\n4\\x1b\\x0bU\\xb5\"\\x1b\\x08\\x96\\xd2\\x1bb_yu\\x8e\\x10\\x00\\x00\\xf0\\x80\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcbv\\xe1y_{\\xb0\\xfc\\xd9\\xda\\xd9\\xd1\\xe7\\xb7\\x1d\\xa7\\xa2<\\xa8\\xee%\\xc2m\\xe6\\xdc$8\\xda\\xb4\\xf7)*###\\xe6FCR\\x1cQ\\xdb\\x93\\r\\xca6R\\xcd\\xae\\xd3\\xb0G\\x15\\xf0-\\xc3H\\x81\\x98Rk\\xab\\x12\\x0b\\xefZ\\x99\\xbb\\xff\\x00\\n\\xc8\\xf7PkI\\x91\\x91\\xeer2S\\x9a\\x87d\\xc8\\xbc\\xae\\x89m\\x12\\xad\\xe9\\xd1\\x9a\\xb3\\x98\\x87\\x1d\\x8f\\rn\\xa4\\x9ey\\x08\\xd3}IF\\xba\\x9aS\\xbc\\x9dL\\x8bB\\xdeN\\xbe\\xf2\\x1e\\xe1\\x83\\xf6W\\xd9~GGI+<\\xda,\\x87,6\\x95\\x946\\x87&\\xaeBt:\\xf8\\xa4f\\xa6a\\xb6\\x9f\\xfd\\xb2-\\xed\\xe5%$\\x92\\xde=\\x0c\\x8fp\\x8co\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x002\\xdd\\xb7\\xe4U\\x97\\xbb\\x07\\xda;\\xd5\\xb3b\\xd9&\\x05|\\xe8\\xcf\\x93\\x0e\\x92\\xc9\\xa9\\r%D\\xb6\\x97\\xbaz\\xa5IQs.FCC\\x97}[\\x02\\xd6\\xbe\\xb2L\\xf8\\xecX\\xd8\\x13\\x87\\x12#\\x8e\\x91:\\xf96D\\xa7\\r\\t\\xf7\\xa8\\x92FZ\\x99r-\\xe2\\xd7\\xdeC\\x90{q\\xe0\\xd9&\\xcf \\xddm;\\x07q\\xef\\x83\\xad\\xa1\\x1dVgJ\\xd9\\x97u22\\x93\\xdd\\xb7+t\\xc8\\xf4q\\x04d\\x9d\\xf2\\xd4\\xc8\\xb7yn\\xf7\\x9b\\xdaoe=\\x9b\\xe4\\x91\\xea\\xe5m/h\\xef\\xb9;h\\xb9K(5\\x93\\xe8\\xdd:\\xc8\\x1a\\xef\\xb5\\r\\xb4\\xff\\x00\\xed\\x96\\xa7\\xbe\\xa4\\x96\\x9e\\xd1\\x91\\x19o$\\xcc\\xc3\\xa0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x04^U\\xf81q\\xf9\\x9b\\xdf\\xe81T\\xc7?\\x07\\xaa\\xff\\x005k\\xfd\\x04-yW\\xe0\\xc5\\xc7\\xe6o\\x7f\\xa0\\xc6iA\\x80\\xd0\\xbdEZ\\xe2\\xe0\\xea\\xb5FmF}\\xf3\\x9c\\xcc\\xd2_\\xf5\\x0f\\xad\\xe1b\\x99\\xc2\\x9c\\xd3my_\\xe1\\xf3\\x82m\\x97U\\xc4\\x05w\\xd5\\xee?\\xf2\\x0f\\xdb9\\xf5\\x83\\xd5\\xee?\\xf2\\x0f\\xdb9\\xf5\\x87\\xa6\\xd8]S\\xe9\\x1e\\xeez,@+\\xbe\\xafq\\xff\\x00\\x90~\\xd9\\xcf\\xac\\x1e\\xafq\\xff\\x00\\x90~\\xd9\\xcf\\xac\\x16\\xc2\\xea\\x9fH\\xf74X\\x80W}^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fX=^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fX-\\x85\\xd5>\\x91\\xeeh\\xb1\\x00\\xae\\xfa\\xbd\\xc7\\xfeA\\xfbg>\\xb0z\\xbd\\xc7\\xfeA\\xfbg>\\xb0[\\x0b\\xaa}#\\xdc\\xd1b\\x01]\\xf5{\\x8f\\xfc\\x83\\xf6\\xce}`\\xf5{\\x8f\\xfc\\x83\\xf6\\xce}`\\xb6\\x17T\\xfaG\\xb9\\xa2\\xc4\\x02\\xbb\\xea\\xf7\\x1f\\xf9\\x07\\xed\\x9c\\xfa\\xc1\\xea\\xf7\\x1f\\xf9\\x07\\xed\\x9c\\xfa\\xc1l.\\xa9\\xf4\\x8fsG\\xa6n\\x17\\x8fY\\\\H\\xb6\\x97CY*\\xd6D\\x05U\\xbd9\\xe8m\\xad\\xf7a\\xa9[\\xca\\x8c\\xa5\\x99o\\x1bF\\xa3\\xd4\\xdb3\\xdd3\\xe7\\xa0\\xfc\\xcb\\x01\\xc6\\n\\x1d$B\\xc7*J-\\x1a\\xd2\\xedS\\x1e\\x82\\xd6\\xe5z\\xd2[\\xa9S\\t\\xdd\\xd1\\xa3\"3\"4i\\xa1\\x0f\\xcb\\xd5\\xee?\\xf2\\x0f\\xdb9\\xf5\\x83\\xd5\\xee?\\xf2\\x0f\\xdb9\\xf5\\x86r`\\xf3\\x9fH\\xf7]9\\xbc9\\x0e\\xc6\\xf0\\x0c\\xba\\xceE\\x8d\\xee\\r\\x8d\\xddXHA6\\xf4\\xbb\\x1a\\x88\\xef\\xba\\xea\\x0bM\\x12\\xa5\\xad\\x06fE\\xa1r3\\xf8\\x88z\\xb2}\\x97\\xe1\\xb9\\xb4\\x98\\x922,J\\x8a\\xfd\\xf8i\\xdd\\x8c\\xed\\x9dk2T\\xc1k\\xae\\x885\\xa4\\xcd%\\xfdC\\xf4\\xf5{\\x8f\\xfc\\x83\\xf6\\xce}`\\xf5{\\x8f\\xfc\\x83\\xf6\\xce}`\\xc9\\x81\\xce}#\\xdc\\xd3\\x9b\\xd7\\x1b\\x0e\\xa0\\x87\\x90\\xaa\\xfa=\\x1dk\\x17\\x8a\\x8aP\\x95f\\xdcF\\xd3$\\xe3\\x91\\x91\\x93&\\xe9\\x16\\xf6\\xe1\\x19\\x11\\x92u\\xd3\\x91r\\x1fx\\xe6+K\\x87\\xd7\\xaa\\x05\\r<\\nH*uO\\x1cj\\xe8\\xa8\\x8e\\xd1\\xb8\\xa3\\xd5K\\xddA\\x11o\\x19\\xf33\\xf7\\x98\\xf0\\xfa\\xbd\\xc7\\xfeA\\xfbg>\\xb0z\\xbd\\xc7\\xfeA\\xfbg>\\xb0\\xb9py\\xcf\\xa4{\\x9asX\\x80W}^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fX=^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fX[auO\\xa4{\\xa6\\x8b\\x10\\n\\xef\\xab\\xdc\\x7f\\xe4\\x1f\\xb6s\\xeb\\x07\\xab\\xdc\\x7f\\xe4\\x1f\\xb6s\\xeb\\x05\\xb0\\xba\\xa7\\xd2=\\xcd\\x16 \\x15\\xdfW\\xb8\\xff\\x00\\xc8?l\\xe7\\xd6\\x0fW\\xb8\\xff\\x00\\xc8?l\\xe7\\xd6\\x0bauO\\xa4{\\x9a,@+\\xbe\\xafq\\xff\\x00\\x90~\\xd9\\xcf\\xac\\x1e\\xafq\\xff\\x00\\x90~\\xd9\\xcf\\xac\\x16\\xc2\\xea\\x9fH\\xf74X\\x80W}^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fX=^\\xe3\\xff\\x00 \\xfd\\xb3\\x9fX-\\x85\\xd5>\\x91\\xeeh\\xb1\\x00\\xae\\xfa\\xbd\\xc7\\xfeA\\xfbg>\\xb0z\\xbd\\xc7\\xfeA\\xfbg>\\xb0[\\x0b\\xaa}#\\xdc\\xd1 \\xcf\\xf4\\x8b\\x8f\\xfeg7\\xfc\\xd9\\x1a\\x00\\xcbh\\xf1\\xca\\xea-\\xa3\\xd2*\\x0c~\\xe0\\xdd\\x850\\x97\\xed\\xa9Z\\xe8l\\xe9\\xef3\\xfccR\\x1e\\x0f\\x19k\\xd1\\x97\\x85\\xbe\\xf2\\xe9\\xf0\\x80\\x00\\x07\\xcf\\x00\\x00\\x01R\\xda\\xae\\xa7\\x83\\xccN\\xf2\\x92K~*\\x14hQ\\xa4\\xcd\\'!\\xb22\\xd4\\xb9\\xf3#2\\x15\\xfe\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0\\xb0mO\\xf0*O\\xe71?\\xf2Z\\x1f\\xc1\\xf6<=uQ\\x81\\x19f\\xda\\xcf\\xd2\\x92fb\"\\xc8\\x0e\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0p\\x1d\\x1f\\xc8\\xd5\\xd49\\xf5\\x84\\xf8\\x0e\\xdbl^\\xa9\\xf5c5\\\\\\xd0\\x1c\\x07G\\xf25u\\x0e}`\\xe0:?\\x91\\xab\\xa8s\\xeb\\t\\xf0\\r\\xb6/T\\xfa\\x99\\xaa\\xe6\\x80\\xe0:?\\x91\\xab\\xa8s\\xeb\\x07\\x01\\xd1\\xfc\\x8d]C\\x9fXO\\x80m\\xb1z\\xa7\\xd4\\xcdW4\\x07\\x01\\xd1\\xfc\\x8d]C\\x9fX8\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc2|\\x03m\\x8b\\xd5>\\xa6j\\xb9\\xa08\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc1\\xc0t\\x7f#WP\\xe7\\xd6\\x13\\xe0\\x1bl^\\xa9\\xf53U\\xcd\\x01\\xc0t\\x7f#WP\\xe7\\xd6\\x0e\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0\\xc6\\xf6\\xb1\\xda[/\\xc3\\xf6\\xdc\\x8d\\x9a\\xe1{.<\\xfe\\xcc\\xb1\\xf4\\xe4O8\\x9b\\xf6\\xab\\xd4\\x86=!L\\xa8\\x89.4d\\xa3%\\x12=\\xcb\\xd4\\xf7\\xfd\\xdc\\xb5\\x16\\xbd\\x99v\\x97\\xc36\\x81\\xb2*\\xdd\\xa0\\xd8X\\xc6\\xc3j\\xe5<\\xe47\\x91\\x90\\xcbj7\\xa3\\xc9B\\x94\\x95\\xb4kR\\x89&z\\xa0\\xcc\\xb4>e\\xcfB\\xe6E\\xca\\xb0\\xf9\\x93\\xb4\\\\N\\x1d\\x1d}\\xd3\\xf9=3\\x14\\xd6\\x0e\\x13P\\xec\\\\\\xb0i1\\xe4\\xac\\xc9FIm\\xc3V\\xea\\xcc\\xc9\\x0b=\\x08\\xcc\\xf4J\\xbf\\x11\\x8af\\xd3v\\xf3O\\x8d\\xec?/\\xda\\x06#cQ\\x987G\\x11\\xc7\\x93\\xe83\\x90\\xfcu\\xb8\\x9d=\\x85-\\xb3==\\xe5\\xa9{\\xc6\\xa7\\xc4W\\x11y\\xae}S5\\\\\\xd7^\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0p\\x1d\\x1f\\xc8\\xd5\\xd49\\xf5\\x84%v\\xd81\\xa4P@~\\xe3 \\xa4\\xac\\xb9r\\x8d\\xbb\\xc9\\x15\\xd2,Ze\\xc6\\xa3\\x9a\\tJt\\xd2\\xb5\\x11\\xa5\\xa232\\xdfW\\xb2_\\x19\\x88\\x8c\\x03\\xb4\\x0e;\\x91\\xec\\xd7\\x1b\\xca\\xb2k\\x1a,-\\xdb\\xa6$>\\xd4)W\\xf1d7\\xba\\xcb\\x86\\x87\\r\\xb7\\xd2\\xa2C\\xa4\\x92\\xdd5\\x1a~\\xf7|\\x88\\xf40\\xdek\\xe1\\x9e}L\\xd5s\\\\\\xb8\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc1\\xc0t\\x7f#WP\\xe7\\xd6\\x1fMg\\xd8\\xc3\\xf8\\xb1\\xe4\\xcd\\xe4u.cd\\x93Y\\xdc\"sG\\x0c\\x92G\\xa1\\x9f}\\xbd\\xb9\\xa6\\xbc\\xb5\\xd7\\xde?,Kh\\xf8\\x9e~\\xa9I\\xc62j\\x8c\\x8b\\xd1I\\n|\\xea\\xa77$\\x9b%\\xeah5\\x1a\\x14z\\x12\\xb7U\\xa7\\xe3\\xd0\\xff\\x00\\x10\\xd6\\xdf\\x13\\xae}L\\xd5s}\\xf0\\x1d\\x1f\\xc8\\xd5\\xd49\\xf5\\x83\\x80\\xe8\\xfeF\\xae\\xa1\\xcf\\xac\\'\\xc0]\\xb6/T\\xfa\\x99\\xaa\\xe6\\x80\\xe0:?\\x91\\xab\\xa8s\\xeb\\x07\\x01\\xd1\\xfc\\x8d]C\\x9fXO\\x80m\\xb1z\\xa7\\xd4\\xcdW4\\x07\\x01\\xd1\\xfc\\x8d]C\\x9fX8\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc2|\\x03m\\x8b\\xd5>\\xa6j\\xb9\\xa08\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc1\\xc0t\\x7f#WP\\xe7\\xd6\\x13\\xe0\\x1bl^\\xa9\\xf53U\\xcd\\x01\\xc0t\\x7f#WP\\xe7\\xd6\\x0e\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0\\x9f\\x00\\xdbb\\xf5O\\xa9\\x9a\\xaej6m\\x87T\\xd7\\xe1\\x97\\xf2\\xa3Gq\\x99\\x0cW\\xc8u\\xb7\\x13!\\xcdR\\xa4\\xb6\\xa3#/k\\xe22\\x1b#\\\\\\xdaG\\xf6Hf\\x9bC\\xfc\\x00\\xc9\\xbfFI\\xfd\\xd2\\x86\\x96\\xcf\\xf2H\\xfe\\xc9\\x0f7\\x8b\\xaa\\xaa\\xf0\\xa8\\x9a\\xa6\\xfa\\xcf\\xd9\\xb8\\x99\\x98\\xd5\\xf6\\x00\\x03\\xe5\\x00\\x00\\x00\\x0c~\\x8f\\x17\\xad\\xba+YsYq\\xf9\\n\\xb7\\xb0I\\xac\\xdfp\\xb9&[\\xa9IhJ\\xd3B\"\"\\xff\\x00\\xb0\\xd8\\x06i\\x87\\xff\\x002\\xb3\\xfd1e\\xff\\x00\\x9a\\xf0\\xfa~\\x12\\xaa\\xa9\\xa2\\xb9\\xa6m\\xc3\\xeeL\\xccF\\x8f\\x9e\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0p\\x1d\\x1f\\xc8\\xd5\\xd49\\xf5\\x84\\xf8\\x0f^\\xdb\\x17\\xaa}X\\xcdW4\\x07\\x01\\xd1\\xfc\\x8d]C\\x9fX8\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc2|\\x03m\\x8b\\xd5>\\xa6j\\xb9\\xa08\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc1\\xc0t\\x7f#WP\\xe7\\xd6\\x13\\xe0\\x1bl^\\xa9\\xf53U\\xcd\\x01\\xc0t\\x7f#WP\\xe7\\xd6\\x0e\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0\\x9f\\x00\\xdbb\\xf5O\\xa9\\x9a\\xaeh\\x0e\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0p\\x1d\\x1f\\xc8\\xd5\\xd49\\xf5\\x84\\xf8\\x06\\xdb\\x17\\xaa}L\\xd5s@p\\x1d\\x1f\\xc8\\xd5\\xd49\\xf5\\x83\\x80\\xe8\\xfeF\\xae\\xa1\\xcf\\xac\\'\\xc06\\xd8\\xbdS\\xeaf\\xab\\x9a\\x03\\x80\\xe8\\xfeF\\xae\\xa1\\xcf\\xac\\x1c\\x07G\\xf25u\\x0e}a\\\\\\xdb\\xc6\\xd9`\\xec#gR\\xb2\\x99\\xb5\\xf2-\\xdc\\'\\xd9\\x87\\x12\\xba*\\x89+\\x93!\\xd5\\x92\\x1bF\\xf2\\xb9$\\xb5=MG\\xee\">Fz\\x11\\xf80]\\xae^9\\x8c\\xdd\\xdc\\xedO\\x12\\x8f\\xb2(\\xf5\\x8f6\\x83~\\xd2\\xfa4\\x98\\xae!z\\x11/\\xd2\\x13\\xba\\x84\\xfbJJt?\\x8c\\xc8\\x867\\x9a\\xe2r\\xe7\\x9e\\xe6j\\xb9\\xae\\\\\\x07G\\xf25u\\x0e}`\\xe0:?\\x91\\xab\\xa8s\\xeb\\x0fL\\xec\\xba\\x8a\\xae\\xdd\\xba\\xa9\\xb7U\\xd1-\\x1c\\x8c\\xb9\\x88\\x84\\xfc\\xb6\\xd0\\xfa\\x98G\\xdf\\xbaH3\\xde4\\'\\xe3V\\x9a\\x17\\xc6b\\xbc\\xd6\\xdc\\xf6n\\xf9\\xb8M\\xed\\x07\\x16p\\xda\\x8e\\x99K\\xdc\\xba\\x8c{\\x8c\\xa8\\x88\\xd2\\xe1\\xfb|\\x90ddd\\xafq\\xea_\\x8c]\\xe2\\xb8\\xff\\x00\\x9c\\xfa\\x99\\xaa\\xe6\\x98\\xe0:?\\x91\\xab\\xa8s\\xeb\\x07\\x01\\xd1\\xfc\\x8d]C\\x9fX~^\\xb2\\xf1\\x0e\\x1f\\x87}\\xc5T\\x9f\\x01\\xcdt\\xa3\\xc5\\xb3\\xf8E\\x9fF}\\xc33\"B\\x1d\\xde\\xddR\\x8c\\xc8\\xf4\"3>F\"\\xdb\\xdb\\xae\\xcd]\\x8c\\xc4\\x84m\\x0b\\x15\\\\w\\xde8\\xec\\xba\\x9b\\xb8\\xc6\\x87\\x1d-5BO\\x7fCW2\\xe4\\\\\\xf9\\x90o\\x15\\xc7\\xfc\\xe7\\xd4\\xcdW4\\xcf\\x01\\xd1\\xfc\\x8d]C\\x9fX8\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc3\\xf3\\xcav\\x95\\x88`\\xd2\"1\\x92eT\\x98\\xfb\\xf3?\\x9b7ib\\xcce?\\xcfO`\\x96\\xa25s\\xfcC\\xe7%\\xdan\\x1d\\x86:\\xcby\\x06YGD\\xe3\\xec\\x9c\\x96\\x91ed\\xccsq\\xa22#q$\\xb5\\x16\\xa9#2\\xd5E\\xcb\\x99\\x06\\xf1\\\\\\x7f\\xce}L\\xd5s~\\xdc\\x07G\\xf25u\\x0e}`\\xe0:?\\x91\\xab\\xa8s\\xeb\\x0f\\xe5\\x16\\xd0\\xf1\\\\\\xa2\\x0c\\xe9\\xb4\\xd95=\\xbc8)%\\xcb\\x91\\x02{O\\xb7\\x1d&\\x8e\\xf0\\x8d\\xc5%FI#A\\x92\\x88\\xcfN\\\\\\xfd\\xc2N\\x96\\xee\\xbb$\\xaa\\x8biQ>-\\xa5l\\xa4\\x13\\xb1\\xe6By/2\\xf2\\x0f\\xdc\\xa4-&d\\xa2\\xfc\\xa4b\\xc6>$\\xf0\\xae}L\\xd5sF\\xf0\\x1d\\x1f\\xc8\\xd5\\xd49\\xf5\\x83\\x80\\xe8\\xfeF\\xae\\xa1\\xcf\\xac\\'\\xc0]\\xb6/T\\xfa\\x99\\xaa\\xe6\\x80\\xe0:?\\x91\\xab\\xa8s\\xeb\\x07\\x01\\xd1\\xfc\\x8d]C\\x9fXO\\x80m\\xb1z\\xa7\\xd4\\xcdW4\\x07\\x01\\xd1\\xfc\\x8d]C\\x9fX8\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc2|\\x03m\\x8b\\xd5>\\xa6j\\xb9\\xa08\\x0e\\x8f\\xe4j\\xea\\x1c\\xfa\\xc1\\xc0t\\x7f#WP\\xe7\\xd6\\x13\\xe0\\x1bl^\\xa9\\xf53U\\xcd\\x01\\xc0t\\x7f#WP\\xe7\\xd6\\x0e\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0\\x9f\\x00\\xdbb\\xf5O\\xa9\\x9a\\xaeh\\x0e\\x03\\xa3\\xf9\\x1a\\xba\\x87>\\xb0p\\x1d\\x1f\\xc8\\xd5\\xd49\\xf5\\x84\\xf8\\x06\\xdb\\x17\\xaa}L\\xd5sV\\xab\\xe8aQgX\\xd1\\xc1mlw\\xcb\\x90\\x87\\x0b\\xbeZ\\x89DL\\xa8\\xc8\\x8c\\x8c\\xcc\\xbd\\xe3S\\x19\\xe3\\xff\\x00\\x87\\x18\\xa7\\xf7\\xb2\\x7fp\\xa1\\xa1\\x8f\\x0f\\x8c\\x99\\xaah\\x99\\x9b\\xe9\\xf7\\x96\\xefx\\x8b\\xa2\\xf2\\xaf\\xc1\\x8b\\x8f\\xcc\\xde\\xff\\x00A\\x8a\\xa69\\xf8=W\\xf9\\xab_\\xe8!k\\xca\\xbf\\x06.?3{\\xfd\\x06*\\x98\\xe7\\xe0\\xf5_\\xe6\\xad\\x7f\\xa0\\x86\\xfc?\\xf0\\xcf\\xcf\\xec\\x95~\\xd4\\x88\\x0e{\\xed9\\xb4|S6\\xec\\xd9\\xb6Z\\xfc\\x7f#\\xab\\xbb\\x9dSK!\\xab\\x08\\xd0%\\xa1\\xe7\",\\xc9I$\\xba\\x94\\x99\\x9a\\x0fT,\\xb4=9\\xa4\\xff\\x00\\x10\\xcb\\xb0m\\xab5\\xb43\\xdaf\\xd6I\\x04v\\x1b7\\xc6],F\\x8a\\xd1\\x87\\x10\\x840\\xa8&\\xff\\x00\\xc2jA\\x9aME(\\xd1\\xb8\\x93I\\x91\\x93M\\x99jF\\xa31\\x9a\\xb1b*\\xca\\xc5\\x9d\\xaa\\x03\\x9d\\xaa\\xf6\\xfb\\x98\\xe2\\xf7\\xb8\\xa3\\xb9\\xe4Z\\x03\\xa0\\xca1\\xf9\\xd7q\\x8a\\x89\\xb7\\xc9\\xfa\\xf5Ea\\xb9\\x0bi\\xc58\\xb3\\'\\x88\\xdbY\\xe8\\xa4\\xa5\\xbfi:i\\xa71\\xe6\\xc6\\xb6\\xf1\\xb4f\\xa3l\\xe3&\\xca\\xaa\\xb1\\xb8\\xb8\\x86\\x7f-\\x88Pb\\xd7w\\xea\\x9fV\\xb9L\\xad\\xd8j}j^\\xe3\\xe4\\xa2JR\\xb2J[4\\x9a\\xcbMt\\x17kIgI\\x00\\xe5\\xda^\\xd8r\\xd9cgP/\\xaac&\\xfa}\\xbc\\xca\\xac\\xb50\\x92\\xb2f\\x9f\\xb8\\x93\\xe8D\\xee\\x8aQ\\x9a\\x10\\xb9OE\"5\\x19\\xfb\\x0bW\\xc6Z\\x97\\x82\\x1e\\xd1,\\xb6\\xa5\\xb6\\xfd\\x8f_Hb+4\\xa7\\x95d\\xd0\\xe9\\x17\\x1d\\n%H\\x84\\xc5{\\xac\\x93\\xce\\x19\\xa8\\xf55\\xba\\xdb\\xc6FD\\x92\\xdd\\xdc\\xe5\\xae\\xa6smL\\xf0\\xf2\\xfb{\\x96u\\x88\\x0eA\\xb7\\xed\\x91\\x96L\\x9dyo\\x8b\\xe3\\xcd\\xdb\\xe3\\xd5\\x96/\\xc1b\\x99\\xacr\\xe2L\\xeb40\\xf1\\xb4\\xeb\\x8dMe\\x93\\x8a\\xd9\\xa8\\xd2\\xb3J\\x0f{\\xdcD\\xa5$\\xcc\\xc8\\xa4v\\xdb\\xb5\\x0c\\xebiX>\\xdbba\\xf0\\xe8!\\xe1x\\xc5\\\\\\xfa\\x9b)WI}S\\'H(=\\xec\\x84\\xb0HQ%\\xae\\xed\\x0e\\xa4\\x88\\xd6J\\xdeW-\\x08\\xb9\\x89\\xb6\\xa6\\xd3mK:\\xb4\\x07\\'z\\xf1\\xcej\\xb19uxLLq\\xa8\\xf8&\\x0bYyf\\xe6DO)s{\\xd8\\xabq-0M\\xad$\\x82$0\\xad\\\\V\\xf1o(\\x8bt\\xb9\\x98Z\\xf6\\xb2\\xc9gN\\xa9\\xa5\\xa0f\\x13\\x16Lc\\xd5\\xb6\\xd6\\xf3\\xa6\\xe3V\\xd6M\\xad\\xf9l\\xf7\\x88a\\xb6`\\xa5f\\xc6\\x89-\\xe3S\\x8b?\\xbe\"I/uF.\\xda\\x9f\\x89gX\\x80\\xe1l\\xfa\\xfa6\\xd9\\xf6\\x99\\xb2;\\xbc\\xbfdV\\x993\\xf2\\xf1;w\\x1e\\xc4\\x89\\x86\\xd2\\xfcw\\xdb\\x94\\xc3}\\xe9&R\\xd82F\\xa93I\\x9e\\x8b\\xddq\\'\\xbb\\xef\\xd2\\xdf\\xb3\\xad\\xa9\\xda\\xec\\xfb\\xb3\\x0e2P2\\xba(\\xb7Q\\xee%THc*b|\\xc7\\xe1,\\x9eyI\\xaeC\\r\\x92d>\\xfb)6\\xdb\\xd3\\x97\\xb2\\x93Qj\\x92-s\\x18\\xd13:i\\xff\\x00\\x9e\\xebg]\\x00\\xe4\\xe7;[\\xe5Sv;M\\x921[OQ8\\xf2i\\x18\\xe5\\xdd\\xdd\\x94I\\x8a\\xab\\xac&w\\xff\\x00\\xda\\x96\\xcf\\xb0\\xfa\\x1bp\\xc9\\xb2\"p\\xd1\\xb8nh\\xb3-\\x04\\xd6\\xd0\\xbbKdX\\xdd\\xb6+\\x8aV\\xb9G+$\\x9fHW\\xb6\\x170j,\\xaek\\x89\\x858m\\xb7\\xe8\\xec\\xc3J\\x9dQ8\\xa4\\xac\\xc9kZR\\x92O\\xbdF\\xa2!\\xad\\xb5\\x16\\xbaZ].\\x03;\\xd8F\\xd1\\xed\\xf6\\xa1\\x81\\x95\\xad\\xed\\x1b\\xd46\\xacL~\\x13\\xcd9\\x16Df\\xe4wj\\xd12\\x19D\\x84!\\xd2m\\xc4\\x9aTD\\xb4\\x91\\x96\\xa6G\\xae\\x9a\\x8e{\\xd8F\\xd9d5\\xb5,\\x97f\\x18\\xba\\xebW\\x7f+=\\xc8\\xad\\xad\\xde\\xb1\\xdeR\"W70\\xc9Im)RMo\\xb8jI$\\xb5=\\xc4\\xea\\xb5\\x11\\x96\\x84vqb-\\xe6Y\\xd9\\x009n\\x7fh\\xcd\\xa3WPe\\xd9\\x9b\\x901\\x85b\\x18\\xbea#\\x1e\\x95\\x05-H\\xf4\\xf9Q\\x91`\\x98\\xdd\\xf2\\x1c\\xef7\\x1bZR\\xe2\\x0c\\xd2iY(\\xd2\\xa3#F\\xa4\\x92\\x96\\xcav\\xeb\\xb4I\\xaa\\xda]\\xf6\\x19S\\x8e\\xbb\\x89l\\xfeK\\xd0\\xe6G\\xb67\\xfd:\\xd5\\xd8\\xec\\xa5\\xe9D\\xca\\xd0\\xa2C\\x04\\x94\\xafu&\\xa4\\xb9\\xbc\\xa2=wH6\\xb4\\x96tp\\x0e^\\xc8\\xbb^ZP\\xd2\\xe7\\x0e\\xb3K\\x1e\\xda\\xdd\\xb4TM\\xc3\\xeb\\x98mhr\\xd6-\\x8bDl\\x92\\xd3\\xbez\\xad\\x0bnN\\xf9\\xa4\\xc8\\xb7[.E\\xf1\\xd6\\xbbG\\xed\\xa9[V\\xd9\\x1e\\xd4\\xe1\\xe3\\xc5\\x12N\\x17\\x07\\x10\\xad\\xb0rq\\xa1]\\xfa\\xe6Lu/4\\xd9\\x1e\\xf6\\xe9%1\\xc9*Qn\\xeb\\xab\\xa8\\xe6Zhy\\x9cjb&c\\xf3\\xf2\\xc5\\xa5\\xd8\\xc09\\xdfl\\xdd\\xa3\\xaeq\\x8d\\xa7\\xbb\\x83\\xe2\\xac\\xc5f]}s66\\x16\\x13\\xa8l\\xed\\xd0F\\xf2\\x96M0\\x96\\xa0\\xa0\\xd4\\x832mJ5\\xadDZ\\x19\\x12R\\xa3\\xde\\xd3\\xc9M\\xda\\';\\xda\\x1bxN9\\x8dc\\x10q\\xfc\\xe6\\xe2\\x0c\\xcbKB\\xc9\\x98\\x94\\x98\\xb5\\xf1#H(\\xe6\\xeaY2i\\xe5\\xf7\\xcbRM\\xb4\\xabp\\xc9\\'\\xaa\\xbd\\xc3[Zob\\xce\\x93\\x01\\xc5\\xfb\\x1e\\xdaVg\\x8c\\xa6F\\x1fV\\xc5\\x02s|\\xafhy*\\x1e\\x9d5/.\\xb6)\\xc6>\\xf5\\xf3CiR\\\\p\\xd4fD\\x84\\xef$\\xf4\\xd4\\xcc\\xf9\\x18\\x96Ok\\xbc\\xb2\\x0e)W\\x02|*\\x93\\xce,\\xf2K\\x8aT\\xbd\\n\\xae|\\xda\\xf8\\xcc\\xd7\\xac\\x92\\xf3\\xc9f?x\\xfc\\x8234\\x12t\\xdc/\\xba{F\\x92A\\x9a\\xb3\\x18\\xf4\\xda\\xf3\\xf9\\xf9r\\xce\\xba\\x01\\x92\\xf6}\\xda\\xc6A\\xb4\\xc8y\\x0b\\x19\\x1d2\\xe0\\xcb\\xa8\\x94\\x86Z\\xb3j\\xaemt[&\\x96\\x82Q8\\xd33\\x10\\x97Pi=\\xe4)\\'\\xbcDi#%\\x19(\\x84\\x1fm#\\x94[\\x14h\\xe0\\x93*\\x9b\\xc4t}\\xc1H3&\\xcd\\xcf\\x84\\xa3\\xee\\xef\\x99s\\xdd\\xd7Mt\\xe7\\xa0\\xe95\\xc6I\\xae\\x12\\xda\\xd9\\xbb\\x00\\xc1j\\xf6\\xc5\\x9ccY\\x9eO\\x85gI\\xc5#\\xdcG\\xc7\\x1e\\xc9j/a\\xad\\xf8\\xd5\\x8ba\\xb5\\xf7N\"R\\\\R\\xd6\\xd7v\\xb56jRT\\xa24(\\xcc\\x88\\x8c\\xb4\\x14|7\\xb5\\x9eaf\\xe6kXuu9\\xb5\\xc5v,\\xe6KL\\xe6;[a\\x01\\x99\\xdb\\x8b\\xee\\xcd\\x92D\\xa25;\\xcdM\\x9a\\\\h\\xcc\\x94FdE\\xaf!\\x9d\\xb51\\xc5l\\xeb \\x1c\\xbc}\\xaa.h\\xf6+\\x17,\\x97a\\x8ae\\xb6\\xb76\\xf1\\xa9jxf4\\xd3e\\x89\\x0e\\xa0\\xd4\\xb4J`\\xbb\\xd7\\xc9m\\x12\\x1cQ\\xb6\\x82\\xdfQ$\\x8bu&\\xaeW\\r\\x82\\xed\\xa3)\\xcfr\\xbb\\x9a\\x0c\\x8e\\xa4\\x9dj$6\\xe6\\xc6\\xbf\\x85AeS\\x15\\xe3R\\xcd\\x0b\\x8e\\xa6\\xa7 \\x94N\\'\\xd9Q\\x1aT\\xa2RU\\xf1\\x1aL\\x821i\\x99\\x88\\x8f\\x89f\\xbe\\xcf\\xf4\\x8b\\x8f\\xfeg7\\xfc\\xd9\\x1a\\x00\\xcf\\xd9\\xfe\\x91q\\xff\\x00\\xcc\\xe6\\xff\\x00\\x9b#@\\x1c\\xfc_\\x1a>_yt\\x8e\\x10\\x00\\x00\\xf0\\x80\\x00\\x00\\xa9mO\\xf0*O\\xe71?\\xf2Z\\x1f\\xc1\\xfc\\xda\\xbb\\x89k\\x07\\x96\\xb5\\xa8\\x90\\x84\\xc8\\x88f\\xa5\\x1e\\x84E\\xe9-s1\\x1f\\xc4u>)\\x0b\\xa8G\\x98\\xfa\\xf8\\x14\\xcc\\xe0E\\xa3\\xe3?JR\\xae\\x10\\x91\\x01\\x1d\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6:d\\xab\\x93\\x9d\\xa5\"\\x02;\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc2U\\xc8\\xb4\\xa4@Gq\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x86J\\xb9\\x16\\x94\\x88\\x08\\xee#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f0\\xc9W\"\\xd2\\x91\\x01\\x1d\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6\\x19*\\xe4Z\\\\W\\xda\\x03fW{X\\xed\\xb9iM\\x8d\\xe5\\xd7\\x18e\\xea6V\\xa90\\xa7\\xd3\\xcb8\\xc6\\xe3\\xa5`\\xa4\\xa1\\xa7\\x94\\x92\\xde6Tk#Q$\\xc8\\xf5JL\\x8f\\x96\\x87EN\\xd5\\xa9\\xab{?l\\xa3\\x08\\x8fWU\\x81\\xd4B\\xb8\\x99S\\x98\\xd8\\xddQ\\x95\\xd7\\x0f\\xd9Gl\\xd4g\\xdc\\xbaK.\\xf2J\\xdcsu\\xc5\\x12\\xb4%(\\xbe%i\\xfe\\x87q\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x8f$\\xf8J\\xef3\\x1f\\x1f&\\xef<\\x9f\\xe6\\x1e\\x1d\\n\\r\\xa6\\xc7q\\x8c^n\\xb6\\xb5\\r\\xf6\\x84\\x84\\xc3ql+\\x8a!=^\\xfb[\\xcd\\x9a\\xa2\\xee\\x92Zm\\xd4\\xadj\\xee\\xc9$\\x92%\\x19\\x11h4m\\xb7R\\xd7\\xe2YGk*\\x8aH1\\xeaj\\x9e\\xc2\\xaa\\xe5\\xae\\x14&\\x92\\xd3=\\xf6\\x8aN\\xf9!$DFdg\\xa9\\x91s\\xd4\\xc7{q\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x89\\x1e\\x0e\\xa8\\x8b}\\xbc\\xa6>\\xe5\\xe7\\x93\\x88{,\\xc0sf\\xd9\\x8eQ\\x83\\xed-\\xa8wy&u\\x8e\\xc7\\xbb\\xaa\\xc8_ky6p\\xd3\\x15)r\\xbfEjDLhz \\x88\\xb5I\\x1a\\x8c\\x88\\xb7HRv\\x1fAY\\x94Wv \\xae\\xb8\\xaf\\x8bk^\\xe22\\xc5\\xae,\\xc6R\\xebKR\\x10\\xa5\\xa0\\xcd*##\\xd1IJ\\x8b\\xf1\\x19\\x11\\x8f\\xf4S\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xccX\\xf0\\x95E\\xa3\\x97\\x97\\x9cO\\xd8\\xbc\\xf2\\x7f\\x9a\\xdbO\\xaa\\x85\\x8fa\\x1b]\\x8d\\r\\x88\\xd1)\\xf1\\xed\\xb0A\\x9d\\x12\\xaaDm\\xfar\\xdem$\\xb4Km?y\\x17E\\x19\\xabt\\x8f\\x9aRD\\\\\\xf9tga\\x088\\xfb\\x8e\\xed+ \\xaa\\xca1\\x0bk\\x0b\\xcb&$L\\xa6\\xc2[q\\xaa\\xfa\\xb4\\xa5\\xb5%\\xb2B\\x1dJ\\x17\\xf7Ol\\xcd[\\xa4Fi=5\\xe67\\r\\xa7\\xe3\\x94;R\\xc5WG\\'/\\xb0\\xc7\\x92o6\\xfa\\'\\xe3\\xb7\\x05\\n[kA\\xea\\x9d\\x1cI\\x9f-y\\xe8de\\xa9\\x11\\xe9\\xc8\\x85\\x7fc\\xbb\"\\xc2\\xb636\\xf2\\xca\\x16Qc\\x92_\\xdd\\x9b%ay\\x92\\xdc&d\\xc9\\th\\x8c\\x9aA\\xab\\xd9\"JIJ\\xd0\\x89%\\xef\\xe7\\xae\\x85\\xa4\\xa7\\xc3bS\\x89\\x15[O\\xfd8\\xc3^\\x01\\x1d\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6=\\x99*\\xe4\\xc5\\xa5\"\\x02;\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc2U\\xc8\\xb4\\xa4@Gq\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x86J\\xb9\\x16\\x94\\x88\\x08\\xee#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f0\\xc9W\"\\xd2\\x91\\x01\\x1d\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6\\x19*\\xe4Z^\\r\\xa1\\xfe\\x00d\\xdf\\xa3$\\xfe\\xe9CKg\\xf9$\\x7fd\\x86K\\x9f_\\xd5\\xbd\\x82dm\\xb7e\\x11n.\\xb6JR\\x94\\xbe\\x9333iZ\\x11\\x16\\xa3Zg\\xf9$\\x7fd\\x87\\x0f\\x15\\x13\\x18T^>3\\xf4\\xa5\\xd28>\\xc0\\x00|\\xb5\\x00\\x00\\x00f\\x98\\x7f\\xf3+?\\xd3\\x16_\\xf9\\xaf\\r,e\\x18\\xbd\\xd5t8\\xf6\\xad?>3\\x0e\\xa6\\xe2\\xcbT8\\xf2R\\xa2\\xff\\x00l{\\xe23\\x1fK\\xc2\\xc4\\xcd\\x15\\xdb\\x9c}\\xc9\\xfd\\xabH\\x08\\xee#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f1\\xe9\\xc9W\\'+JD\\x04w\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xc4u>)\\x0b\\xa8G\\x98d\\xab\\x91iH\\x80\\x8e\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0c\\x95r-)\\x10\\x11\\xdcGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\x92\\xaeE\\xa5\"\\x02;\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc2U\\xc8\\xb4\\xa4@Gq\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x86J\\xb9\\x16\\x95\\x03\\xb4\\xac\\xac\\x026\\xc7\\xaeS\\xb4\\xe8.\\xcf\\xc3^S,\\xccC\\x11\\xddyh\\xdeq$\\x97\\x08\\x9a-\\xf4\\xee\\x1e\\x8a\\xdeO2\\xdd\\xe5\\xaf\\xb8\\xf8\\x9a\\xf2\\xd3$\\xda\\'e\\xce\\xd08\\xce-i\\x90m\\x0bf\\xb5h\\xab{\\x16\\xbc\\xb8\\x88\\xe9Ku\\t}\\xa7e0\\x95-\\t[\\xc8d\\x9b?h\\xd3\\xa9\\x11~#-?\\xd1\\x8e#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f1\\xe7\\xc4\\xf0\\xf5\\xe2O--\\xc1\\xa8\\xbc|\\x1cIu\\xb6\\xacOm\\xdd\\xa7\\xeamp\\xf9\\xaf\\xd9V\\xc7\\xd9\\xdd\\xcbK\\x94\\xe47XA\\xb8e\\xbchOx\\x94\\xef\\x1aKM\\xed5\"3\\xd3]u\\x14|\\x03f\\xb8\\x9c\\x8cK\\xb1\\xa3\\xce\\xe3U.;e:Y\\xceZ\\xe16g/\\xeeJYw\\xa7\\xa7\\xb7\\xa2\\x92F[\\xda\\xe8d?\\xd1>#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f1\\x8d\\xd6\\xb9\\x9b\\xd5\\xf4\\xf9{-\\xe7\\x93\\xfc\\xe2\\xc9\\xa8\\xeb\\x9b\\xc2\\xf3\\xacm0c\\xa7\\x1foo\\xb1\\xa3\"\\xb0\\x9b\"\\x8e\\x86\\x97\\xb8Jl\\x91\\xee$\\x19r\\xdd\"\\xd3O\\x88[s=\\x97a\\xc9\\xda\\x07l\\xe4\\'\\x16\\xa7B+0\\xe8r`%0[\"\\x88\\xe9\\xd6>\\xe9\\xad\\xa2$\\xfb\\n7\\x1bB\\xcc\\xd3\\xa6\\xa6\\x92?x\\xef\\x0e#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f17:\\xb9v\\xf9\\xfb\\x97\\x9eO\\xf3\\x97i\\xb9\\x8b\\x99F+\\xb3\\xccS&\\x93\\x06\\x86\\xb9\\xcd\\x98\\xd7J\\xac\\xb1\\x7f\\x13E\\xd5\\x85\\xf4\\xd7c\\xa4\\x95\\x11\\x87\\x1cm}\\xd1\\xeaI\\xfb\\xcd\\x17\\xbc{\\xda\\x97#)\\xbd\\x88TT\\xed#=\\xec\\xb2\\xdeC\\n5\\xf3\\x11pk\\x12\\xee\\'\\xb4O \\x9da}\\xc9\\x12\\x90\\xa223F\\xe9\\x91j\\\\\\x8d$~\\xf2!\\xdf\\xfcGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\x1e\\x12\\xbc\\xd7\\x9f\\xa7\\xc8\\xbc\\xf2p\\xf7k\\x9cw \\xd9\\xa6\\xd5_\\xa8\\xc1!\\xa6<-\\xb5T\\xc7\\xc4\\xdeDt\\xee7\\x12c.\\xb6\\xd1\\\\iT\\xf9\\x01c\\x16J\\xc6\\xe6\\xe2\\x96/&\\x07~\\xdc\\xf8\\x0f\\xb0\\xa4%\\x0bA8\\x8d\\r\\xa7\\x0c\\x9dA\\x91\\xf2\\xf6\\x93\\xeeV\\xa5\\xae\\xf1\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x8d\\xce\\x04\\xd5\\xc6\\x97=Y\\xe5\\x9e\\xc1\\xe3\\\\\\xda\\xec\\xdeD\\xdb2~\\x1e#W2\\xad\\xe8\\x8a\\x8d\\xca\\xc1\\x12\"\\xb7\\x1dFj\\xdf\\xfb\\x9e\\x84\\x83=4V\\xbb\\xdajZj+\\x18\\x9ff+J\\x99\\xb8L\\x1b\\xec\\xfaFG\\x87a2\\x13&\\x86\\x91u\\x8d\\xc7u\\x0e6\\xda\\x9b\\x8crd%g\\xdfw(Q\\x92tCz\\x99\\x11\\xab]\\x06\\xd5\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6&\\xc2\\xf3|\\xb3\\xdc\\xd5\\x96\\xc8\\xec\\xbb\\x8aJ\\xb4\\xda\\xd4\\xe7w\\xcd\\xdd\\xa20\\xdb\\x134N\\x9e\\x88Igsy\\xa3\\xd7\\x92\\x8d\\xcd]3\\xe5\\xedn\\xff\\x00\\xcaF\\x0fvsb\\xbe\\x87e\\x10\\xf1\\xdb\\xe5\\xd1M\\xd9\\xea\\xd0P\\xe5\\x1cD\\xbe\\x89M\\x1csbB\\x1cl\\xd4Z\\x1b\\xa8R\\x8fx\\x8fT\\xa8\\xf5\\xe65.#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f0\\xd8\\x7f_\\xce&\\xac\\x97\\x1d\\xd8&M\\x81d\\x93\\xcb\\x0f\\xda+\\x94\\x98\\\\\\xfbu\\\\=\\x8f=N\\xd4\\xa7\\x1aq\\xc7;\\xc7\\xdabB\\x96]\\xdbN+{\\xd94(\\xd3\\xbc{\\xa6G\\xccF\\xe6\\xfd\\x99\\xafm\\xa7m\\t\\xbcWh*\\xc5\\xb1\\xfc\\xe9\\x97N\\xe2\\xa1\\xfav\\xe7\\x11Ir90\\xe3\\xec8n \\xdb5\\xa1(\\xdeI\\x92\\xb52\\xe4i\\xe5\\xa6\\xd9\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6&\\xef\\xa5\\xb2\\xcfsW\\x19v\\x86\\xd9<\\xba\\xec\\xcf\\x1c\\xee*\\xedr\\'*\\xb1\\x98\\x95l)\\x18\\x13\\x970\\xa5\\xa9\\xa5/V\\xd6\\xe32\\xdb\\xdd%\\x19 \\xcd\\x12\\x12\\xb4\\'\\x91\\xa5\\\\\\xd66\\n\\xed\\x8fg\\x17sj\\xb6\\x87W\\x91\\xb3\\xb3,\\xee\\xea\\x8e\\x1cL\\x9e\\xa4\\xabQe\\x05\\xd7\\x1bI\\x9a7Pn$\\xd0\\xe3F\\xb5\\xa4\\x94KQn\\xf22=5=\\xb7\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xccf<4\\xc4\\xcc\\xda{\\xae\\xac\\x9f4\\xd8vau\\x99a\\xf9e\\x16\\xd0\\xe3\\xd5d\\x14T\\xaf\\xd3H\\x97c@\\x99\\xa58\\x9dSJ[\\xc6\\x84<\\xd2[Q\\xa9\\x92=\\x08\\x8c\\xbd\\xa3\\xe5\\xa7!\\x07\\x07\\xb2t\\x9cy\\xaa\\x1bj,\\xdd\\xe6s\\x9a\\xfb\\x9b\\x0b\\xc97\\xd6u\\x8d\\xcajl\\x89\\xcd\\xa5\\xb9;\\xd1\\x92\\xb6\\xc9\\x05\\xba\\x86\\xc9\\x1b\\x8b-\\xd2N\\x9e\\xd6\\xa67N#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f1\\xad\\xde\\xf3|\\xb3\\xdc\\xd5\\x8ec\\x9b\\x00\\xcc\\xf0\\x9cb\\xe2\\xb2\\x83i\\xa8je\\xad\\xf4\\x8b\\xd9Sl\\xb1\\xe6e\\x13\\xe7!\\xb2\\'\\xd9q\\xb2q\\t4\\x9b\\x9a\\xb8\\x93F\\xe1\\x96\\xa4\\x93\\xde\"=b\\xa8\\xbb$H\\xd9\\xfd~\\x1b#\\x04\\xce\\x1f\\xc7\\xb2|~\\xb5\\xfa\\x87\\xac\\xe5\\xd672=\\x8cWd*J\\xdbr6\\xfa\\t$\\x97\\x96\\xa57\\xb8\\xb2\\xdc#\\xdd\\xf6\\x88o\\x1cGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xbb\\xff\\x00Y\\xee\\x9a\\xbf\\x1cJ\\xae\\xd2\\x97\\x1d\\x85\\x0e\\xea\\xe9Y\\r\\xa3I?H\\xb2\\\\dG\\xef\\xd4j3\\xd4\\x9bG\\xb2\\x92\"2\"\"\\xd7\\x91\\x16\\xa6g\\xa9\\x8c\\x81=\\x97\\x1a\\x87_5\\xfa\\xec\\x81\\x102\\x82\\xcd%\\xe6U\\xd7h\\xaf#8\\xab\\x90\\xe9\\x9b\\xb1\\x9cA8F\\xebjeJe^\\xd2w\\x88\\xc8\\xf4-\\xd2!\\xb2\\xf1\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x8dN\\x0c\\xd5\\xc6\\x995dV\\x9d\\x9a~\\x12\\xd9Ny\\x85\\xf1\\x1fw\\xc59\\x1c\\x8c\\x83\\xd3\\xbd\\x07_F\\xeff\\xa2Ws\\xb9\\xde{znnoo\\']u\\xd0\\xbd\\xc3\\xcb\\x99vg\\xb6\\xba\\x9f\\x9a\\xc5\\xc7\\xf3\\xf9\\x18\\xc6\\'\\x9b:o\\xdf\\xd3\\xb7X\\xdc\\x87V\\xe2\\xdaK/\\xaa4\\x85,\\xbb\\x93u\\xb4$\\x95\\xaa\\x1c\\xd0\\xf54\\xe9\\xa8\\xd9\\xf8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc6g\\xc3\\xdf\\xfe3\\xdc\\xd5A\\x93\\xd9\\xef\\x18{j\\x18.h\\xd3]\\xc4\\x8cB\\xa5\\xea\\xa81\\x12\\x9dPhRR\\x86Tfg\\xff\\x00\\xb4\\x83}$Z\\x7f\\xef\\x99\\xeaZs\\xaf@\\xec\\x99\\x8b\\xd5l\\x83h\\x1b>\\x85)\\xf8\\x95\\xf9|\\xe9s\\xdd\\x90\\xd2\\x08\\x97\\x15N\\x9a{\\xa4 \\x8f]R\\xd2[m)#\\xf7\\x92~-F\\xbf\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6.\\xc3\\xfa\\x9a\\xb2;]\\x82\\xe5\\x9cM]\\x98P\\xed\\x154\\xd9\\xb2\\xaaZ\\xa7\\xbb\\xb0r\\x8d\\x12!\\xdb6\\xda\\x8dHp\\xe2\\xf7\\xa9\\xee\\x9cJ\\x94\\xbd\\x14\\x95\\x9f%i\\xa1\\x90\\xf6e\\xbb\\r\\xc8.m\\xb0\\xfc\\x9e\\x9f=v\\xa3<\\xa2\\x80\\xe5\\\\\\x9b\\xc9\\x15MIf\\xd23\\x86\\x858\\x87\\xa3%M\\x91j\\xe3iZM\\nN\\xe9\\xeb\\xef\\xf8\\xb5\\x0e#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f0\\xd8O)\\xeej\\xe4}\\xaf\\xf6}\\xb0\\xc4vq\\x06\\x04\\xcb[|\\xb6T\\xac\\xc2nI\"uV\\x1cv*m\\xd7\\xd2\\xa3\\xd5L1%\\xb7\\x90IQ\\x9e\\x8be|\\xf5\\xd1H\\xdd\\x13\\xfb3\\xd9\\x06O\\xb4-\\x9b\\xe3\\x13_m;.\\xca0\\xbbye\\x8a\\xd8\\xc4\\xa3(\\xa9z\\x0b\\x8d\\xa5.*Mr\\xddQ\\xa0\\x9e58JA\\xb8J\\xd5\\t^\\xa4g\\xcf\\xa6x\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc67Y\\xbd\\xed=\\xd7U\\x1e=\\x9ec\\xb3J\\x08\\xed\\\\E\\xbb\\xda\\xb5\\xac\\xa9\\x0e\\xb8\\xe4\\xba\\x180`\"*4N\\xea;\\xa7\\xa4\\xb7\\xa2}\\xfa\\x1e\\xf2\\xd5\\xae\\xf6\\xa6\\\\\\x85{9\\xa8\\xb6\\xed\\x15\\x89I\\xc5\\xe4\\xe3\\xd96\\xcd\\x94\\xcc\\xb8VL\\xdb\\xda\\xb3_!&\\xe4y-\\xbc\\x94!\\x0c\\xcawU\\x19\\xa0\\xbe\\xf8\\xb7t\\xfc~\\xe3\\xd6x\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc6\\xe7\\x06\\xa9\\x8bLM\\xbf?\\xed5bV\\x9d\\x95\\xe4\\xe7q3\\'\\xf3\\xfc\\xd1\\xec\\x96\\xfb \\xa4<}\\x99\\xd0\\xab\\x91\\x01\\x9a\\xe8\\x9d\\xe7{\\xba\\xd3$\\xb5\\xef(\\xdd$)F\\xb5\\x1e\\xf6\\xe2K\\x91\\x0fL\\r\\x81f\\xed\\xe6\\xcb\\xccf\\xedE\\x0f\\xe4\\xa7\\x8f\\xc8\\xc7\\x9b~6:\\xcb,Gmn6\\xebn\\xb6\\xd1\\xba\\xafm. \\xcd[\\xe6\\xb4\\xa8\\x8fB$h6N#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f17\\x7f\\xeb=\\xcdX*\\xbb!\\xbbq\\x17(\\xb1\\xbe\\xcd^\\x91\\x9b\\\\ZW\\xdc\\xc7\\xbf\\xaa\\xacn\\x13p%\\xc1B\\x93\\x1d\\xd4G\\xdfY(\\xf4Z\\xc9{\\xca=\\xf2V\\x9e\\xce\\x845\\xbd\\x9dcY~>\\xcc\\xe3\\xcb\\xf36\\xb2\\xe9/\\xa9\\x1d\\xc9\\xc6\\xa8Es1\\xd2\\x92=I(J\\xd6\\xa5\\x1a\\x8c\\xc8\\xcc\\xd4\\xb3\\xf7\\x16\\x84B\\x7f\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xccZp&\\x99\\xbcS=\\xcd_\\xc6\\x7f\\xa4\\\\\\x7f\\xf39\\xbf\\xe6\\xc8\\xd0\\x06m]g\\x0e\\xc3h\\xd4E\\x16[\\x12M0\\xe6o\\x13.\\x12\\xf4\\xe6\\xcf\\xbfC\\x1aH\\xf3\\xf8\\xb8\\x98\\x9a\"y}\\xe5\\xd3\\xe1\\x00\\x00\\x0f\\x00\\x00\\x00\\n\\x86\\xd5\\xdbK\\xb8<\\xb4-$\\xb4*DB4\\xa8\\xb5#/Ik\\x91\\x88\\xfe\\x1b\\xa8\\xf0\\xb8]:<\\x84\\x86\\xd5\\xdcKX<\\xb5\\xadD\\x84&DC5(\\xf4\"/Ik\\x99\\x88\\xfe#\\xa9\\xf1H]B<\\xc7\\xd9\\xf0\\xf9\\xf7x\\xcb~3\\xf4\\xa4\\x9b\\xda,p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1c7Q\\xe1p\\xbaty\\x07\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xc4u>)\\x0b\\xa8G\\x98\\xed\\xfa\\xbe}\\xdc\\xf58n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc?W\\xcf\\xb9\\xa9\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1cGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xfa\\xbe}\\xcdN\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f \\xe2:\\x9f\\x14\\x85\\xd4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0f\\xd5\\xf3\\xeejp\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1c7Q\\xe1p\\xbaty\\x07\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xc4u>)\\x0b\\xa8G\\x98~\\xaf\\x9fsS\\x86\\xea<.\\x17N\\x8f \\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc88\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc3\\xf5|\\xfb\\x9a\\x9c7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eA\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6\\x1f\\xab\\xe7\\xdc\\xd4\\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc88n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f0\\xfd_>\\xe6\\xa7\\r\\xd4x\\\\.\\x9d\\x1eA\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90q\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x87\\xea\\xf9\\xf758n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc?W\\xcf\\xb9\\xa9\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1cGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xfa\\xbe}\\xcdN\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f \\xe2:\\x9f\\x14\\x85\\xd4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0f\\xd5\\xf3\\xeejp\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1c7Q\\xe1p\\xbaty\\x07\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xc4u>)\\x0b\\xa8G\\x98~\\xaf\\x9fsS\\x86\\xea<.\\x17N\\x8f \\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc88\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc3\\xf5|\\xfb\\x9a\\xa0s\\xec~\\xad\\x9c\\x13#q\\xba\\xd8\\x88q\\x15\\xb2T\\x95%\\x84\\x91\\x91\\x93J\\xd0\\xc8\\xf4\\x1a\\xd3?\\xc9#\\xfb$2\\\\\\xfa\\xfe\\xad\\xec\\x13#m\\xbb(\\x8bqu\\xb2R\\x94\\xa5\\xf4\\x99\\x99\\x9bJ\\xd0\\x88\\xb5\\x1a\\xd3?\\xc9#\\xfb$<\\xbe/6\\xca\\x8c\\xdc\\xe7\\xff\\x00\\x97H\\xbd\\xb5}\\x80\\x00\\xf9@\\x00\\x00\\x03\\'\\xc5\\xe9+\\xa61j\\xeb\\xf0\"\\xbe\\xea\\xae,\\xb5[\\x8c\\xa5J?\\xf6\\xc7\\x8b\\xded5\\x81\\x94b\\xf7U\\xd0\\xe3\\xda\\xb4\\xfc\\xf8\\xcc:\\x9b\\x8b-P\\xe3\\xc9J\\x8b\\xfd\\xb1\\xef\\x88\\xcc}?\\t\\x9b%y|\\xbe\\xe4\\xde\\xda&8n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc{?W\\xcf\\xbb\\x9e\\xa7\\r\\xd4x\\\\.\\x9d\\x1eA\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90q\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x87\\xea\\xf9\\xf758n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc?W\\xcf\\xb9\\xa9\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1cGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xfa\\xbe}\\xcdN\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f \\xe2:\\x9f\\x14\\x85\\xd4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0f\\xd5\\xf3\\xeejp\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1c7Q\\xe1p\\xbaty\\x07\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xc4u>)\\x0b\\xa8G\\x98~\\xaf\\x9fsS\\x86\\xea<.\\x17N\\x8f \\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc88\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc3\\xf5|\\xfb\\x9a\\x9c7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eA\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6\\x1f\\xab\\xe7\\xdc\\xd4\\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc88n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f0\\xfd_>\\xe6\\xa7\\r\\xd4x\\\\.\\x9d\\x1eA\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90q\\x1dO\\x8aB\\xea\\x11\\xe6\\x1cGS\\xe2\\x90\\xba\\x84y\\x87\\xea\\xf9\\xf758n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x88\\xea|R\\x17P\\x8f0\\xe2:\\x9f\\x14\\x85\\xd4#\\xcc?W\\xcf\\xb9\\xa9\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1cGS\\xe2\\x90\\xba\\x84y\\x87\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xfa\\xbe}\\xcdN\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f \\xe2:\\x9f\\x14\\x85\\xd4#\\xcc8\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0f\\xd5\\xf3\\xeejp\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1c7Q\\xe1p\\xbaty\\x07\\x11\\xd4\\xf8\\xa4.\\xa1\\x1ea\\xc4u>)\\x0b\\xa8G\\x98~\\xaf\\x9fsS\\x86\\xea<.\\x17N\\x8f \\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc88\\x8e\\xa7\\xc5!u\\x08\\xf3\\x0e#\\xa9\\xf1H]B<\\xc3\\xf5|\\xfb\\x9a\\x9c7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eA\\xc4u>)\\x0b\\xa8G\\x98q\\x1dO\\x8aB\\xea\\x11\\xe6\\x1f\\xab\\xe7\\xdc\\xd4\\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc88n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e#\\xa9\\xf1H]B<\\xc3\\x88\\xea|R\\x17P\\x8f0\\xfd_>\\xe6\\xaf\\x0buP\\xa0gx\\xaa\\xe2\\xc3\\x8f\\x19jrI\\x1a\\x99i)3.\\xe1_\\x88\\x86\\x9a3&\\xedaO\\xce\\xf1TF\\x98\\xc4\\x95%\\xc9&ii\\xd4\\xa8\\xc8\\xbb\\x85~#\\x1ah\\xf0\\xf8\\xdb\\xde\\x8c\\xdc\\xbe\\xf2\\xe9\\xf0\\x8b\\xa2\\xf2\\xaf\\xc1\\x8b\\x8f\\xcc\\xde\\xff\\x00A\\x8a&=\\x8e\\xd5.\\x82\\xb1J\\xac\\x86\\xa5\\x1cV\\x8c\\xcc\\xe3\\xa3S=\\xc2\\xfc\\x82\\xf7\\x95~\\x0c\\\\~f\\xf7\\xfa\\x0cU1\\xcf\\xc1\\xea\\xbf\\xcdZ\\xff\\x00A\\x0e\\x9e\\x1a\\xa9\\xa7\\nm?\\x1f\\xb1W\\xed8n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x87\\xc3yEc\\xb9D\\x8cu\\x12u\\xb9\\x8f\\r\\xbb\\x07#wj\\xf6Xqn6\\x85\\xefi\\xbaz\\xa9\\xa7\\x0bB=Kw\\x99he\\xad:\\xc3\\xb46\\xcf\\xabss\\xc4]\\xc8;\\xdb\\xe4\\xc9n\\x1b\\x8c\\xc5\\x87\"CL>\\xe1\\x91!\\xa7^m\\xb54\\xda\\xcc\\xd4^\\xca\\xd4G\\xcc\\xb9\\x0e\\x93\\x8b1\\xc6\\xae\\xeew\\x95\\xd3\\x86\\xea<.\\x17N\\x8f \\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc8S(;A`YFC:\\x92\\xae\\xf1r\\xe7@\\x91*,\\xd5&\\x04\\x92b\\x1b\\xb1\\xcdd\\xf2^|\\xdb&\\x9a2\\xee\\xd5\\xa6\\xfa\\x8bx\\x8bT\\xeaFF\\x7f\\xcc\\'\\xb4>\\xcfv\\x8b|\\x8aj\\x0c\\x852\\xec]ioGi\\xe8\\x8f\\xc7)m\\xa7\\xef\\x97\\x1dn\\xb6\\x94\\xbe\\x92#\\xd7V\\xcdE\\xa7?pm\\xbf\\xb7sU\\xd3\\x86\\xea<.\\x17N\\x8f \\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc8R0~\\xd1{<\\xda5\\xfa\\xe9(2\\x0fK\\xb4&\\x17%\\xb8\\xefB\\x91\\x1c\\xe44\\x83\"R\\xd97[I<\\x92\\xd4\\xb56\\xcd^\\xf1\\x01\\xb1~\\xd4\\x18\\xe6\\xd6\\xa92K\\x17\\x9a\\x93\\x8f\\xb5I*q>\\xed\\x849Q\\xe3\\xa2+\\x0f)\\xb2yO\\xbc\\xd3m\\x92\\x8d)\\xdeSz\\xef7\\xa9\\x92\\x8b\\xd916\\xfc#7sV\\xad\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4*8\\x06\\xde\\xb0]\\xa7\\xdb\\xb9U\\x8e\\xde\\x1c\\xab$1\\xe9E\\x16L9\\x11\\x1cu\\x9dH\\xbb\\xd6\\x92\\xf3h7\\x1b\\xd4\\xc8\\xb7\\xd1\\xaay\\x97>d/\\x16\\x13\\x99\\xab\\x81&d\\x83Y1\\x1d\\xa5<\\xe1\\xb6\\xda\\x9cV\\xeaH\\xcc\\xf4JH\\xd4\\xa3\\xd0\\xbd\\xc4Fg\\xf1\\x10\\xd4b\\xcc\\xc5\\xe2\\xae\\xe5\\xe5\\xe5\\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc88n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x19.!\\xdas\\x16V\\x03\\x8f_d\\xf9\\x15y\\xbb\\x90J\\xb0j\\xac\\xeakg\\x91KLy\\x0bo\\xbbC.5\\xdfw\\xc9I$\\x94\\x83N\\xaaQ+p\\x8c\\x85\\xb5;{\\xc0Og\\x8f\\xe7*\\xc9#\\xb3\\x8c0\\xf2\\xa3;-\\xf6\\xdcmm\\xbe\\x95\\xee\\x1b*eI\\'\\t\\xdd\\xefg\\xbb4\\xef\\xeb\\xa7!\\x98\\xc7\\xbf\\xfc\\xbb\\x9a\\xad\\xbc7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eC\\x1a\\xd9\\xff\\x00jZ,\\xbf&\\xda\\x84\\x896P\\xa0\\xe1\\x18\\x935\\xae7e*+\\xf0\\xdfJ\\x9fm\\xc3u/!\\xed\\x14FJBI)\\xdcI\\x9e\\xf1\\x17\\xb5\\xa9\\x0b<\\x0e\\xd3\\x1b8\\xb1\\xc7\\xaf\\xae\\x99\\xbfu0\\xe8\\x99D\\x9b&\\xdf\\xad\\x96\\xd4\\x98\\xcc\\xa8\\xf4K\\xca\\x8e\\xb6\\x89\\xde\\xef\\xdf\\xf7BA\\xa4\\x88\\x8c\\xcc\\xf4#2\\x91\\xe2/\\xaen\\xe6\\xab\\xf7\\r\\xd4x\\\\.\\x9d\\x1eA\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90\\x87F\\xd41wr\\x0b\\nV\\xad\\xdaz}}j-\\xe6wHZ\\xda\\x8f\\x15z\\xee8\\xb7H\\x8d\\xb4\\x9a\\x89*Q$\\xd5\\xbci#Q\\x11\\x971S\\xa2\\xdb\\xed,]\\x8eS\\xed\\x172\\x94\\xc67Uvi~\\xbd\\x93C\\x8e:\\xb6^Q\\x9cD\\x12\\x10J[\\x8f-\\xad\\xd5\\x1aP\\x93\\xe6j\"-\\x13\\xa8\\xd6\\xdaz\\xbb\\x97\\x96\\x89\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe41\\x8c\\x03\\xb5E\\x1eH\\xde\\xd3/-&\\xb3\\x17\\x0e\\xc6\\xad\\xe3WB\\x9a\\xd5|\\xa4\\xc8p\\x9c\\x8e\\xca\\x8d.\\xb2dn\\x1b\\x9d\\xf3\\xaaA$\\x9bI\\xf2\"\\xd3^g\\xe9\\xcf\\xbbYb8\\xfe\\xc4\\xef\\xf6\\x87\\x8d\\xba\\xbc\\x9d\\x8a\\xb9\\t\\x84\\xa8I\\x8d!\\x97\\x1b\\x92jIwo \\xda\\xef\\x19\\xd0\\x94J\\xd5h\">E\\xaf\\xb4C;\\xc6\\x97\\xcd\\xdduk\\xdc7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eB\\x97o\\xda\\x0b\\x07\\xa0\\xc4\\xaa\\xf2K\\x19\\xf60\\xab,\\xde[\\x11\\x12\\xf5$\\xe4\\xcauh3%\\x17\\xa3w=\\xf1i\\xbag\\xa9\\xa0\\x8bN~\\xe3#\\x1e\\x87\\xf6\\xf1\\x80\\xc7\\xc3(2\\xc5\\xe4\\xb1O\\x1d\\xbe\\x9a\\xd5ut\\xf6\\xd0\\xe2\\xd0\\xfc\\x87\\x14\\xa4!\\xbd\\t&iV\\xf2TG\\xbcE\\xbai=\\xed41\\xad\\xb4\\xf5wMV\\xce\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f! \\xb5\\xa5\\xb4)kQ%)-MFz\\x11\\x17\\xe3\\x18\\x04\\x8e\\xd7\\x18\\xd6E\\xb5-\\x9fb\\xd8U\\xa4[\\xc8\\xd7v3\"\\xd8HT)$\\x9e\\xe5\\x98\\x8f;\\xbf\\x15\\xe3$\\xb6\\xef\\xdd\\x1bJMH7\\x0bC\\xd3\\x91\\x99\\x18U\\x8d4\\xda\\xf5w5\\x96\\xdf\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe42\\xdcC\\xb4v7#g\\xb6\\xf9\\x9eE\\x91\\xd5\\xb1F\\xd5\\xec\\x9a\\xc8o\\xc7\\x852;\\x86Isu\\xa8\\xeba\\xf6\\xc9\\xe5J\\xf7\\x92\\x92\\x84\\x19\\x19\\x91\\xee\\x96\\x84b7=\\xeds\\x89\\xe2\\xf8\\xbe5{T\\xd4\\xfb\\xa86\\xf9\\x0b\\x14N\\xe9W5\\xb7b\\xef\\x1aM\\xd5)\\x9e\\xe0\\xdc\\xdfJ\\x14\\x93Kf\\x92R\\xf7\\xbd\\x9dt2\\x19\\xde-\\x17\\xcd\\xddul\\x9c7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eB\\x99e\\xb5\\xa6k\\xf2\\xdc\\x01\\x8e\\xe8\\xf8{2m\\xe6!\\xca\\x90\\xc3\\x91\\x9fjZY\\xef\\xdaC\\x8d\\xb8IRI\\xc6\\x90\\xf7\\xb2\\xa4\\xa5ISdFG\\xbd\\xec\\xe8\\x83q\\x8bT\\xf0\\xa9/(\\xee\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f!\"\\x02\\xe7\\xaf\\x9c\\x97\\x94w\\r\\xd4x\\\\.\\x9d\\x1eA\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90\\x91\\x00\\xcf_9/(\\xee\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f!\"\\x01\\x9e\\xber^P\\x95\\xd5\\x90\\xeb\\xf6\\x8dDqb1\\x18\\xd7\\x0ef\\xf1\\xb2\\xd9#^l\\xfb\\xf4!\\xa4\\x8c\\xfd\\x9f\\xe9\\x17\\x1f\\xfc\\xceo\\xf9\\xb24\\x01\\xe3\\xf1\\x9334L\\xf2\\xfb\\xcb\\xa7\\xc2\\x00\\x00\\x1e\\x00\\x00\\x00\\x15\\r\\xab\\xb6\\x97pyhZIhT\\x88\\x84iQjF^\\x92\\xd7#\\x11\\xfc7Q\\xe1p\\xbaty\\t-\\xa9\\xfe\\x05I\\xfc\\xe6\\'\\xfeKC\\xf8>\\xbe\\x05SN\\x04Z~3\\xf4\\xa5*\\x9d!\\x1d\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4?*\\x9c\\xaa\\xae\\xf2e\\xe4XR\\xbb\\xe7\\xe9%\\x94\\x1b\\x04wkOr\\xf1\\xb0\\xd3\\xe4\\x9dL\\x88\\x95\\xf77\\xdaV\\xa9\\xd4\\xbd\\xad5\\xd4\\x8c\\x8a\\x83A\\xda\\x87f\\x99F=2\\xfa\\xaf ze$H\\x855\\xeb\\x14U\\xcc(\\xe4\\xd9\\xa9(\\xdd\\'\\r\\x92J\\x9c\\xdeZH\\xda#5\\x91\\x9f4\\x96\\x8658\\xd3\\x1cj\\xee\\xc5\\xe5\\xa1\\xf0\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1c7Q\\xe1p\\xbaty\\n-_i-\\x9c[\\xe1\\xf7\\x99C\\x19*\\x1b\\xa6\\xa3q\\xb6\\xac\\xdc\\x95\\x12Dwa\\x1b\\x86\\x92Gz\\xcb\\x8d\\xa5\\xc4\\x12\\xb7\\x8bE\\x1at\\xd3S\\xd7B3(\\x9c\\x83\\xb4\\x9e57g\\xdbB\\xb4\\xc3\\xec\\x9b\\xb0\\xbf\\xc6(%]\"\\r\\x8c)\\x11\\xc9\\xc4\\xa1\\x97\\x16\\xd3\\x9b\\x8e%\\xb5:\\xca\\x94\\xde\\x9b\\xed\\x9e\\xe9\\xfcJ\\xe6Bm\\xff\\x00\\xb7sV\\xa1\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4*\\xf86\\xd5\\xea2\\xa7\\xe9\\xe9\\\\\\x98\\xda\\xf2\\xb9\\x14q\\xae\\xe5\\xc1\\x8a\\xc3\\xaan;n\\xa4\\xb45/CK{\\xca\\xde\\xddB\\xd5\\xbc\\xa2I\\x99\\x11\\x91\\x19\\x8b\\x9c\\xd9\\x8c\\xd7\\xc3~T\\x85\\xf7l0\\xda\\x9dqz\\x19\\xee\\xa5%\\xa9\\x9e\\x85\\xcc\\xf9\\x10\\xd4b\\xd51x\\xa8\\xbc\\xbc\\x9c7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eB\\x87\\x8fv\\x95\\xd9\\xbeQ\\x8eN\\xc8+\\xb2=\\xfa\\x08P\\xd19\\xfbg\\xe0\\xc9b\"ZQ\\x91$\\x89\\xe7\\x1bJ\\x14\\xbd\\xe3$\\x9bi3Y+\\xd94\\x91\\xf2\\n\\xce\\xd2\\xbb6\\xb5\\xa2\\xbd\\xb8FN\\xdcXtl\\xa2E\\x8alb\\xbf\\r\\xe8\\xed,\\xf4B\\xcd\\x97\\x9bK\\x86\\x95\\x1f\\xb2\\x93$\\x99(\\xf9\\x16\\xa7\\xc8go\\xfd\\xfb\\x9a\\xaf\\x9c7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eB\\xa1M\\xb7\\xbc\\x1e\\xfa\\xbe\\xa2lKw\\x89\\x9b[r\\xa1\\x88R+\\xa50\\xe2\\xe7\\x1b*x\\x99Sn6\\x95#\\xeei5o,\\x89:i\\xcf\\x99k_\\xdbF\\xde\\x98\\xc1\\xf1\\xec\\x88\\xb1\\xc7\\xa2\\xcf\\xc9(,\\xa9bXC\\x9b\\x1d\\xd3m\\x96\\xe7\\xcbi\\xa4\\x9e\\xa5\\xbaJ3mkQn\\xa8\\xf42-\\xe2\\xf8\\x8d8\\xf3\\x11|\\xdd\\xcdZ\\x7f\\r\\xd4x\\\\.\\x9d\\x1eA\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90\\xcc\\x8b\\xb4mB;AX\\xec\\xbd\\xf8\\x16\\r\\xc8\\x8d\\x06#\\xed\\xcej\\xbe[\\xa8q\\xf7\\x96\\xe1wjRY46\\x84\\xa5\\t>\\xf5K\\xdc3R\\x93\\xa9\\x1a\\x14B\\xc5\\x86\\xed\\xd7\\x07\\xda\\x0eQ7\\x1e\\xc7\\xae\\xce\\xce\\xce\\'|n\\x13p\\xdfK\\n\\xee\\x96M\\xbb\\xdd\\xbe\\xa4\\x13Nn\\xadD\\x93\\xdcR\\xb43\\x08\\xc7\\xbf\\n\\xbb\\x9a\\xad|7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eC0\\xa4\\xed%\\x8d\\xb7\\x83q\\xaeMa\\x1e\\x8b\\x17\\xb3\\xbd~\\xa2\\x8eI\\xb6\\xe3\\x87!-\\xa9\\xc6\\xd2\\xb5\\x9aIZw\\x8b\\x8e\\xfa\\xd2z\\x11n\\x1a\\x08\\xf9\\x9f9{~\\xd1x\\r\\x05-E\\x9d\\x85\\xb4\\xc8\\xad\\xdbw\\xbe\\x87\\x11u\\x13}5\\xd4\\xb4\\xbd\\xc7\\x17\\xe8\\x9d\\xcf~\\x94$\\xfd\\xebR\\t<\\xc8\\xf5\\xd0\\xcbV\\xdf\\xfbw5^8n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x85\\n\\xeb\\xb4\\xc6\\xcd(ihm\\xa4e,\\xbf\\x06\\xf1\\xb7\\x1e\\xaf\\\\\\x08\\xcf\\xcc[\\xcd\\xb6dN\\xafq\\x94-IJ\\x0c\\xf4Q\\xa8\\x88\\x92|\\x8fC\\x16\\xaa\\x9d\\xa3\\xe3\\xb7\\x977UPl{\\xf9\\xf4\\xd1cM\\x9c\\xd7r\\xe2{\\x96d%ke[\\xc6\\x92%o%\\xa5\\x9e\\x8932\\xd3\\x99\\x16\\xa5\\xad\\x8ci\\x9d\"\\xae\\xe5\\xe5\\'\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe43\\x0c\\x7foLe\\xdbV\\xa4\\xac\\xa5r<\\xfc.\\xd7\\x0bw)b\\xc11\\x9eL\\x97\\r2\\x9ai:$\\xf4=\\xd3C\\x86{\\xa6\\x8d\\xedt\\xfe\\xa1\\x17\\xb2\\xfe\\xd7x\\x86s\\xb3\\x9b\\x8c\\xba\\xe0\\xe4\\xe2\\xf0\\xeadHD\\xb5M\\x81-,\\xa1\\xb4\\xcb\\\\vM.\\xad\\x94\\xa5\\xd7\\x17\\xba\\x8d[oyIR\\xf7\\x0c\\xb5-\\x06w\\x8dm\\x9b\\xba\\xea\\xd8\\xf8n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x85-}\\xa1p\\x06p\\xb6\\xb2\\xc9\\x17\\xaa\\x87D\\xe5\\x83uE\"d\\x19,,\\xa5-D\\x94\\xb4\\xa6\\x96\\xd98\\x933Qs4\\x91\\x11s3\"\\xe6.\\xd9\\x04\\xf7*\\xa8l\\xa6\\xb2\\x94\\xa9\\xd8\\xd1\\x9cy\\x04\\xb23I\\x9aRfZ\\xe9\\xf1r\\x1b\\x8cY\\x9e\\x15wK\\xcb\\xe7\\x86\\xea<.\\x17N\\x8f \\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc8c\\x14\\x1d\\xa1%\\xd9\\xe0\\xdb\\x0f\\x9f:MMe\\xf6y\\xe8nHa\\xe8\\x13W\\x1d\\xc4\\xae9\\xb8\\xebQ\\xdcl\\x96\\x96\\x9d\\xde4\\x9a\\t\\xe5\\x91\\x1aR\\xbeg\\xa7+]\\x7fi\\x0c\\x02\\xeeM\\xf4Z\\x9b\\x97\\xad\\xa4\\xd2\\xc6\\x93*JbWJq\\x0bDs\\xdd{\\xb9q-\\x1a^4\\xa8\\xc9&M\\x1a\\xcfS\"\\xd3Q\\x88\\xc7\\xbf\\xfc\\xbb\\xae\\xab\\xe7\\r\\xd4x\\\\.\\x9d\\x1eA\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90\\xc6\\xb0\\xce\\xd3\\'\\xb4^\\xcf\\x13v\\x8bGL\\xfa,\\xebkSi6\\xa2\\\\Y-\\xb6iIw\\xae\\xb2\\xcb\\xce6\\xda^Q\\xb4\\x85\\xa5.#To\\x1aL\\xf9r=\\xa2\\x86\\xee\\x1eKG]o\\\\\\xf1H\\xaf\\xb0\\x8c\\xdc\\xb8\\xcf\\'\\xdc\\xe3N$\\x94\\x85\\x17\\xf5\\x91\\x91\\x8dS\\x8d5p\\xa9//\\x8e\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f!\\x1b\\x85\\xed\\x1b\\x1c\\xda\\x19\\xde\\x16;h\\xdd\\x99\\xd2Y=Oa\\xb8\\x85\\xa7\\xb8\\x96\\xd6\\x9d\\xe3G\\xbcE\\xae\\x9b\\xc5\\xcc\\xb5#\\xd7\\x91\\x98\\xabM\\xda\\x9c\\xca\\xed\\xbcO\\xc3\\xe42\\xc1PD\\xc4K![\\xed\\xb0\\xe3\\x92\\xbb\\xdfJ[JI\\x12L\\xf7\\x93\\xb8\\x8dI$\\x83Q\\x9f\\xb8\\xcf\\xdc\\x1bi\\xe3\\x98\\xbc\\xaf|7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eC!\\xc5\\xfbQ\\xe2ll\\xee\\x83#\\xcar8\\n]\\xec\\xb9\\xed\\xd7\\x15-\\\\\\xf5\\x1b\\xedG\\x90\\xe3j\\xd2:\\x9a7\\xd2m\\xa5)\\'\\x14\\xa4\\x12IZ\\x99\\x1e\\xe9\\xa4z&\\xf6\\x9f\\xa0\\x87\\xb6\\xda\\x8c\\x0b\\xd1\\'\\xbd\\x1e\\xca\\x95\\xabF-#WL}+q\\xd7\\x9bC(\\xd1\\x0c\\x99%\\xb3J\\xf7\\x94\\xea\\x94HI\\xe8\\x95\\x1aLgx\\xd2\\xf9\\xbb\\xae\\xab\\xc6}\\x8f\\xd5\\xb3\\x82dn7[\\x11\\x0e\"\\xb6J\\x92\\xa4\\xb0\\x9222iZ\\x19\\x1e\\x83Zg\\xf9$\\x7fd\\x86i\\xb4?\\xc0\\x0c\\x9b\\xf4d\\x9f\\xdd(il\\xff\\x00$\\x8f\\xec\\x90\\xc7\\x8a\\xaaj\\xc2\\xa2\\xf3\\xf1\\x9f\\xfeZ\\x8e\\x0f\\xb0\\x00\\x1f-@\\x00\\x00\\x19>/I]1\\x8bW_\\x81\\x15\\xf7Uqe\\xaa\\xdce*Q\\xff\\x00\\xb6<^\\xf3!\\xac\\x0c\\xd3\\x0f\\xfeeg\\xfab\\xcb\\xff\\x005\\xe1\\xf4\\xbc,\\xccQ]\\xb9\\xc7\\xdc\\x9f\\xda\\xf6p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4\\x1c7Q\\xe1p\\xbaty\\x0f\\x8bL\\xa2\\xb2\\x9a\\xe2\\x9a\\xaed\\x9e\\xe6}\\xc3\\xae3\\x05\\xae\\xedJ\\xef\\x96\\xdbJue\\xa9\\x11\\x92tB\\x14~\\xd1\\x97\\xbbB\\xe7\\xc8U\\xeev\\xeb\\x83\\xd0g\\xac\\xe1s.\\xcc\\xb2GV\\xc3g\\r\\x98o\\xbc\\x96\\x96\\xf1\\xe8\\xca]u\\x086\\xda5\\xf2\\xdd%\\xa9&z\\x90\\xf4N,\\xc7\\x1a\\xbb\\xb9\\xdeV\\xbe\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f!Y\\x95\\xb6\\xac2\\x1e!}\\x94\\xbds\\xb9EE=\\xea\\xcb\\x19~\\x8a\\xf1\\xf7\\x12Zx\\x98q\\x1b\\x84\\x8d\\xe5h\\xe1\\x92uI\\x19\\x1f\\xbc\\x8c\\xcb\\x98\\x84\\xca;O\\xec\\xcf\\x0c\\xb9\\xb5\\xab\\xb8\\xc9}\\x12eL\\x94E\\xb1\\xd2\\x04\\xa7\\x1b\\x82\\xb5\\xa1\\x0bA\\xbe\\xe2\\x1a44\\x85\\x13\\x89\\xd1k2I\\x9e\\xf1\\x11\\xea\\x95\\x11I\\xc6\\xb7\\x1a\\xbb\\x9a\\xb4\\x1e\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f!G\\xa8\\xed\\x19\\xb3\\xcb\\xd8y\\x0c\\xa8\\x99\\x01\\x9bT\\x15\\xca\\xb7\\x9eOA\\x92\\xca\\xd3\\t)R\\x8eKh[d\\xa7\\x9a\\xd1\\n\\xd1m\\x12\\x88\\xf9\\x11\\x19\\x99\\x96\\xb1)\\xedm\\xb2\\xa7&\\x14F\\xf2W\\x9e\\x94\\xe3>\\x91\\x19\\x96j&\\xadsZ\\xff\\x00\\x9e)%\\x939)\\xf7\\x99\\xa9\\x9d\\xf2\"#3\\xe4Fbm\\xff\\x00\\xbfsV\\x9d\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4)V\\x9d\\xa26}S\\x85\\xd2\\xe5\\x8e\\xdf\\x9c\\x8a\\x1b\\xa5)\\x10$A\\x85\"R\\xdfRu\\xdeI4\\xd3jp\\x8d;\\xaa%\\x11\\xa4\\xb7M&G\\xa1\\x90\\xfe\\xd9v\\x87\\xd9\\xddN\\x19\\x8f\\xe5\\x92r\\x88\\xc5\\x8e\\xdf\\xc9\\xf4:\\xd9\\xed\\xb4\\xeb\\x89\\x90\\xfe\\xeb\\x8a\\xee\\xf4JL\\xd2\\xaf\\xb8\\xb8Z(\\x88\\xf7\\x93\\xbb\\xf7\\xc6Dwm\\xfd\\xbb\\x9a\\xae\\x9c7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eC+\\x8b\\xda6\\x92\\xcfh\\n\\xaf\\x89a\\xdd\\xd2\\xc4\\xc6\\xe5^\\xcd\\x892\\x82\\xd1\\x8b=\\xd6\\xdem\\x04\\xe3I[\\x04\\x95\\xa0\\x89J%6Dn\\x9a\\x8d\\x1a\\'MD\\x86!\\xda\\x83g\\x19\\xceLx\\xfdU\\xc4\\xe2\\xb6LG\\'\\xa9\\x9b\\n9\\xf0R\\x88\\xed\\xfd\\xfb\\xaaq\\xf6\\x10\\x84\\xa0\\xb5\"\\xd4\\xcc\\x8bS\"\\xf7\\x8c\\xed\\xff\\x00\\xb7sV\\x89\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe4)xGhm\\x9fm\\x1a\\xf9\\xbaZ\\x0c\\x852\\xec^moGi\\xe8\\x8f\\xc7)m\\xa7\\xef\\x97\\x1dn\\xa1)}$FG\\xabf\\xa2\\xd3\\x9f\\xb8h\\xa3q\\x8b5k\\x15w/(\\xee\\x1b\\xa8\\xf0\\xb8]:<\\x83\\x86\\xea<.\\x17N\\x8f!C\\xc7\\xbbJl\\xe3*js\\xf5\\xb9\\x1f}\\x0e\\x03\\x12$L\\x9c\\xe4\\x19-E\\x8a\\x86\\x17\\xb8\\xe9:\\xfa\\xdb&\\xdbROOaJ%\\x19\\x19(\\x88\\xd2dg\\xfd\\xc7\\xfbI\\xec\\xdf%\\x8bp\\xfcL\\x99\\xb6\\x11S\\tVS\\x13c\\x15\\xf8+n*}\\xef\\x92\\x1fm\\n[\\x7f\\x16\\xfaH\\xcbS\"\\xd7\\x99\\x0c\\xed\\xff\\x00\\xbfsU\\xef\\x86\\xea<.\\x17N\\x8f \\xe1\\xba\\x8f\\x0b\\x85\\xd3\\xa3\\xc8R){El\\xfe\\xfe\\xa25\\x9c;\\xa7\\xbd\\x0eM\\xa4Zf\\x95\"\\xb6[\\x0bT\\xb9&D\\xc27\\x1ci*\"Y\\xa9:,\\xcbwC\\xd4\\xcc\\x88C\\xed\\xf3oQ\\xf6e\\x84\\xe7NP\\xbd\\x16fc\\x8d\\xd5G\\xb5U|\\xd8\\xee\\xa9\\x92i\\xe7\\x8d\\xa6\\xd4\\xa3N\\xe9(\\x8c\\xd0\\xe7$\\xafR\\xdd\\xe7\\xa1\\x19j\\x9c{E\\xf3w5i\\xfc7Q\\xe1p\\xbaty\\x07\\r\\xd4x\\\\.\\x9d\\x1eC2\\xcb\\xfbF\\xd4a{s\\xa6\\xd9\\xdc\\xe8\\x16\\n\\xf4\\xfa\\xa7\\'\\x9c\\xf8\\xb5\\xf2\\xe4\\xee;\\xdf4\\xd3m\\xee\\xb4\\xca\\x8bt\\xc9\\xc5\\x9a\\x9c\\xde\\xddF\\xeaIZo\\x10\\xb1Qm\\xd3\\x07\\xc9\\xb3\\x99x}]\\xd9\\xcd\\xbe\\x8a\\xf3\\xb1\\x9di\\xa8o\\xf7$\\xf3E\\xab\\xad\\x13\\xfb\\x9d\\xd1\\xad\\x1c\\xf7\\x92K3-9\\x90m\\xf5\\xb6n\\xe6\\xab_\\r\\xd4x\\\\.\\x9d\\x1eA\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90\\xce+\\xbbA\\xd11\\x8e\\xe6\\x19~A2=&\\x13MxtQ\\xecV\\x85\\xb8n\\xad\\x0e\\xa2;\\x8e\\xac\\xd2G\\xa2\\x0eJ\\xd4\\xd9hZ\\x117\\xbej\\xd1^\\xcc\\x84\\xce\\xd1X\\rv3\\x1e\\xfaU\\xc4\\x98\\xd0$\\xcbT(\\xa8z\\xaabd\\xcau)%\\x991\\x1c\\xda\\xef]N\\xe9\\x92\\xb7\\xd0\\x85\\'Nz\\x86\\xdf\\xfbw5]\\xf8n\\xa3\\xc2\\xe1t\\xe8\\xf2\\x0e\\x1b\\xa8\\xf0\\xb8]:<\\x85\\x0egim\\x9a\\xc2\\xc5k\\xb2%d\\xed\\xbd[a-p#&,W\\xdf\\x92\\xe4\\x84\\x11\\x9b\\x8dz2\\x1b7\\x89h\"3RM\\x04i-\\x0c\\xf4\\xd4\\x85\\x8f\\x1f\\xda\\x96/\\x94]@\\xa9\\xab\\xb3\\xf4\\xab\\t\\xd5\\x08\\xbe\\x8e\\xcf\\xa3\\xba\\x8e\\xf2\\n\\xd7\\xb8\\x97\\xb7\\x94\\x92\"\\xd5\\\\\\xb7L\\xf7\\xbe=4\\x161\\xa6xU\\xdc\\xd53\\xc3u\\x1e\\x17\\x0b\\xa7G\\x90p\\xddG\\x85\\xc2\\xe9\\xd1\\xe43\\x03\\xdb\\xd3\\x17\\xdbE\\xd9\\x9dn.\\xf4[\\xc18JI\\xa0\\xd5\\xa6\\xf1(\\xb4\\xd7Q\\xe1\\xb5\\xc22\\x9aK{l\\xab\\x84\\xae.j\\xe8v\\xbd\\' z\\x9a<5)\\xf9\\x90\\xd7^\\xd3)\\x97\\x19\\xa5\\x11w\\xdd\\xdb\\xab5\\x96\\xee\\xba\\x9aW\\xa721\\xd9\\xe01\\xb1\\x8bZ\\xff\\x00\\x96\\x88\\xfb\\x17p\\xc6\\xd0q\\x1c\\xabk\\xd7\\xbbQ\\xc9\\xa9\\xf1\\x0c\\xb2%z-\\xb1[v\\xab\\xa5\\xc7z\\xa6m\\xacxd\\xf7\\xa47\\x19FhR]N\\xa4\\xa4\\xe8d\\xa2RS\\xee3N\\xba>0\\x9cb\\x92\\xaf0\\xce\\xea6{\\xb4\\xfb\\xbb\\xc8\\xb4\\xc5R\\xd4L\\xc3\\xe1\\x19O\\xd9!\\xf5\\xeb\\xe8\\x8d5)\\xc7\\x14H\\'\\x10\\x8d\\xf5\\xee\\x12\\x12\\x95\\x99\\xeae\\xbc:\\x80\\x020m7\\xb9w\\x1c\\xec\\x9bd\\x99^\\xcc6=\\xb5\\x1d\\x93YQ\\xa9\\xcb\\xbb|vL\\xe8\\x19%k/9\\x16R\\x9d\\x86l\\x145<\\xb3V\\xeb\\x91\\x94Ii\\xb4\\x9a\\x8by\\xa2B\\x92E\\xa2\\x87\\xb1\\x92\\x9e\\xd6\\xcf{.\\xed\\x12\\xbf\\x1f\\xb1\\xca\\xa81\\xaa\\x94&\\xc6\\xb2\\x9a9\\xc9\\x96\\xc9\\xbfZ\\x86Q!\\x0c\\x177\\r\\xa5\\xa5I2N\\xaa\"Y\\x99\\x11\\xe8c\\xae\\x84f=\\x8dWb\\x95\\xea\\x83U\\x18\\xa1\\xc27\\xdd\\x90L%FhB\\xdcY\\xb8\\xbd\\xd23\\xf6H\\xd4\\xa5\\x1e\\xe9r-y\\x11\\x10lm\\xa4O\\xe5\\xee]\\xc8\\xd2gg\\x92\\x1a\\xda\\xb6C\\x8f\\xe3\\xf9\\x8e=]{\\x9aU9-l\\xd4\\xad\\xabs\\xa8(1\\xdb\\x90\\xecF\\x94\\x93Q\\xafy\\x04^\\xc9\\x1a\\xd2F\\xaeD\\xa4\\xe8Pnl\\xdb\"\\xbe\\xc0\\xfbGW\\xd1\\xe3\\x19\\x81\"\\xf9\\x8a\\xbb\\nB\\xca{\\xf5\\xcc\\xb1K-\\xa5.\\x17x\\xf2\\x94\\xae\\xf0\\xd4\\xc1\\x916\\xb3%\\x92T\\xde\\xa9\"2!\\xdd\\x00&\\xc6\\'\\x8c\\xfeM\\xfd\\xcb\\xb9\\xafj\\x9bA\\xbf\\xce8\\x12t*}\\xa2\\xd1\\xe0R\\x1f\\x98\\x8b\\xe6)\\xea$\\xc5\\xba\\xef\\x92\\xdbg\\x15\\nB\\x0b\\xbfm\\x85)N\\xef8\\xde\\x9c\\xd0\\x925\\x11\\x1e\\xa7\\x1f\\xb0I\\xd6\\xdb,\\xd9\\x02\\xe1\\xd9l\\xef+\\xb1}\\xcc\\xeeS-V\\xc9\\x8b\\xdf\\xcb\\x8a\\xc4\\x99F\\xf3S\\x1cZ\\xd4d\\xb4!\\x0e$\\xd6\\xeaT\\xa2%\\xefj\\xadIF]H\\x03[9\\xcd\\x9a\\xfa\\x97T6\\xc5\\x8cX\\xe6\\xdb%\\xcd1\\xea\\x87\\x8a=\\xad\\xad,\\xc81\\x1d5n\\x92^q\\x85\\xa1\\x06g\\xf1\\x16\\xf2\\x8b\\x9f\\xc49\\xcf\\x18\\xba\\xb5\\xcbr\\xbe\\xce\\xd5L\\xec\\xe3,\\xc6xJC\\xec\\xdbz}+\\x8c\\xc2\\x84i\\xaa}\\x82$\\xbd\\xf7\\x8bA\\xafBJ\\xd3\\xec\\x9e\\xa9\\xd4\\xc8\\xcc\\x88\\xfa\\xec\\x06\\xaa\\xa34\\xc4\\xdf\\xf3\\x89\\x13g\\x17C\\xc2\\xb2\\x9cV\\xe6\\xb37{\\x11\\xb9\\xb9\\xac\\xc7v\\x9d\\x93\\xd9K\\xa6\\x8d\\rJ\\x96\\xf4Yf\\xf3lMa\\x95ho\\x12\\rD\\xa2\\xdd\\xd4\\xcd*3N\\xbaj4m\\xb3dV[K\\xd9\\xde3\\x94Sa\\x99JZ\\xc6\\xb3:\\xcbI\\x15s*\\x96\\xc5\\x8c\\x98\\xac8\\x93u\\xd6#\\x1f\\xdd\\x15\\xa18z$\\xc8\\x94{\\x8a\\xe5\\xa6\\x86}\\x16\\x031\\x85h\\x98\\x89\\xe2]\\xce\\xdbu\\xb1^\\xd1\\'\\xf6\\x7f*\\xd8s\\xe0\\xca\\x93\\x9dG\\xb4(\\xb61W\\x1aKq\\xe3E\\x96\\xb7\\x8d\\xc6\\x96D\\xa4{:r2\\xff\\x00\\x88\\xbf\\x19\\x0e\\x89\\x11\\x8fcu\\xd2r(\\xb7\\xae\\xc6\\'m\"\\xc6r$w\\xd6\\xa3>\\xe5\\xb7\\x14\\x958IN\\xba\\x11\\xa8\\xd0\\x8dOML\\x92E\\xae\\x82Lt\\xa6\\x9bL\\xcc\\xfcP\\x00\\x01\\xb0\\x00\\x00\\x00\\x00\\x01\\x1a\\xcf\\xf4\\x8b\\x8f\\xfeg7\\xfc\\xd9\\x1a\\x00\\xcf\\xd9\\xfe\\x91q\\xff\\x00\\xcc\\xe6\\xff\\x00\\x9b#@\\x1e_\\x17\\xc6\\x8f\\x97\\xde]c\\x84\\x00\\x00< \\x00\\x00*[S\\xfc\\n\\x93\\xf9\\xccO\\xfc\\x96\\x87\\x9a\\xca\\n-+\\xa5Cq\\xc7\\x9anCKeNFyL\\xba\\x92Q\\x19\\x19\\xa1i2R\\x14Z\\xf2RL\\x8c\\x8f\\x99\\x1e\\xa3\\xd3\\xb5?\\xc0\\xa9?\\x9c\\xc4\\xff\\x00\\xc9h\\x7f\\x07\\xd5\\xc1\\xfe\\x08\\xf9\\xcf\\xd2\\x94\\xab\\x841}\\x98vvcf\\xd9nc}\\xf0\\xe5\\xfc\\xf3\\xb1\\xb09PX\\x93\\x91O\\x96\\x83d\\xe0\\xc7`\\xfd%\\xb7\\\\4\\xba\\xee\\xfbN\\x19-D\\xa3$\\xf7dF[\\xa4I\\xcfq\\n\\x9c\\xef\\x05\\xec!\\x87Wc\\x95v\\xd5\\x19_t\\xdeq\\x06D\\xe1\\x194\\xb2J\\xb7IJ$\\x92KQ\\xb0\\xf6\\x88\\xc4/n\\xb6\\x8d\\x9bJ\\xad\\xa4\\xb1\\x9f\\x1eV\\xc8/+\\x1bz,G\\x1cC\\xb2\\xd6\\xf3f\\xd4t\\x9aH\\xc9N\\xa8\\xb7\\x8d(/h\\xf9\\xe8C\\xa7@f0b\"b\\xff\\x00\\x9a\\xfb\\x97s\\x1ff|\\x0b\"\\xd8fN\\xc5%\\x93\\x16\\xb7\\xd5y\\x9dLkw/%C3z\\x05\\x9b1\\xdbm\\xf8\\x92T\\x94\\xfd\\xcd\\xa3A \\xd9%\\xe8I48\\x82\\xe7\\xa6\\xbd\\x0f\\x962\\xe4\\x9cV\\xe5\\x96[S\\xae\\xb9\\t\\xe4!\\xb4\\x11\\x9a\\x94f\\x83\"\"\"\\xf7\\x98\\xfe\\xe4\\xf8\\xad6kI\"\\x9e\\xfe\\xae\\x1d\\xd5L\\x8d\\xd3z\\x0c\\xf6R\\xf3.n\\xa8\\x94\\x9d\\xe4(\\x8c\\x8fE$\\x8c\\xbf)\\x10\\xaaPv}\\xd9\\x96+q\\x16\\xda\\x9bg\\xf8\\xddU\\x9cUo\\xb12\\x1d[-:\\xd2\\xb4\\xd3T\\xa9)##\\xd0\\xcf\\xdc7M3De\\x8e\\x05\\xd8%\\xe6\\xca2[N\\xc4\\x9b)\\xa9\\x81GfV\\xb8\\xeah\\xedlq\\xf8\\xae.\\x04\\xf9\\x08\\x8eh\\\\\\x86Pz\\xa1M\\xbf\\xa9\\xa9e\\xcc\\x94KAi\\xedh=Q\\xb0=\\x9e\\xe5\\xd8\\xbeiu3\\x00\\xda\\xc5\\x99|\\x14\\xcd[\\xc9\\xc8\\x9d\\xb1z\\xc2C+\\x90\\x97M\\x10\\xda\\x94\\xf9\\xafy\\x97\\x1am\\xd3RH\\xb9\\x91n\\x9a\\xb9\\x90\\xeb\\x00\\x19\\xd8\\xc7k\\x17q\\xa2W\\xb4k\\x8cW\\x1a\\xba\\xb8\\xa8\\xca\\xb2*,;hQl+\\xde\\xb4\\xa96\\xaf\\xa5T\\x947Y[\\x8e\\xc5JIn)\\xb7d\\x19jH%\\xad)5n\\xeb\\xef\\xf1\\xe74\\x99N\\xd0\\x8bo\\x17\\xd5\\x98FH\\xd32\\xe7b\\x93\\xebbN\\xaf\\\\y6,\\xc2y\\x0e>l\\xb6\\xbd\\x0c\\xd4ImZ \\xf4W\\xde\\x91\\x91\\x19\\xe8;\\\\\\x06v7\\x8bL\\xfeZ\\xc5\\xdc\\xf8\\x9b\\x99\\xf8\\xe7i\\xa4e/b\\xb9$\\x9a\\x0c\\xbb\\x16\\xac\\x81\\x1a\\\\J\\xa7]\\xf4)\\x08\\x92\\xfa\\xd4\\xdc\\xb4\\xa4\\xb5\\x8f\\xa2$!Fk\"\"\\xddQk\\xa9\\x19\\n\\xf6\\xc8Y\\xbd\\xa2\\xda\\xeb\\xd8\\xee\\x15K\\x98\\xd1l\\xe6SVO\\xda\\xd7e5\\xa6\\xc4J\\xa9\\x8ap\\x94\\xd2\\xeb\\x9fW5\\xa5\\xd5\\xad\\xc5\\x1biR\\xd2D{\\xc5\\xbag\\xa1u \\r\\xec\\xf5\\xbd\\xcb\\xb8\\xaff\\xd8\\xa5\\x95\\xaff^\\xce\\x15\\xadTI\\x9d\"\\x875\\x8a\\x9b6\\x18\\x8e\\xa7}\\x0c\\xe2\\xbd1\\xb7\\x96\\xe1\\x11\\x1e\\xe2P\\xe2y\\xa8\\xf4\"3/\\xc6-\\xbbq\\xc3e\\xd5v\\x8ac3\\xb6\\xa9\\xcem\\xf1+\\x0cm\\xba\\x94H\\xc0\\xe6MnT\\x19MHq\\xdd\\xd7Z\\x88\\xe2\\x1cSN%\\xddI^\\xd1\\x12\\x91\\xcc\\x8b]GJR\\xe3U\\xd8\\xeb\\xb6K\\xae\\x8cQ~\\x11\\x96\\xa9\\xd2R\\x95\\x1e\\xea\\x9eRRKY$\\xcfD\\x9a\\xb7H\\xcfM\\x08\\xd4f\\xa3\\xe6\\xa33\\x93\\x19\\x8c\\x18\\xcbo\\x97b\\xee=\\xcf\\xb0\\xaa\\x8c\\x17\\x0b\\xc6n0\\xd7\\x17\\xban#\\xdb;V9)\\xc4\\xc2^\\xb5\\xb3\\t\\xf6\\x1f$\\xcaI\\xe8\\xa6RimE\\xbc\\xa2\\xfb\\xed\\x0b\\xe3\\x1fX\\x95|x[\\x0f\\xcc6e\\x9c\\xe0\\x19\\xb4\\xd3\\xad\\xb7\\x9f5k\\xa6\\xaby^\\x90\\xdb\\x96\\xca~<\\x88O\\xa4\\xc9+Z;\\xe6\\xdd\\xddI\\x9a\\x88\\x9a_\\xb2zn\\x9f]\\x00\\x91\\x83\\x11\\x16\\xbf\\xe7\\xe4\\x17s\\x96\\xcd\\xb6\\x85\\x9bSl\\xb2|\\xdc\\xb3\\x12\\xcasfZ\\xc9[\\x81H\\x99u(b\\xdeEy\\xa9\\xae\\xee\\\\\\xa8\\xfa$\\x92m\\xac\\xd7\\xaa\\xcd)3$%F\\x94\\xeaj\\x1b\\xeeE\\x05\\xcb<~\\xce\\x1b:w\\xd2\"\\xba\\xca7\\x8fB\\xdeR\\x0c\\x8b_\\xfb\\x98\\x90\\x01\\xd6\\x9am\\x16\\x99G#c\\x14\\x19\\x14\\xdd\\x8b\\xf6k\\xaa{\\x15\\xbc\\xaf\\xb3\\xc5r\\x9a\\xe8\\x96\\xd1eAY*1G\\x81)\\xa7\\x1f3-K\\xb85\\x1atw]\\xd3\\xdeO=LI\\xec\\x92=\\xe5.\\xd6\\xa4c\\x98e\\x16_M\\xb3\\x89l\\xd9=kY\\x95\\xd6\\x9b\\x10\\xea\\xe5\\xa9\\xc2Sk\\xafy\\\\\\xd6\\x87V\\xb7\\x14m\\xa5KI\\x11\\xef\\x16\\xe9\\x9e\\x85\\xd4\\xc09\\xc6\\x15\\xad\\xaa\\xdd\\xcc\\x1b\\x1c\\xc8$\\xe3=\\x91-q\\x9c\\x8f\\x1d\\xbb\\xc6\\xec\\xf0\\xdcY\\xf8\\x96\\'o\\x01lGuM\\xb2\\xe9)L<~\\xc3\\xc9\\xd1\\x1b\\xdb\\xc83-\\x14\\x9f\\xc65~\\xcdt3\\xb1\\x8e\\xcf{7\\xaa\\xb2J\\x9b\\x9f\\x13\\x1f\\x82\\xdb\\xcd\\xaf\\xef\\x9bWp\\x9dP\\x7f\\x95?{\\xff\\x00au\\xc91\\xba\\xec\\xba\\x99\\xfa\\xabh\\xc52\\xb9\\xf5 \\xde\\x8e\\xa5\\x19%\\xc2J\\xd2\\xb2J\\xb42\\xd5&i\"4\\x9f%\\x16\\xa4ddfBLj\\x9a2\\xccyE\\x8b\\xaa;;\\xca\\xd7\\x94\\x9eK\\xbf\\x8aY\\xe2\\xbf\\x07\\xdc\\xc8\\x82_\\tGK?\\x08\\x927\\x7f\\xda\\xda\\xd0\\xfd\\xb6\\xd7\\xaf%\\x1f\\xbft\\xc5\\x12\\xce\\xbe\\xd6\\x9f\\xb5\\xedU\\xda\\xa9leQ\\\\b*\\xa6M\\x9cF\\r\\xd6\"\\xc9jR\\xe4\\x1a_Q\\x7f$JA\\xe8\\x95\\x1f#W\\xb3\\xef1\\xb4\\x80\\xd4\\xd3x\\x8b\\xca8\\x86&+7\\x17\\xd8\\x96\\x1b)\\xdcw?\\xa8\\xda\\r\\\\\\xfc\\x95\\xeak\\\\j\\x99r]\\x86\\xa7l\\x9fZZ\\x94\\xc2\\x92d\\xa6d$\\xdaQo\\xa3t\\xc9:\\xef#\\x91\\x9e\\x88\\xc5\\xaea\\x8bm\\x7fg\\xb9\\xd6_\\x88\\xdb\\xcb~\\xd7\\x05*kD\\xe3\\x90\\x174\\xa0\\xd9\\x9c\\x86_Z\\x1cC{\\xc6\\x86\\xcf\\xdb\"Y\\xea\\x924\\xe9\\xaf\\xc6:h\\x07(\\xc2\\xb7\\t\\xe5\\xd9n\\xaf\\xed\\x0f\\xf0\\x03&\\xfd\\x19\\'\\xf7J\\x1a[?\\xc9#\\xfb$3M\\xa1\\xfe\\x00d\\xdf\\xa3$\\xfe\\xe9CKg\\xf9$\\x7fd\\x86\\xbcO\\xf1Q\\xf3\\x9f\\xa5-\\xc7\\x07\\xd8\\x00\\x0f\\x9a\\xa0\\x00\\x00\\x0c\\xd3\\x0f\\xfeeg\\xfab\\xcb\\xff\\x005\\xe1\\xa5\\x8c\\xd3\\x0f\\xfeeg\\xfab\\xcb\\xff\\x005\\xe1\\xf4|7\\xf1\\xd7\\xf3\\x8f\\xb9?\\xb5\\x9bm3\\xb3\\x94m\\xa1m\\'\\x1b\\xc9\\xbe\\x1e\\xc8a5\\x12S\\xafNb.Ka\\x15)I\\xc4[(\\xf4d4\\xe9%\\x95o\\x1aMF\\x8d\\xcd\\xe2\\xdf\\xd4\\xcfx\\xc8\\xe8\\x1bI\\x8dq\\x86\\xed\\xb2,\\xcd\\x9bQ\\xe6\\x8d\\xe5S%U\\xc3\\xb7q\\xd8\\n\\x91Au\\x05;\\xa8[\\xaf\\xc9^\\xa4\\xdb\\xac\\xb4j.\\xf3y+3F\\x9a,\\x8fQ\\xd4\\xa05V\\x1cO\\r\\x1c\\xee\\xe2\\r\\xa1B\\xc9i\\xb65\\xb6=\\x9d\\xb7\\x82\\xe5V\\x97\\xd6\\xd9t\\xdbXOW\\xd4\\xba\\xf4G\\xa1\\xc8\\xb0D\\x94:\\x97\\xd2[\\x86d\\x8326\\xc8\\xcddd~\\xce\\x9a\\x99Y\\xf6\\x89\\x83\\xe4S\\xb6\\x7f\\xda\\xca\\xe2\\x8d\\x19\\x1a]qF\\x84\\x91\\x99\\xa4\\x9a=\\xf3=4\\xdd\\xe7\\xee\\xe64N\\xd2\\xf8]\\x82\\xb6\\xb7\\x81\\xe6\\xb2+2\\xcb\\xacR\\x05|\\xea\\xb9\\xcdar\\xe53c\\t\\xc7\\x94\\xd2\\xdb}(\\x8c\\xb4:\\xe3j\\xee\\x8d\\x0bJu\\xd3\\xd93#\\xd0\\x87AVcU\\xd4\\xd6v\\xd3\\xe1F(\\xf2m]D\\x89\\x86\\x85\\x1e\\xeb\\xce\\xa5\\tl\\x9c4\\xeb\\xa1+q\\x08I\\x99\\x16\\xa6HN\\xba\\xe8BLf0c-\\xa7\\xcb\\xb1w$\\xde\\xe0X}N\\x03S\\x7fQ\\x8am^\\x8e\\xeaU\\xd4\\x9bX\\x96\\xf1#\\xc9\\xb2\\xbb\\x833\\xb9\\xf4s}\\xf6\\xdd[\\xab6\\xdei\\xb4$\\xd0\\xb224\\xe8J$\\xfb\\xcb\\xd3\\x88\\xdd\\xe7\\x98\\xd6\\xd0\\xb0}\\xa0\\xed\\x07\\x10\\xba\\x95>\\xd7\\x05\\xf8\\x1e\\xc1\\x18\\xfdb\\xe5\\xae<\\xf4\\xcc\\'\\x92\\x97Zkx\\xda\\xdfmDz\\x9f\\xb0\\x95\\x12\\x88\\xcc\\x88\\x87V\\x80\\xbb+M\\xe2K\\xb8\\xbfdx\\xceU\\x8dF\\xd8\\x1d\\xf5\\x96\\x1b}\\x1d\\xa8W\\x99D[(e\\tJ\\x93]\\xe9\\xf3]\\xf4w^l\\xb9\\x93^\\xe3S\\x85\\xaaI&J\\xd7t\\xc8\\xc5\\xb7\\x11\\x8a\\x8a\\x8am\\xb5`9\\x96\\x03\\x94\\\\B\\xb4\\xbb\\xba\\xb8$\\xc0\\xacq\\xc8\\xd6Pd\\xa8\\x9cB\\x18\\x90FH7\\x8c\\x94i$o\\x12\\x89I\\xf8\\xb4\\xd4u\\x18\\t\\x189xO\\xe5\\xac]\\xcc;.\\xcd\\xb3\\x0ccg\\xdbD~\\xd3\\x16\\xcc\\xf3|>\\x98\\xe2\\xa3\\x1b\\x83{RM^\\xcfmI\"}\\x85\\xb4\\xa4\\xa5N\\xa5\\xa5\\x1aw\\\\Rw\\x94[\\xdf}\\xbaC\\xa6b>rb2\\xf1\\xb4\\xe4sq\\tY\\xb4\\xe9\\x11-\\x1a\\x96\\xbb\\xaa\\xd3R\\xd4\\xbd\\xc6?P\\x1di\\xa6i\\x8b]%\\xc6\\xb8\\xc6%\\x93\\xb5\\xd9\\xc7f\\x18\\xac\\x9cV\\xee-\\xde-\\xb4\\x1a\\xa6g\\xb0\\xe4\\x15\\x99\\x1bMY\\x93\\xcb\\x94\\xda\\x92FK\\x8eM\\xac\\x95\\xde\\x97\\xb2Z+S-\\xd3\\x16\\xbao\\x86\\xb1\\x8e\\xd1\\xc5\\x1b\\x02\\xa1\\xcc+i-\\xee\\xe5\\xbd\\x96\\xc2\\xb9\\xad4\\xd2,\\xbb\\xa5\\x1f\\xc2\\x11$\\xab\\xdc\\xe3\\x8e%\\xbfa\\n2^\\xf1\\x9a\\x90\\x93-GO\\x80\\xe7\\x18V\\xb5\\xa7\\x85\\xbb-\\xd8\\'d\\xd9\\xd3\\xb1\\x1d\\x9f+\\x04\\xbf\\xc7\\xee\\xa8\\xedq\\xd9\\x16\\n\\x936t\\x05\\xb7\\x01\\xf6\\xd55\\xe7\\x10\\xb6$\\x99n:F\\x87\\x12\\xafd\\xf9s\\xd7\\xdc=\\x1d\\x88k%U\\xf6]\\xc2\\x13)\\x0bmR\\x91*{HYhd\\xcc\\x89o>\\xcf\\xec\\xdcA\\xff\\x00\\xdcl\\xb7\\xb4\\xb12JY\\xd5S\\xd0\\xa7`\\xcdeq\\xdfm\\x0e)\\xb3[j#J\\x93\\xbc\\x93#-H\\xcc\\xb5##\\xe6=1b\\xb3\\x06+1\\xa34\\x86#\\xb2\\x82m\\xb6\\x9bI%(I\\x16\\x84\\x92\"\\xe4DDZh5M\\x19f<\\xa2\\xdfOb\\xea\\xb6%\\x95.\\xef2\\xcck\\x15\\x8aY\\xd1\\xa6\\xa9\\xf8\\xed\\x95\\xbc\\xc8\\xe9m\\x8bm\\xf6\\xb7\\xb7\\xd9Y\\x1e\\xab$hH3?w\"\\xfcdX\\xb7j6\\xeci\\xb2\\xa8\\x99\\x1e\\x11K\\x99\\xa7i\\xb1\\xeaN=e\\xa5\\rY\\xcc\\xac\\x9c\\x83x\\xd4P\\'k\\xaa\\x12\\x8d\\xe25o+sp\\x97\\xbcK\\xd7\\x90\\xe9p\\x16\\xaa3Sk\\xa5\\xdc\\xfdO.\\xeb\\x06\\xed7{cs\\x8b\\xdc\\xc9\\x87\\x98\\xd2R\\xc5b\\xc6\\x9e\\x0b\\x92\\xe1\\xc5\\x92\\xc2\\xe4%\\xe6\\xdfq$}\\xd2K\\xbfJ\\x89k\\xd0\\x8d$|\\xf9h\\'\\xbb(\\xe3\\x93\\xb1\\x8d\\x96L\\x8deY\"\\xa6k\\xd9\\x15\\xd4\\x95\\xb3-\\x852\\xe2\\xd2\\xbb\\x17\\xcd\\xb7\\r*\"3%7\\xb8d\\x7f\\x1awL\\xb9h60\\x12\\x9a-7\\xbf>\\xebtS\\xff\\x00\\x87\\x18\\xa7\\xf7\\xb2\\x7fp\\xa1\\xa1\\x8c\\xf1\\xff\\x00\\xc3\\x8cS\\xfb\\xd9?\\xb8P\\xd0\\xc7?\\x17\\xff\\x00\\x0f\\x97\\xde]#\\x84\"\\xf2\\xaf\\xc1\\x8b\\x8f\\xcc\\xde\\xff\\x00A\\x8a\\xa69\\xf8=W\\xf9\\xab_\\xe8!k\\xca\\xbf\\x06.?3{\\xfd\\x06*\\x98\\xe7\\xe0\\xf5_\\xe6\\xad\\x7f\\xa0\\x87O\\x0f\\xfc3\\xf3\\xfb%_\\xb5\\xe1g4\\x84\\xfe{3\\x12KR\\n\\xca-c\\x16\\xabt\\xd2\\x9e\\xe4\\xdau\\xd7ZJH\\xf5\\xd7x\\x94\\xca\\x8c\\xcbM42\\xe6|\\xc8\\xb2\\xbc\\xc7\\xb5\\xee+\\x88\\x9eQ!\\x18\\xf6U{G\\x8d<\\xb8\\x96\\x97\\xd5\\x15\\xc8r\\x0b\\x12Q\\xa1)\\x82Z\\xdcI\\xa9d\\xa3JL\\xd2\\x93JL\\xfd\\xa5\\x173\\x12U\\xbd\\x94voU\\xb5G3h\\xf8\\x9d\\x13RI\\x88\\xfe\\x8f\\x1d\\x15m$\\xe3\\xcbi\\xf7\\x1e\\xf4\\xb4\\xaf\\xdeN\\xa8\\xd6\\x82\\xd7M~\\xe6\\x93\\xd7\\xf1s\\xbe\\xda\\xe8s\\xdd\\x91vu\\xda\\xde\\x15#\\rM\\xa6)\"|\\xbb8Y\\\\{6\\x10\\x84G\\x930\\x9f\\xdcy\\x85\\x1fzn\\xa1K4\\xea\\x94\\x9aU\\xcb\\x99h9bW\\x89M7\\xf9\\xf9\\xb3\\x11\\x0e\\xa6\\x7fn4Q\\xea6\\x99b\\xa8\\x96&\\xc6\\xcf\\xd4\\xf2m\\x12M\\xb7\\xbc\\xf7u\\x11\\x12\\x95\\xdc{z+\\xd8Y\\x11o\\x1a=\\xadK\\x91s\\x117=\\xa3\\xaa!I\\x8b\\x16\\xa3\\x18\\xca2\\xe9\\xcb\\xaeb\\xd6\\\\\\\\~\\x02\\x1f]{\\x0f$\\xd4\\xd7~jq)%\\xa8\\x89FM\\xa0\\xd4\\xb3$\\x99\\x91i\\xa1\\x9eg\\xb4-\\x9f\\xed\\x1a\\xa9\\x8d\\xbd\\xd0\\xe3\\xb8ad\\xb16\\x82\\xcb\\xb2+\\xad\\x13i\\x1e3q\\xd6\\xe5r\"\\xb8\\xd3\\xc8qD\\xbd\\xe26\\xf5A\\xa5&\\x95o\\x11)H-L\\xabs;9\\xd9\\xe3y\\xdc\\xac\\x82\\xcfc\\xd4\\xdb[\\x89{KT\\xca\\x98\\x99\"\\x1bri\\xe6E\\x8a\\x98\\xebF\\xb2\\x0fuL\\xac\\x90\\x83\\xdel\\xcc\\xc9I?d\\xf5#\\x12k\\xc4\\xe1\\x11\\xdb\\xe6Z\\x1b\\x14\\xbe\\xd5x\\xbb\\xb6x\\xe5~?O\\x90f\\x12\\xf2\\x1aU_V\\xb7G\\x11\\xb5w\\xb1\\xd2\\xe1!IWz\\xe3}\\xda\\xc8\\xcc\\xf5%\\xee\\x91i\\xbb\\xae\\xf1\\x92NRWh\\xccr\\x0e\\xcf\\xf2\\xcc\\xaeD\\x0bfQ\\x8c\\xda9K:\\xa9M4sNY:\\x86\\xd0\\xdbi\\'\\r\\n7\\r\\xd6\\x8d\\x07\\xbeDd\\xe2O\\x97\\xc5\\t\\x87\\xec\\xaev7\\xb7Lj\\xf2\\x061\\x0b\\x1d\\xc5\\xe1\\xe0\\xafT\\xaa5s\\x8d\\x13\\x10\\xe695\\x97\\xcd\\x84%;\\xaa2\\xd1.\\x1e\\xf9 \\x92z|Fz\\x0c\\xf3*\\xc2\\xcb(\\xed\\xa7\\x06\\xa6\\xa2\\xc6,\\x9cq\\xf6\\xa2e\\x99<\\x06VK[3\\xe0w\\x8cD\\xdf\\xd0\\xfd\\x83p\\xdd\\x8e\\xad\\xd3-U\\xe8z\\x97\\xb8\\xc5\\x9a\\xb1\"/?#GX$\\xcdI#4\\x9aL\\xcb]\\xd3\\xf7\\x90\\xc1\\xec\\xbbD\\xc3\\xc3s\\r\\xaeK\\xc8\\x15~\\xdd&\\x1b\\x1a\\xa8\\xdd\\xab]dm\\x12R\\x1cy\\x05&;\\x88t\\xdcy.n\\x91\\x9a\\\\$\\x1aI\\x05\\xbaFj2\\x17\\x89\\x1d\\xa2vS\\x12C\\xac?\\xb4\\xdc9\\x97\\xdaQ\\xa1\\xc6\\xdc\\xbf\\x88\\x95!Dz\\x19\\x19\\x1b\\x9a\\x91\\x91\\xfcC\\x13\\xda\\xd6\\xc9\\xb2\\x8d\\xa2\\'m\\xf6X\\xdc\\x06n+\\xb3\\n\\\\m\\x142\\xa3\\xce\\x8em\\xcf\\xee\\x1dy\\xc7M\\n5\\xe8I$8\\x85\\x12\\x95\\xa1(\\x95\\xec\\x99\\x8d\\xe2U6\\xff\\x00\\r\\x7f\\xf2R#\\x9b^\\xc7{A\\xd0\\xda\\xdc\\xdd\\xd5\\xdcU\\xddas*j\\x8e\\xf1\\xc4\\xe4q\\xdb`\\x9d\\xaf#2T\\x94\\x1a\\x1c^\\x89I\\x96\\x8aJ\\xf7V\\x9dKT\\x90\\xcf!\\xf6\\x98\\x9f\\x9cm\\x93e\\x15\\x94\\x94\\xd9&;\\x8a\\xdf\\x9d\\x93\\xcfH\\xbc\\xaci\\x86mXn\\x1a\\x9ce\\xc6\\x94jR\\xd0D\\xa2%\\xe8}\\xda\\x8c\\x8c\\xb9\\x19\\x0f^\\xdc\\xf6\\x17\\x7f\\xb5}\\xa3\\xdf\\xfa*\\x13\\x0e\\x9a\\xd7gV8\\xeam\\x16\\xeawZ\\x9a\\xec\\xa6\\\\i\\nA\\x1e\\xf9\\xa7D(\\xcc\\xc9:hFZ\\xeadB\\t\\xbc[i\\xbbM\\xcd\\xf6W\\xc5\\x1b=V%]\\x8e\\xc5\\xb3\\x87kb\\xcd\\xc4I\\r\\xa9O\\xd7\\xaa:V\\xc2\\x10\\xbd\\xfd\\xc3W\\xbbR%\\x16\\xa5\\xa9hFc\\x9dUb^\\xde~\\xba\\xae\\x8d\\x06\\xa7\\xb5&3mgREI\\x92E\\xc7.&\\xa2\\xbe\\xb3+\\x93^I\\xab\\x9a\\xf3\\x8a\\xdch\\x90\\xbd\\xf3p\\x92\\xe2\\xb4J\\x16\\xb6\\xd2\\x95\\x19\\x96\\x86z\\x90\\xf4\\xd7\\xf6\\x97\\xc6,\\xec\\xab\\xe9\\xd9\\xaf\\xb7\\xe2yW\\xaf\\xd0/\\x1e6Z\\xf4\\xd8\\xce\\xb2[\\xee\\xbe\\xea{\\xcd\\xd2a-\\x1a\\x1d\\xef\\tFF\\x97\\x11\\xa6\\xaaQ$c\\xfb\\x07\\xec\\xf8\\xac\\x11\\xec[\\x1c\\xc96\\t\\x8b\\xca\\x99F\\xe16\\xe6\\xd0\\x19z\\x11\\xa6A2Fl\\xcaCfF\\xff\\x00|f\\x96\\xf5%\\x11h{\\xca\\xde\\xf7\\x10\\x98\\xc7\\xb6k\\xb4\\x8a\\xbd\\xb6/l\\xefPG;+\\xc9j\\xa3\\xb1\\xc5R\\xe4R~\\x1d*M)\\x8f \\xa4\\x12\\xb7U!*o\\xbdq$\\xe2\\x89Hp\\x90\\\\\\xdbHEx\\x96\\x89\\x9f\\xa1hhq6\\xdf\\x11\\xac\\x9bjv\\xd6\\xf6-V\\xe0\\xd8!5\\x01\\xf7\\xcd\\x1b\\xdd\\xe4\\xae\\xe5/\\xc9Y\\x99\\x11\\xa8\\xf7R\\xeb-\\xa5\\t\\xe6j\\xdf\\xfb\\xe34\\xe9\\xe5\\xa7\\xedMMak\\x1a\\xbe~\\x1f\\x98c\\x92e\\xd5\\xcc\\xb8\\x88WU\\xcd0R#FBV\\xe2\\x93\\xa3\\xa7\\xa1\\xe8\\xb4\\xe8\\x85h\\xa2\\xd4\\xb7\\x89:\\x91\\x8c\\xc5\\xed\\x8f\\xd9\\xe6\\x18\\xf7i\\x9d\\x9b\\xc6y\\xa8\\xb7v\\xb9\\x13Y\\x1dk\\x92\\xb5\\xee\\x9dK\\xec\\xc6u\\x83W\\xc7\\xdd\\x9b\\xd1\\x1dh\\xcf\\x9e\\x9b\\x8b\\xe4zh\\x17VY\\x86\\xd36\\xfd\\xb3\\xea\\xcc\\xb7\\x0bs\\x03\\x99\\'\\x14\\xc8\\xe1\\xa4\\x9c\\xb2\\x8f9.\\xad\\xc4CJ\\xd4\\x83eG\\xa2\\x12{\\xbaoh\\xa3\\xd7\\xefKNs=q\\xf9\\xe7b\\xd0\\xdc\\xd8\\xdb\\x95\\x0c\\x8am\\x99Y\\xa6%\\x891\\xb4\\x050\\x9a\\xb4\\x9bm\\xef3\\xde\\xc4\\\\\\xa4\\xf7\\xe5\\xbf\\xa2tB\\x0c\\x8ft\\xd7\\xedh\\\\\\xcb\\x98\\xaf\\xc6\\xedM\\x8cJ\\xb0\\x88\\xb2\\xa5\\xc9\\x1b\\xc5\\xe6OMl\\\\\\xc1u\\xe4U\\x0f>\\xa7;\\xa4\\x12\\\\\\xdf\\xef7\\x14\\xe6\\x88K\\xa6\\xd96fe\\xa2\\xb421\\x97\\xe3\\xdb>\\xdam\\x9c\\r\\x82\\xe36\\xd8!\\xd4W`o\\xb7\\x1e\\xd6\\xd8\\xad\\xe2\\xb8\\x97\\x90\\xd5k\\xd1\\x12\\xf3\\x08J\\xcdf\\x85\\x1a\\x88\\xcfx\\x92\\xb25$\\xb7\\x0c\\xb7\\x94^\\x1d\\x88vp=\\x9e\\xab\\x1f\\xc52-\\x83\\xe3\\x17n\\xd4J6\\xcfh)v\\x11&C\\x08Z\\x94\\xd4\\x83iDo\\xf7\\xe4[\\x84i2\\xd3R3%\\x8b\\x9f\\x12mh\\xed>_\\xec\\xb45W\\xbbVS\\xa8\\xb37k\\xf0\\xcc\\xbe\\xe2\\x16!*|;\\x89\\xd0\\xa1\\xc7\\xeeYr\"\\x14\\xb7\\t&\\xb7\\xd2no\\x12}\\x92A\\x19\\xfbI\\xde$\\xef\\x10\\xbaK\\xdb\\x1d\\x0bY\\x06%Q\\x11\\x13-\\x9f\\xc9\\xab\\xa4\\xdb\\xc3v\\xbd\\xa4\\xb8\\x84De\\xb4,\\xdds\\xda%\\x11(\\xddm\\t\\xdd%\\x19\\xa9dZ\\x11je_\\xd8\\x86\\x13a\\x84\\xd5\\xed!9,&\\xa1F\\xb5\\xcb\\xad\\xad\\x9a\\xef\\x9dmhv\\x1b\\xcb#C\\x8a\\xd1FI#I\\x1e\\xa4\\xad\\x0c\\x8b\\xdeD2\\x9e\\xc6\\x98t\\xc8\\xb33k\\xf2\\x98\\xc5\\xf5U\\x03\\x8fa\\x98\\x84\\x96\\xde\\xd5\\x0e\\xd6F\\x90\\xeb\\xa4d\\xe1jFF\\xa7[h\\xd4Z\\xff\\x005/~\\x9c\\xf5\\x15Wx\\x89\\xf8\\xa3\\xa2\\xf6q\\x9dF\\xda^\\x13U\\x93D\\xad\\xb3\\xa8\\x8f`\\xda\\x9cD+\\x98\\xde\\x8d-\\xa2%\\xa9:8\\xde\\xa7\\xbb\\xae\\xee\\xa5\\xcc\\xf5##\\xf8\\xc5Z\\x97oU\\xb9.\\xd0\\xed1Z\\x8cs#\\xb3Ed\\xe7+&\\xde\\xc7\\x84\\x83\\xadbZ\\x19\\'V\\xca\\x9c7\\tdd\\x93Ionn\\xef)%\\xbd\\xa9\\x90\\xb4\\xec\\xe2\\xd7%\\xbc\\xc2j\\xa7f\\x14L\\xe3Y#\\xcd\\xa8\\xe6UG\\x96\\x99H\\x8e\\xa2Z\\x88\\x88\\x9cO%j\\x92I\\xf2\\xf7k\\xa6\\xa7\\xa6\\xa3\\x13\\xb7\\xc0\\xb3)\\x1d\\xa2\\xebr\\x0cc\\x0b{\\x0e`\\xadIW\\xb9#7m*\\x15\\xedrYRw]\\x84\\x93\\xde9\\x1b\\xdb\\x84\\x95\\xa9\\x1a\\xa7w\\xef\\xcc\\xb9\\x16\\xea\\xaa\\xa8\\x8af>\\x83\\xfb\\xb3^\\xd5\\xd3\\xec\\xb6e\\x9efY\\x8e\\x17yU]\\x8c\\xca\\xb3R\\xdfa\\x98\\xdb\\x8e3\\x1eB\\xdbLt\\x11IQ\\x9c\\x84\\xa5$K\\xd7u\\x06\\xa2V\\xea\\x8c\\xb4\\x16,\\xdfn\\xd3\\xe3l\\x8a\\xd7h5T\\x175\\x15\\x94N\\xc7\\xb0Z.b\\xb4\\xdf\\xc2\\xb5\\xc6\\xa4\\x9b\\xeai$\\xb58\\x8f\\xb9)KN\\xf9!D\\xb4\\'T\\xe9\\xbcG\\x9cZ\\xec\\xbfh\\xcdlsm;2g\\rT\\xc6\\xee^\\xba\\xb0\\xa5\\xbcf\\xce134\\xe5\\xc87\\x9a`\\xdbZ\\xd2\\xb6\\xd6]\\xea\\x88\\xcdDH-\\xcf\\xbe=Hi\\xdd\\xa9\\x19}\\xbe\\xcb\\xd9\\x8d[,\\x1b\\xb665I\\xa7\\x8b\\x19\\x1a\\x1a\\x9c\\x93 \\xd1\\x1d\\xa6\\xd3\\xf8\\xcc\\xd6\\xe2H\\x87(\\x9a\\xf2\\xcd\\xe7\\x84w].\\xd8\\xa3Ijdf\\xa40\\xe2]a\\xd4\\x13\\x8d\\xb8\\x93\\xd4\\x94\\x93-H\\xcb\\xfa\\xc8V\\xb6k\\xb4\\x18\\xdbN\\xc5[\\xbd\\x89UoL\\xc2\\xdfy\\x82\\x8bw\\x0c\\xe2\\xc9#m\\xc5 \\xd4h3?d\\xcd&dz\\xfb\\x8f\\xe2=H\\xa5\\xb1zs\\xc7q\\x9a\\x8a\\xa3s\\xbd80\\xd9\\x8an\\x7f\\xcd\\xb8\\x82N\\xbf\\xf7\\xd0D\\xec\\xd2\\xe3*\\xbd\\xc5[\\x97\\x99\\xe3\\xd1\\xf1{\\xc3}\\xe4.\\xbe4\\xd4\\xcbB[K\\x8a&\\xd7\\xde\\'\\x97\\xb4\\x82J\\xb4\\xf8\\xb5\\xe7\\xa7\\xb8\\xbd7\\x9b\\xc3,\\xfe\\x1e\\xd3\\xefb\\xedSm\\x15\\xef\\x94\\xcbz\\xacf\\xb2\\xa6Uue|v\\x0eBV\\xf32\\x14\\xf6\\xe1\\xac\\xd0KR\\x8d\\xb4\\x1e\\x8e/B\\xdd\\xe5\\xa6\\xa6!0\\xce\\xd40Z\\xc4\\xb0Hg\\x03,\\xda\\x16Gq\\x8e\\xb3~\\xfb\\xb5t\\xec7!1T\\xad\\xc2\\x90\\xfb)x\\x90\\x83R\\xf5.\\xed\\xa5,\\xf5#\\xd0\\x84\\xe4<#(\\xa4\\xdb\\xde\\xd1m\\x9b\\xa8D\\xdco-\\xa3\\x84\\x86\\xec\\x9b\\x94\\xdaU\\x16LT<\\xdfr\\xb6\\x94d\\xa3\\xdf\\'\\x89D\\xb4\\xeaE\\xbad~\\xf1\\x8c\\xdb\\xecc?\\x89\\xb1=\\x9a\\xd0Ul\\xf2K{B\\xa3\\xc6\\x98\\x89\\x0f.\\xae\\xc8c\\xc3z\\x92ihKi\\xed\\x17\\xf7h\\xfe\\xc9)IOx\\x95je\\xbb\\xaf\\xb4<\\xd35\\xc7\\x0f?\\xaf\\xb3Z6*\\x1d\\xb9\\xdf\\xd9v\\x91\\xcbv~\\xee!h\\xed%\\\\Z\\xf5\\xb3g\\x1d\\xb8\\xe4\\x86\\x14\\xf1H5\\xbc\\xfa\\x95#x\\xdbWv\\x94\\xa3q\\x06\\xadP\\xbd\\xe2\"23\\xdb\\x06\\x19_\\x8d\\xe78Gh[\\x1c\\x85\\xbcp\\xb2z\\\\\\xa6\\xa2\\xa6\\x04\\xfb8sX\\x8f\\xf0k\\xf1V\\xf98\\xe2\\xdaqD\\xa5\\xb6\\xa4\\xbf\\xbc]\\xde\\xf1\\xfb&Z|cs\\x1d\\xb0\\xefi\\xbf4\\x90\\x00\\x07TF\\xb3\\xfd\"\\xe3\\xff\\x00\\x99\\xcd\\xff\\x006F\\x803\\xf6\\x7f\\xa4\\\\\\x7f\\xf39\\xbf\\xe6\\xc8\\xd0\\x07\\x97\\xc5\\xf1\\xa3\\xe5\\xf7\\x97X\\xe1\\x00\\x00\\x0f\\x08\\x00\\x00\\x08\\xec\\x86\\x866KP\\xfdt\\xb5:\\x96\\x1d4(\\xd4\\xca\\xf7VF\\x95\\x12\\x92d\\x7f\\x16\\x86\\x92\\x15\\xff\\x00V\\x91\\xbcn\\xf3\\xad\\xfb\"\\xe2\\x03\\xbd\\x18\\xf8\\x98q\\x96\\x9a\\xad\\x0bu;\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8z\\xb4\\x8d\\xe3w\\x9do\\xd9\\x17\\x10\\x1b\\xde\\xb1\\xba\\x8b\\xa9\\xde\\xad#x\\xdd\\xe7[\\xf6C\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8\\xb8\\x80oX\\xddE\\xd4\\xefV\\x91\\xbcn\\xf3\\xad\\xfb!\\xea\\xd27\\x8d\\xdeu\\xbfd\\\\@7\\xacn\\xa2\\xeaw\\xabH\\xde7y\\xd6\\xfd\\x90\\xf5i\\x1b\\xc6\\xef:\\xdf\\xb2. \\x1b\\xd67Qu;\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8z\\xb4\\x8d\\xe3w\\x9do\\xd9\\x17\\x10\\r\\xeb\\x1b\\xa8\\xba\\x9d\\xea\\xd27\\x8d\\xdeu\\xbfd=ZF\\xf1\\xbb\\xce\\xb7\\xec\\x8b\\x88\\x06\\xf5\\x8d\\xd4]N\\xf5i\\x1b\\xc6\\xef:\\xdf\\xb2\\x1e\\xad#x\\xdd\\xe7[\\xf6E\\xc4\\x03z\\xc6\\xea.\\xa7z\\xb4\\x8d\\xe3w\\x9do\\xd9\\x0fV\\x91\\xbcn\\xf3\\xad\\xfb\"\\xe2\\x01\\xbdcu\\x17S\\xbdZF\\xf1\\xbb\\xce\\xb7\\xec\\x87\\xabH\\xde7y\\xd6\\xfd\\x91q\\x00\\xde\\xb1\\xba\\x8b\\xa9\\xde\\xad#x\\xdd\\xe7[\\xf6C\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8\\xb8\\x80oX\\xddE\\xd4\\xefV\\x91\\xbcn\\xf3\\xad\\xfb!\\xea\\xd27\\x8d\\xdeu\\xbfd\\\\@7\\xacn\\xa2\\xeaw\\xabH\\xde7y\\xd6\\xfd\\x90\\xf5i\\x1b\\xc6\\xef:\\xdf\\xb2. \\x1b\\xd67Qu;\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8z\\xb4\\x8d\\xe3w\\x9do\\xd9\\x17\\x10\\r\\xeb\\x1b\\xa8\\xba\\x9d\\xea\\xd27\\x8d\\xdeu\\xbfd=ZF\\xf1\\xbb\\xce\\xb7\\xec\\x8b\\x88\\x06\\xf5\\x8d\\xd4]H\\x9b\\xb2\\x88\\x160\\xdf\\x8b&\\xde\\xe9\\xe8\\xef\\xb6\\xa6\\x9cmSy)*-\\x0c\\x8f\\x97\\xc6F.\\xc9I%$E\\xee\"\\xd0\\x7f@s\\xc4\\xc6\\xc4\\xc5\\xb4W7\\xb1p\\x00\\x07\\x14\\x00\\x00\\x00S\\x95\\xb3\\x08\\x05\"K\\x8c\\xd9\\xdb\\xc5L\\x87\\xdd\\x92\\xa6\\x98\\x97\\xba\\x82[\\x8b5\\xafB\\xd3\\x96\\xaaQ\\x9f\\xfd\\xc5\\xc4\\x07Z1k\\xc2\\xbeI\\xb2\\xddN\\xf5i\\x1b\\xc6\\xef:\\xdf\\xb2\\x1e\\xad#x\\xdd\\xe7[\\xf6E\\xc4\\x07]\\xeb\\x1b\\xa8\\xba\\x9d\\xea\\xd27\\x8d\\xdeu\\xbfd=ZF\\xf1\\xbb\\xce\\xb7\\xec\\x8b\\x88\\x06\\xf5\\x8d\\xd4]N\\xf5i\\x1b\\xc6\\xef:\\xdf\\xb2\\x1e\\xad#x\\xdd\\xe7[\\xf6E\\xc4\\x03z\\xc6\\xea.\\xa7z\\xb4\\x8d\\xe3w\\x9do\\xd9\\x0fV\\x91\\xbcn\\xf3\\xad\\xfb\"\\xe2\\x01\\xbdcu\\x17S\\xbdZF\\xf1\\xbb\\xce\\xb7\\xec\\x87\\xabH\\xde7y\\xd6\\xfd\\x91q\\x00\\xde\\xb1\\xba\\x8b\\xa9\\xde\\xad#x\\xdd\\xe7[\\xf6C\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8\\xb8\\x80oX\\xddE\\xd4\\xefV\\x91\\xbcn\\xf3\\xad\\xfb!\\xea\\xd27\\x8d\\xdeu\\xbfd\\\\@7\\xacn\\xa2\\xeaw\\xabH\\xde7y\\xd6\\xfd\\x90\\xf5i\\x1b\\xc6\\xef:\\xdf\\xb2. \\x1b\\xd67Qu;\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8z\\xb4\\x8d\\xe3w\\x9do\\xd9\\x17\\x10\\r\\xeb\\x1b\\xa8\\xba\\x9d\\xea\\xd27\\x8d\\xdeu\\xbfd=ZF\\xf1\\xbb\\xce\\xb7\\xec\\x8b\\x88\\x06\\xf5\\x8d\\xd4]N\\xf5i\\x1b\\xc6\\xef:\\xdf\\xb2\\x1e\\xad#x\\xdd\\xe7[\\xf6E\\xc4\\x03z\\xc6\\xea.\\xa7z\\xb4\\x8d\\xe3w\\x9do\\xd9\\x0fV\\x91\\xbcn\\xf3\\xad\\xfb\"\\xe2\\x01\\xbdcu\\x17S\\xbdZF\\xf1\\xbb\\xce\\xb7\\xec\\x87\\xabH\\xde7y\\xd6\\xfd\\x91q\\x00\\xde\\xb1\\xba\\x8b\\xa9\\xde\\xad#x\\xdd\\xe7[\\xf6C\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8\\xb8\\x80oX\\xddE\\xd4\\xefV\\x91\\xbcn\\xf3\\xad\\xfb!\\xea\\xd27\\x8d\\xdeu\\xbfd\\\\@7\\xacn\\xa2\\xeaw\\xabH\\xde7y\\xd6\\xfd\\x90\\xf5i\\x1b\\xc6\\xef:\\xdf\\xb2. \\x1b\\xd67Qu;\\xd5\\xa4o\\x1b\\xbc\\xeb~\\xc8z\\xb4\\x8d\\xe3w\\x9do\\xd9\\x17\\x10\\r\\xeb\\x1b\\xa8\\xba\\xadW\\xb3\\xd8U\\x96\\xf1lN}\\x94\\xc7\\xe2\\xef\\xf7I\\x97\\'}\\t5$\\xd2g\\xa6\\x9f\\x88\\xccZ@\\x07\\x1a\\xf1+\\xc5\\x9b\\xd77\\x11yW\\xe0\\xc5\\xc7\\xe6o\\x7f\\xa0\\xc5S\\x1c\\xfc\\x1e\\xab\\xfc\\xd5\\xaf\\xf4\\x10\\xbd\\xc8a\\xb9L8\\xcb\\xa8\\'\\x1aq&\\x85\\xa0\\xfd\\xca#-\\x0c\\x85];*\\xc5P\\x92JjP\\x94\\x91hDN\\xb8DE\\xff\\x00\\xf2\\x1e\\xac\\x0c\\\\:(\\x9ak\\xbf\\x1f\\x84_\\xef\\t\\xa4\\xc5\\x9f#\\xc5wE[\\x92\\xd5H\\xac\\xb7\\xaf\\x8bk[%;\\x8f\\xc3\\x9a\\xca^e\\xd2\\xd7]\\x14\\x85\\x11\\x92\\x8bR#\\xe6_\\x10\\x90\\xf5[\\x8b\\xf8R\\x7f\\xc6s\\xeb\\x07\\xaa\\xdc_\\xc2\\x93\\xfe3\\x9fXv\\xdb`s\\x9fH\\xf7L\\xb1\\xcd\\xf0\\x03\\xef\\xd5n/\\xe1I\\xff\\x00\\x19\\xcf\\xac\\x1e\\xabq\\x7f\\nO\\xf8\\xce}av\\xd8\\x1c\\xe7\\xd2=\\xcc\\xb1\\xcd\\xf0#\\xeb1\\xda\\x9aIS\\xe5WVC\\x81&\\xc1\\xde\\xfec\\xd1c\\xa1\\xb5\\xc9sM7\\xdc4\\x91\\x1a\\xd5\\xf9OS\\x12~\\xabq\\x7f\\nO\\xf8\\xce}`\\xf5[\\x8b\\xf8R\\x7f\\xc6s\\xeb\\t\\xb6\\xc0\\xe7>\\x91\\xeee\\x8eo!\\xd6\\xc3338\\xac\\x19\\x9f\\xc6m\\x97\\x90\\xfd\\xd2\\x92BI)\"JH\\xb4\"\"\\xe4D?OU\\xb8\\xbf\\x85\\'\\xfcg>\\xb0z\\xad\\xc5\\xfc)?\\xe39\\xf5\\x83m\\x81\\xce}#\\xdc\\xcb\\x1c\\xdf\\x00>\\xfdV\\xe2\\xfe\\x14\\x9f\\xf1\\x9c\\xfa\\xc1\\xea\\xb7\\x17\\xf0\\xa4\\xff\\x00\\x8c\\xe7\\xd6\\x17m\\x81\\xce}#\\xdc\\xcb\\x1c\\xdf\\x00>\\xfdV\\xe2\\xfe\\x14\\x9f\\xf1\\x9c\\xfa\\xc1\\xea\\xb7\\x17\\xf0\\xa4\\xff\\x00\\x8c\\xe7\\xd6\\r\\xb6\\x079\\xf4\\x8fs,sx\\xfe\\r\\x89\\xf0\\x91Xz+>\\x9eMw\\x1e\\x93\\xb8]\\xe7w\\xae\\xf6\\xe6\\xf7\\xbfw^z{\\xb5\\x1f\\x9c\\x8a*\\xd9v\\xf0\\xed_\\xaf\\x8a\\xf5\\xa46\\xdcj4\\xd7\\x19J\\x9ea\\x0en\\xf7\\x89B\\xcc\\xb7\\x92J\\xdcF\\xf1\\x11\\xf3\\xdd-}\\xc4$=V\\xe2\\xfe\\x14\\x9f\\xf1\\x9c\\xfa\\xc1\\xea\\xb7\\x17\\xf0\\xa4\\xff\\x00\\x8c\\xe7\\xd6\\x13m\\x81\\xce}#\\xdc\\xcb\\x1c\\xdf\\x00)\\x9b\\\\\\xc1))q\\xea\\x97\\xa0D\\xf47]\\xc8)\\xe3-i}\\xc2\\xdei\\xdb\\x06\\x1bq\\x1f}\\xeeR\\x14\\xa4\\xff\\x00\\xdc]\\xbdV\\xe2\\xfe\\x14\\x9f\\xf1\\x9c\\xfa\\xc2\\xed\\xb09\\xcf\\xa4{\\x99c\\x9b\\xcb:\\x0ckHR!\\xcc\\x8e\\xd4\\xb8r\\x1bS/G}\\x04\\xb6\\xddB\\x8bE%I>FFFdd|\\x8c\\x8c|\\xd6U\\xc2\\xa4\\xaf\\x8f\\x02\\xba#\\x10 \\xc7A6\\xcch\\xad%\\xb6\\x9bI{\\x92\\x94\\xa4\\x88\\x88\\xbf!\\x0fg\\xaa\\xdc_\\xc2\\x93\\xfe3\\x9fX=V\\xe2\\xfe\\x14\\x9f\\xf1\\x9c\\xfa\\xc2m\\xb09\\xcf\\xa4{\\x99c\\x9b\\xe0\\x07\\xdf\\xaa\\xdc_\\xc2\\x93\\xfe3\\x9fX=V\\xe2\\xfe\\x14\\x9f\\xf1\\x9c\\xfa\\xc2\\xed\\xb09\\xcf\\xa4{\\x99c\\x9b\\xe0y\\xe6V\\xc4\\xb1\\\\eJ\\x8c\\xcc\\x95Ft\\x9f`\\xddA+\\xbap\\x88\\xc8\\x96\\x9d}\\xca\"R\\x8bR\\xe7\\xcc\\xc7\\xaf\\xd5n/\\xe1I\\xff\\x00\\x19\\xcf\\xac\\x1e\\xabq\\x7f\\nO\\xf8\\xce}`\\xdb`s\\x9fH\\xf72\\xc77\\xc0\\x0f\\xbfU\\xb8\\xbf\\x85\\'\\xfcg>\\xb0z\\xad\\xc5\\xfc)?\\xe39\\xf5\\x83m\\x81\\xce}#\\xdc\\xcb\\x1c\\xdf\\x00>\\xfdV\\xe2\\xfe\\x14\\x9f\\xf1\\x9c\\xfa\\xc1\\xea\\xb7\\x17\\xf0\\xa4\\xff\\x00\\x8c\\xe7\\xd6\\r\\xb6\\x079\\xf4\\x8fs,s|\\x00\\xfb\\xf5[\\x8b\\xf8R\\x7f\\xc6s\\xeb\\x07\\xaa\\xdc_\\xc2\\x93\\xfe3\\x9fX6\\xd8\\x1c\\xe7\\xd2=\\xcc\\xb1\\xcd\\xf0\\x03\\xef\\xd5n/\\xe1I\\xff\\x00\\x19\\xcf\\xac\\x1e\\xabq\\x7f\\nO\\xf8\\xce}`\\xdb`s\\x9fH\\xf72\\xc74S?\\xd2.?\\xf9\\x9c\\xdf\\xf3dh\\x02\\x02\\x9f\\x04\\xa2\\xa0\\x9eS`W\\xa1\\x89IB\\x9b\\'w\\xd4\\xa3$\\x9e\\x9a\\x91jg\\xef\\xd0\\xbf\\xf8\\x13\\xe3\\xc9\\xe21)\\xc4\\x9arp\\x88\\xb6\\xbf9\\x9f>my\\x00\\x00<\\xa8\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xcfv\\xe1\\xbb\\xc2\\xf4\\x9b\\xfa\\xe9\\xc5\\x14^\\xe3\\xd3\\x9f\\xc2q\\xb4\\xf8\\x8f\\xe3\\xff\\x00\\xfe/x\\xd0\\x86\\x7f\\xb6\\xc5\\x1aq\\x8aC#Q\\x7f\\xf8\\x9a\\x8c\\xbd\\x95\\xee\\xff\\x00\\xf9\\x9co\\x8f\\xff\\x00\\xf5\\xf1\\xfb\\xbe1\\xa0\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x0c\\xf7m\\xe9%b\\xf4\\x84e\\xa9q=\\x11\\xfd\\xf1\\'\\xff\\x00\\xcc\\xe3|g\\xfe_\\x1f\\xb8hC=\\xdbz\\x94\\x9c^\\x90\\xd2\\xad\\xd3\\xe2z\"\\xd7]9|\\'\\x1bR\\xff\\x00\\xe3\\x90\\xd0\\x80\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00S\\xf3\\xbbkX\\x96Tpk&\\xa2\\x01\\xcc[\\xdd\\xeb\\xaa`\\x9d=\\x10\\x8d\\xe2\"#\\xfc\\xa27w)\\xf9\\xce\\x9f\\xd5\\xcd\\xf9\\x8fe\\x1e\\x16k\\xa6+\\x9a\\xa2/\\xf3\\xf9|!t\\xf8\\xcbB\\x01\\x9e\\xee\\xe5?9\\xd3\\xfa\\xb9\\xbf0\\xdd\\xca~s\\xa7\\xf5s~c{\\xa7\\xf7\\x8e\\xfe\\xc9\\xa76\\x84\\x03=\\xdd\\xca~s\\xa7\\xf5s~a\\xbb\\x94\\xfc\\xe7O\\xea\\xe6\\xfc\\xc3t\\xfe\\xf1\\xdf\\xd8\\xd3\\x9bB\\x01\\x9e\\xee\\xe5?9\\xd3\\xfa\\xb9\\xbf0\\xdd\\xca~s\\xa7\\xf5s~a\\xba\\x7fx\\xef\\xeci\\xcd\\xa1\\x00\\xcfwr\\x9f\\x9c\\xe9\\xfd\\\\\\xdf\\x98n\\xe5?9\\xd3\\xfa\\xb9\\xbf0\\xdd?\\xbcw\\xf64\\xe6\\xd0\\x80g\\xbb\\xb9O\\xcet\\xfe\\xaeo\\xcc7r\\x9f\\x9c\\xe9\\xfd\\\\\\xdf\\x98n\\x9f\\xde;\\xfb\\x1ash@3\\xdd\\xdc\\xa7\\xe7:\\x7fW7\\xe6\\x1b\\xb9O\\xcet\\xfe\\xaeo\\xcc7O\\xef\\x1d\\xfd\\x8d9\\xb9gn\\xbbc\\xc9{.\\xdd\\xb7\\x87\\xe4\\xe8\\x95\\x90\\xe0\\xf2,\\xa1\\xdec7N<\\xb7%\\xb4\\x88\\xd2\\xda}\\xea\\xe7\\x96\\xa2Q\\xb9\\xa1$\\xd0\\x85\\xa8\\xcdDKF\\xf1\\x99+\\xee{\\xf7f\\xfe3\\xcdk$m\\';u\\xe83\\xf2\\x06\\x93\\xf0V6\\xd3\\xa6Q\\xaak\\xf5\\xdel\\xb7=\\xcay\\xdeK[\\x8a\\xd5Zn$\\xb7\\x08\\x8d\\x04\\xda\\x0e\\xcb\\xbdj\\xd5D\\xad\\xcbfD\\xbc\\x83\\x12[s\\x99bMr7R\\xf25\\xddW%\\x16\\xa5\\xcc\\xc8\\xd2|\\x94FdddfB\\xd1\\xbb\\x94\\xfc\\xe7O\\xea\\xe6\\xfc\\xc3t\\xfe\\xf1\\xdf\\xd8\\xd3\\x9bB\\x01\\x9e\\xee\\xe5?9\\xd3\\xfa\\xb9\\xbf0\\xdd\\xca~s\\xa7\\xf5s~a\\xba\\x7fx\\xef\\xeci\\xcd\\xa1\\x00\\xcfwr\\x9f\\x9c\\xe9\\xfd\\\\\\xdf\\x98n\\xe5?9\\xd3\\xfa\\xb9\\xbf0\\xdd?\\xbcw\\xf64\\xe6\\xd0\\x80g\\xbb\\xb9O\\xcet\\xfe\\xaeo\\xcc7r\\x9f\\x9c\\xe9\\xfd\\\\\\xdf\\x98n\\x9f\\xde;\\xfb\\x1ash@3\\xdd\\xdc\\xa7\\xe7:\\x7fW7\\xe6\\x1b\\xb9O\\xcet\\xfe\\xaeo\\xcc7O\\xef\\x1d\\xfd\\x8d9\\xb4 \\x19\\xee\\xeeS\\xf3\\x9d?\\xab\\x9b\\xf3\\r\\xdc\\xa7\\xe7:\\x7fW7\\xe6\\x1b\\xa7\\xf7\\x8e\\xfe\\xc6\\x9c\\xda\\x10\\x0c\\xf7w)\\xf9\\xce\\x9f\\xd5\\xcd\\xf9\\x86\\xeeS\\xf3\\x9d?\\xab\\x9b\\xf3\\r\\xd3\\xfb\\xc7\\x7fcNm\\x08\\x06_}?+\\xa8\\xa3\\xb1\\x9e\\x8c\\x91\\x0e.,g\\x1f$*\\xbd\\xb2%\\x1aRj\\xd0\\xf9\\xfeA\\xa4\\xc1yR \\xc7u\\x7f~\\xb6\\xd2\\xa3\\xd3\\xf1\\x99j8\\xe2\\xe0N\\x151U\\xe2by_\\xef\\x10\\xbf\\'\\xee\\x00\\x03\\xcc\\x80\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\nFs\\xf8U\\x8a\\x7fjW\\xee\\x88zG\\x9b9\\xfc*\\xc5?\\xb5+\\xf7D=#\\xecS\\xfcX\\x7f)\\xfa\\xcb5|\\x00\\x00\\x06\\x00\\x00\\x00\\x15\\xad\\xa3\\xed#\\x1c\\xd9&\\x1f;)\\xcb,~\\n\\xa1\\x84m\\xa6D\\xbe\\xe1\\xc7\\xb7\\r\\xc7\\x12\\xda=\\x86\\xd2\\xa5\\x1e\\xaaZK\\x91\\x1f\\xbf\\x9f!e\\x1c\\xd1\\xff\\x00\\xd4x\\xcd=\\x8f3\\x83\"\\xd4\\xc9\\xda\\xed\\x0b\\xf1\\xff\\x00\\xb7\\xc7\\x1c\\xf1*\\x9a(\\x9a\\xa3\\xe1\\x04k-\\xb6^\\xd4\\xb1x{G\\x85\\x819g\\xbd\\x96\\xcc\\x84\\xbb\\x16\\xebY\\x8e\\xeb\\x86\\x98\\xe9=\\r\\xd7\\x16\\x94\\x9a\\x1aN\\xa5\\xa1\\x1a\\xd4\\x9dO\\x91jf-C\\x88{8\\xdd\\xdccy^\\xdc+\\xb6\\x91\\x0c\\xea6\\xdbi\\x00\\xef\\xfd1\\x0f\\xef%\\xea\\xe3\\x8f\\xf7\\x16\\xa2\\xa8\\xbe\\xf51\\xd7\\xaa\\x0c\\x92g\\xcfNg\\xbb\\xa9W\\xb6su\\x99a\\x98\\x17f\\xed\\xa2/h\\xd9m\\xfc\\xfc\\xcb \\x85Aq[sdr`\\xbb\\x1eA:\\x924\\xb4e\\xec\\xad\\x04\\xd2O\\x7fSQ\\x99\\x99\\xa8\\xcc\\xccp\\x8c\\x7f\\x8c\\xc7\\xfa\\xd6\\xcdY\\xdf\\xe0?\\xcf\\\\\\x935\\xcdo\\xf6M\\xb5\\xbd\\xb6\\xabi\\xf9\\x0e?\\x91by4\\x9a\\xfa\\xdcr4\\xc4\\xb7U\\x1d\\xa6\\x1fm\\xb4F~)\\x96\\x8e\\xadd\\xb3\\xd5J\\xe6fi\\xfc\\xba\\xc8mCi\\xdbQ\\xc7\\xb3\\x9c\\xabf\\xd8\\xfc\\xfb~%\\xda\\x84z\\xablMo\\xcbuEJN!_\\x08\\xa1+Q\\x9ft\\x84w*2Jt\\xdd%jD\\x1b\\xc4G\\xc3\\xf3_c+\\xb8\\xb3<\\xb2\\xbb\\x02\\xc4n\\xb2[u\\xad\\xba\\xba\\x88n\\xce\\x94\\xb6\\x90kRZm\\x06\\xb5\\x99$\\xbd\\xe7\\xa1\\x1f!\\xfab\\x99$<\\xcb\\x16\\xa6\\xbf\\xaf\\xef=\\x02\\xd6\\x133\\xa3\\xf7\\xa9\\xdd_v\\xea\\ti\\xde.z\\x1e\\x8a-Hp\\xaav\\xb3\\x90\\xf6\\x8e\\xd9\\xc6\\xdc3Y/\\xd9U\\xe3\\xb4\\x1b;r\\x85t\\xa6\\xeb\\x8d\\xc5r\\xe1qV\\xf4\\xe7\\x14\\xd6\\xa4F\\xb6\\x8fu\\xa25\\x16\\xbb\\xa7\\xcb\\xdef^O\\xf4@\\x07\\x17bY.]\\xb2N\\xd06Lm6\\xdf1\\xb1\\xb4\\xbb\\x95h\\xf6.\\xa8\\x96\\xa9{\\x1d\\xb2a\\xb6\\xd4\\xb4E8\\xa4Z\\xc7y\\t-\\x0bR\\xe6\\xaf\\x8c\\xf9\\x19\\xe6\\xbb\\x15\\xc8\\xf6\\xff\\x00\\xb4\\xd8X~\\xd2j\\x0f.\\xb4\\x99ir\\x97f\\xba\\xe6OZX\\xf3\\x90\\xbb\\xf5%\\xe8\\xed\\xd7\\x1a\\xc9\\xc6\\xcd-\\xa4\\xc8\\x8f\\xef\\xf5I\\x9f\\xc6Zt\\xdb\\xc5\\xedi\\xb9g\\xfa6\\x00\\x03\\xd4\\xc8\\x00\\x00\\x00\\x00\\x02\\x1b5\\xfc\\r\\xbe\\xfc\\xc2G\\xee\\xd4/\\xb5_\\xee\\xb8\\x7f\\xdc\\xa3\\xfd$(Y\\xaf\\xe0m\\xf7\\xe6\\x12?v\\xa1}\\xaa\\xff\\x00u\\xc3\\xfe\\xe5\\x1f\\xe9!\\xcb\\xc4\\xff\\x00\\r?9\\xfaC\\xa5<\\x1e\\xa0\\x00\\x1f1@\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x14\\x8c\\xe7\\xf0\\xab\\x14\\xfe\\xd4\\xaf\\xdd\\x10\\xf4\\x88\\xcd\\xa6W\\xfc\\'\\x90b\\xaczL\\x88\\x9a\\xaeI\\xf7\\x91\\x9c\\xdc_\\xf2e\\xcbQ\\xe0\\xe0\\xdf\\xa7n\\xba\\xbf\\xb2>\\xe6\\x1d4\\xce\\r\\x17\\xaa\\xdaO\\xd6R\\xabh\\xb1\\x00\\xae\\xf0o\\xd3\\xb7]_\\xd9\\x0e\\r\\xfav\\xeb\\xab\\xfb#y0\\xfa\\xbb1h\\xe6\\xb1\\x00\\xae\\xf0o\\xd3\\xb7]_\\xd9\\x0e\\r\\xfav\\xeb\\xab\\xfb!\\x93\\x0f\\xab\\xb1h\\xe6\\xb1\\n\\xd6\\xd1\\xf6o\\x8emo\\x0f\\x9d\\x8be\\x95\\xdf\\n\\xd0\\xcd6\\xd5\"\\'~\\xe3;\\xe6\\xdb\\x89q\\x1e\\xdbjJ\\x8bE!\\'\\xc8\\xcb\\xdd\\xcf\\x90\\xfb\\xe0\\xdf\\xa7n\\xba\\xbf\\xb2\\x1c\\x1b\\xf4\\xed\\xd7W\\xf6D\\x9a0\\xe6-5v[G4ng\\xb1\\xac;h9-6C{O\\xe9Wt\\xed>\\xc4)\\xadJz;\\x8d\\xb6\\xf2w\\x1dmF\\xd2\\xd3\\xbe\\x95$\\xcc\\xb7W\\xa9s=\\x08\\xb51\\xe3o`\\x98#X\\xbe\\x1b\\x8e\\xa6\\x8bJl>{\\x16tq\\xbd1\\xff\\x00\\xf6I,\\xefwk\\xde\\xef7\\x97\\xa6\\xfa\\xb9,\\xd4G\\xaf2>B{\\x83~\\x9d\\xba\\xea\\xfe\\xc8po\\xd3\\xb7]_\\xd9\\x19\\xd9aq\\xbfcNjE\\xff\\x00e\\r\\x92\\xe5\\x19\\xe2\\xb3+L&\\x0c\\xbc\\x81o\\xa2S\\x8f\\xa9\\xc7I\\xa7\\x9eO\\xde\\xb8\\xe3\\x04\\xb2i\\xc5\\x7f\\xd4\\xa4\\x19\\x9f\\xc6/\\xd3\\xf0\\x9a;L\\xb6\\xa7\\'\\x95Z\\xd3\\xd7\\xd51\\xdf\\x8b\\nr\\xb5\\xdfa\\xb7\\xb7;\\xd4\\x91k\\xa7>\\xed<\\xcc\\x8c\\xcb\\x99\\x16\\x9b\\xca\\xd7\\xf0\\xe0\\xdf\\xa7n\\xba\\xbf\\xb2\\x1c\\x1b\\xf4\\xed\\xd7W\\xf6B0\\xb0\\xa3\\x84\\xf64\\xe6\\xf3F\\xd9N\\'\\x0f\\x1c\\xc9h\\x18\\xa4\\x8e\\xd5>H\\xfc\\xb96\\xd1\\x12j\\xdd\\x96\\xe4\\x92\\xd2B\\x95\\xcfR5\\x91\\xe8z\\x19i\\xf1h*YOe]\\x95\\xe6\\x98\\xbe9\\x8f\\\\\\xe2L\\xcc\\xad\\xc7X(\\xd5_\\xedr\\x10\\xfcF\\x88\\x88\\x89\\xb4\\xbe\\x97\\t\\xdd\\xdd\\x08\\xb9\\x1a\\x8c\\xb9\\x10\\xbbpo\\xd3\\xb7]_\\xd9\\x0e\\r\\xfav\\xeb\\xab\\xfb!883\\xa4\\xcfcNj\\xd5\\xd7g=\\x9cd[1\\x81\\xb3\\xdb\\x1cV,\\xac>\\xbc\\xc9Q+\\x96\\xe3\\x85\\xe8\\xea#Q\\x92\\x90\\xe1+\\xbcJ\\xbd\\xb5\\xfbD\\xad}\\xa3\\xe7\\xcc\\xc6m\\x9cv1\\xc4 l\\xbf\\'\\xc7\\xf6m\\x8b\\xd1WX\\xde?\\nD\\x94_\\xca\\x9e\\xf4g\\x95\\x19Fm\\x99\\xa9\\x0fw\\xad/E/\\xdbl\\xc8\\xcfx\\xcc\\xf5>cn\\xe0\\xdf\\xa7n\\xba\\xbf\\xb2\\x1c\\x1b\\xf4\\xed\\xd7W\\xf6Fg\\x03\\x06\\xae3\\xd8\\xff\\x00\\xb7>\\xec\\x07\\xb2E\\xa6)\\x136\\x89\\xb4gil\\xf1\\xfc\\x95\\x86c\\xab\\x11\\xac\\x95>usF\\x835\\x1b\\xfd\\xe4\\xd7\\x16\\xefx\\xa32\\xe6Zi\\xbaFG\\xa9\\x16\\x9a\\x8e\\r\\xd9{f;6\\xa3\\xc8\\xea1\\xcc`\\xab\\xe0d1\\x0e\\r\\x9a\\x0et\\x97U!\\x83J\\xd3\\xdd\\xef\\xb8\\xe2\\x94\\x92$\\xb8\\xb2-\\xd3-7\\xb9h.<\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8\\x94\\xe0`\\xd3\\x11i\\xe1\\xe4\\x7f\\xda\\x85\\xb3~\\xc8\\xdb#\\xd9&C\\x1e\\xf7\\x17\\xc3X\\x85o\\x19\\x06\\xdcyre\\xc8\\x98\\xb8\\xe4e\\xa1\\xf7]\\xfb\\x8b\\xee\\xf9\\x19\\x96\\xa9\\xd0\\xf43/\\x8c\\xc7\\x99\\xae\\xc6\\xbb\\x1ab\\xf5W,\\xe0\\xf1\\x98\\xb1\\xf4\\xd4X\\xb6\\xf3R\\xe4\\xa0\\xa3\\xc8K\\x84\\xe18\\xcaI\\xc2K\\'\\xbe\\x923&\\xc9$zhde\\xc8h\\xdc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8\\xbb\\x0c\\x0bZ\\xf1\\xe8\\x7f\\xda\\xa7\\x8d\\xf6g\\xd9\\xa6#\\xb4\\x17\\xb3z\\xbcY\\x96r\\x87^~G\\xa7\\xbb%\\xf7\\xbb\\xb7^37\\x96\\xdbkZ\\x90\\xda\\x97\\xa9\\xeahI\\x19\\xea\\x7f\\x8cx\\xa9{&l\\x97\\x1c\\xcf\\xd1\\x9a\\xd5\\xe1\\x91k\\xf2&\\xe4\\xaaco\\xc7\\x90\\xfa\\x1am\\xe5\\x11\\x91\\xb8\\x96\\t\\xce\\xe9*\\xd0\\xcf\\x99#\\xe3\\x17\\x9e\\r\\xfav\\xeb\\xab\\xfb!\\xc1\\xbfN\\xddu\\x7fd]\\x8e\\x0f8\\xf4?\\xedb\\x01]\\xe0\\xdf\\xa7n\\xba\\xbf\\xb2\\x1c\\x1b\\xf4\\xed\\xd7W\\xf6GL\\x98}]\\x92\\xd1\\xcdb\\x01]\\xe0\\xdf\\xa7n\\xba\\xbf\\xb2\\x1c\\x1b\\xf4\\xed\\xd7W\\xf6C&\\x1fWb\\xd1\\xcdb\\x01]\\xe0\\xdf\\xa7n\\xba\\xbf\\xb2\\x1c\\x1b\\xf4\\xed\\xd7W\\xf6C&\\x1fWb\\xd1\\xcd\\xe9\\xcd\\x7f\\x03o\\xbf0\\x91\\xfb\\xb5\\x0b\\xedW\\xfb\\xae\\x1f\\xf7(\\xff\\x00I\\x0c\\x8f.\\xc4\\xbb\\x8cR\\xe9\\xcf\\x86\\xad\\xdc\\xdc\\x84\\xfa\\xb7\\x1c\\x95\\xaaU\\xa3j\\xe4e\\xa72\\x1a\\xe5W\\xfb\\xae\\x1f\\xf7(\\xff\\x00I\\x0f7\\x8b\\x8ac\\n\\x9c\\xb3}g\\xe9\\x0e\\x91\\xc1\\xea\\x00\\x01\\xf2@\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x05#9\\xfc*\\xc5?\\xb5+\\xf7D=\"3i\\x95\\xff\\x00\\t\\xe4\\x18\\xab\\x1e\\x93\"&\\xab\\x92}\\xe4g7\\x17\\xfc\\x99r\\xd4x87\\xe9\\xdb\\xae\\xaf\\xec\\x8f\\xb9\\x87M3\\x83E\\xea\\xb6\\x93\\xf5\\x94\\xaa\\xda,@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8\\xdeL>\\xae\\xccZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xac@+\\xbc\\x1b\\xf4\\xed\\xd7W\\xf6C\\x83~\\x9d\\xba\\xea\\xfe\\xc8d\\xc3\\xea\\xecZ9\\xbd9\\xaf\\xe0m\\xf7\\xe6\\x12?v\\xa1}\\xaa\\xff\\x00u\\xc3\\xfe\\xe5\\x1f\\xe9!\\x91\\xe5\\xd8\\x97q\\x8a]9\\xf0\\xd5\\xbb\\x9b\\x90\\x9fV\\xe3\\x92\\xb5J\\xb4m\\\\\\x8c\\xb4\\xe6C\\\\\\xaa\\xff\\x00u\\xc3\\xfe\\xe5\\x1f\\xe9!\\xe6\\xf1qLaS\\x96o\\xac\\xfd!\\xd28=@\\x00>H\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa4g?\\x85X\\xa7\\xf6\\xa5~\\xe8\\x87\\xa4y\\xb3\\x9f\\xc2\\xacS\\xfbR\\xbftB70\\x8f\\x92I\\xa6R1Y\\xf5U\\xb6\\xdd\\xe2L\\x9f\\xb8\\x84\\xe4\\xb67?\\xe2.\\xed\\xb7\\x9aV\\xbe\\xed\\x0f\\x7f\\x97\\xe21\\xf5\\xe9\\xfe\\x1a>S\\xf5\\x96j\\xf8&\\xc0q^CA\\x9bb]\\x85\\xd8\\x8d\\x9a?Z\\xd3\\x10O\\x1e[0\\xd8\\xadz\\x1c\\x98-\\xb7g\\x19OzR\\x9cyd\\xb3$\\x91\\x1e\\xa9KdD\\x95jG\\xaf\\'j;\\xea\\xdb\\xad\\xa0\\xed]\\xba\\xfb\\x08\\xd3\\x97\\x1bcS\\xd2\\xf1Fy.wf\\xa9[\\xc9%hg\\xa1\\x9aL\\x8fC\\xf8\\x8c\\x8f\\xe3!\\xe7\\x9ckE\\xe6?5\\xf6K;PU\\xb3=\\xa2\\xd6\\xe0\\xd6\\xd8\\x9dt\\xf6%<\\xfeKi\\xf0L5FBT\\x96\\xdd\\xee]{y\\xcdTFI\\xddeE\\xa9\\x11\\x9e\\xa6\\\\\\xbd\\xe6\\\\\\x99t\\xdd\\x16\\xces|\\x01\\xfd\\x8a\\xfa\\x11\\xe5\\x13\\xf1{\\x89W\\x10i\\x9f\\xf4\\x84Lm\\xba\\xe3\\\\W\\xa4\\xa1*Q\\x1a\\xfd/\\xb9JV\\xa2\\xdeQ\\xadE\\xa9\\xf3\\xd2#\\r\\xc6vp\\xd2\\xfb3e\\x18\\xe4\\xf8\\xb6\\xf9\\x8d\\xd5\\xdbR.-\\x15`o\\xce\\x98\\xea\\xebd\\xaeB\\x9f#Y\\x9e\\xf2]\\xd0\\xb9\\x97\\xb1\\xae\\xe9i\\xae\\x87\\'\\x1axD~i\\xeeY\\xdeb\\x0b\\x19\\xcd\\xe9\\xf2\\xf9\\xd9\\x04J\\xa9\\'%\\xfa)\\xe7Y<\\x8d\\xb5 \\x9b\\x90M6\\xe9\\xa0\\x8c\\xc8\\xb7\\xb4K\\xa8\\xe6Z\\x97=5\\xe48Z\\x9a\\xd6\\x04\\x8d\\xa6l\\xc7i\\x94,\\xe3X\\x83\\xb9Fr\\xe4\\x05WD\\x97!\\xdb\\xb9Q\\xd6\\xa9\\r\\xbd\\xe9\\x8b[\\xdb\\x86\\x93ZR}\\xd14}\\xd9\\xa9\\xa2%\\x16\\x9a\\x1d\\xcf\\x17\\xc7\\xe8\\xb0G\\xbbO[b\\x94\\xf5P\\xf6\\xa1]cd\\xaa^\\xe5\\x96\\xcaz[]c\\x0f \\x9aO\\xdf)*p\\x9cY\\x11\\x16\\x8aQ\\x1f\\xe5\\x08\\xc6\\x99\\xf8~Z\\xe5\\x9d\\xa6 \\xe8\\xb3*\\xec\\x8e\\xf6\\xfe\\xae\\x01\\xb8\\xfb\\x94o7\\x16c\\xe4\\x92\\xee\\x92\\xfa\\xdb\\'\\r\\x92V\\xbc\\xd6\\x94-\\xb5+\\x96\\x85\\xde$\\xb53\\xde\"\\xe4\\x9e\\xce[.\\x87\"\\xff\\x00gY}\\x06\\xd0\\xf0\\xb4K~?\\xa7Kf\\x924\\x94\\xd9\\xde4\\xa6\\x0c\\x9enZ\\x9d\\x9e\\xefz\\xa4\\xadiZ\\x94\\xa6\\xf7\\x92\\xb4\\x17\\xde\\xf3!\\x14\\x8c\\x82\\xc6\\x17e\\xdc\\x86T\\xdb\\t5\\x11\\xed\\xb6\\x9d&\\x1eYg\\x1d\\xd54\\xec8.\\xdb\\x1bRU\\xbe\\\\\\xdb\"l\\x90\\x83W-\\x12a\\xb6\\x9b^`\\xb3\\xaf\\x91\\xb4Z\\xd76\\xa2\\xfe\\x06LJ\\xf8a\\x9af\\xef\\x14\\xf9\\xa1>\\x8el-\\xf5\\xb2I%ooo\\xef6g\\xa6\\xee\\x9ai\\xcf^B\\xce\\xf3\\xa8a\\xa5\\xba\\xe1\\xee\\xa1\\t5(\\xff\\x00\\x11\\x17\\xbcp\\xf5\\xdavo\\xb0\\xfd\\xa7\\xed:n!M\\x12\\xc3\\x19\\x8b\\xb3\\x04?.\\xaa\\x96z\\xb7\\x1eZ\\xe6<\\x83.\\xf5+3ky\\x06\\x83R\\xd2ddFk\\xe6|\\xcf\\xf6\\xd8\\x9e\\x1b\\x0b\\x1e\\xdb\\xaeI\\x81\\x9a\\xb1\\x07\\xe9r\\x0c\\x05\\xc9\\xd6\\x18\\xde*\\xa7\\x9c\\x81\\xde\\xfaJ\\x1bOx\\x97^s\\xbcY\\xb6\\xea\\xc8\\xd6D\\x8d\\xf4\\x99\\x19\\xa7\\xe34cM\\xed0Y\\xd8xVeU\\xb4,N\\xab%\\xa2\\x90\\xa9t\\xf6\\x8c&LG\\xd4\\xda\\x9b7\\x1bW\\xde\\xabuDFZ\\x97\\xc4dF&\\x87\\x08\\xec\\xf4\\xf0\\x1co\\xb1F\\r\\x06\\xb3\\x1c\\xc7\\xad,\\xf2\\xd7\\xaa\\xaa\\xac\\xdazQ\\xc5\\x8f\\xe9\\xabZ\\x89/X-\\xa3%\\xee!M,\\x8d\\'\\xcdf[\\x9f\\xf1\\x18\\xb2l\\x1e\\xaf\\x1c\\xae\\xa4\\xed\\x0b\\x81\\xe4\\xf7\\xd4\\xa7\\x80\\xd5\\xb9\\x1c\\xa4\\xfc\\x03!\\xd8\\xf5\\xf0Z~\\x11\\x1c\\x94\\xb2ky\\xc5\\xb4[\\xc9V\\xa9%\\x99o\\x92\\xf4\"\\xd7t)\\xc6\\x99\\xb5\\xe3\\x8c\\x16vP\\xabm\\'h\\xb5\\xbb-\\xc6Syj\\xc4\\xa9\\x11\\x156$\\r\\xc8hJ\\x9c\\xef$Hm\\x86\\xcfE)%\\xbaJq&|\\xf5\\xd0\\x8fB3\\xe4$0\\xb8\\xf510\\xea&(\\x1fL\\x9a&\\xa00\\x8a\\xf7\\xd2\\xf1\\xbcNG&\\xd2M(\\x96ff\\xbdQ\\xba{\\xc6g\\xaf\\xbcp\\x1c\\xca\\x9c7)\\xd8l<\\xe6\\xfaLi\\xbbe\\x91\\x9b\\xc3f\\xd5\\xc9SO\\xd3c>\\x9b\\xa46q\\t\\xa3V\\xa8m\\x0c\\xa4\\xb7[\\xdd\\xd3D\\x92\\xb4\\xd7\\x99o\\x13\\x12i\\x8d8\\xa4E\\xdd\\xf9Y\\x92\\x9d\\x96KuO\\xf0M\\x9cB\\xacK\\n\\xf8BL}\\xc8\\xb2\\xfb\\xd4\\xa9Z0\\xe6\\xbe\\xd9\\xa3wE\\xf2-\\x0c\\xcb\\xdf\\xa8\\xf9\\xcd\\xf3J\\x8d\\x9db6\\xd95\\xf4\\x93\\x87MW\\x1dR\\xa5>\\x96\\xd4\\xe1\\xa1\\t\\xf7\\x99%$f\\x7f\\xd4D8\\xcbj\\xc9,\\x13\\'\\xed\\x11\\xf0*\\xdc\\xc7jg\\\\\\xe2\\xa7}>\\xb0\\xcd\\xa7c\\xc3\\x92g\\xe9\\xd2\\tI\\xe6\\x95)+^\\xf2\\x8b\\x99\\x12\\x94|\\xbd\\xe2\\xd9\\xb7\\x9d\\x96\\xec\\x8e\\xa3\\xb2\\xf6\\xd6\\xa2`5\\xf4o:T\\x88\\xb0\\x91\\x1e\\xb2YI\\xdd\\xee\\xf7\\xd4\\xcc\\x83N\\xfa\\xb4>N\\x199\\xa6\\xaa\\xdd=L\\xf7yck6\\x9bG\\x0b\\xfd\\xfd\\x96\\xce\\x9e\\xc8\\xf3Z\\xdcQtgb\\xa7\\x1ab\\xdesu\\xccH$\\x91\\xb6\\x87\\x9cJ\\x8d\\xa4\\xac\\xf5\\xf6w\\xd4D\\x82=\\x0f\\xdaRK\\xe3!<9k\\xb4}~+\\x8b\\xf6)\\xc9\\x8bglU\\xc3\\xaf\\x88pf@E\\x1e\\xe7t\\x89^\\x9b\\x19\\xd6\\xd4\\x9d\\xceD\\xa3Y\\xa0\\xff\\x00\\x1f2\\xfcc\\xa9K]\\x0b_\\x7f\\xe4\\x1d\\xa9\\xaaff\\'\\xc9\\x90\\x00\\x07@\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x10\\xd9\\xaf\\xe0m\\xf7\\xe6\\x12?v\\xa1}\\xaa\\xff\\x00u\\xc3\\xfe\\xe5\\x1f\\xe9!B\\xcd\\x7f\\x03o\\xbf0\\x91\\xfb\\xb5\\x0b\\xedW\\xfb\\xae\\x1f\\xf7(\\xff\\x00I\\x0e^\\'\\xf8i\\xf9\\xcf\\xd2\\x1d)\\xe0\\xf5\\x00\\x00\\xf9\\x8a\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa4g?\\x85X\\xa7\\xf6\\xa5~\\xe8\\x87\\xa4y\\xb3\\x9f\\xc2\\xacS\\xfbR\\xbftC\\xd2>\\xc5?\\xc5\\x87\\xf2\\x9f\\xac\\xb3W\\xc1\\xf8O\\x81\\x1a\\xd2\\x13\\xf0\\xe6\\xc7j\\\\I\\x086\\x9e\\x8e\\xfa\\tm\\xb8\\x83-\\r*I\\xf222\\xe4dc7\\xcd;=b7\\xbb8\\xc9\\xf1lz\\x92\\x97\\x0fz\\xe6\\x9eM:l+*YB\\xa3\\xb4\\xf1\\x1e\\xa4IF\\xe6\\xf2w\\xb4Q\\xa3x\\x88\\xcc\\xb5\\xf7\\xf3\\x139\\xfe\\xd8\\xf1M\\x9dl\\xc6\\xc3<\\xb0\\xb7\\x86\\xf6?\\x1a\"\\xa53\"<\\x96\\xd4\\x99\\x87\\xbaf\\x86\\xd8V\\xf6\\xea\\xd6\\xb3-\\x12D|\\xcc\\xc4F\\t\\xb6\\xfa\\xdb\\xad\\x98\\xc3\\xcd\\xb2\\xc9\\xb8\\xd6%U5\\xd3Ly(\\xc8\\xd8\\x99\\ri\\xf7\\x16\\xb2w[o\\xbc\\xde%\\xa4\\xd0\\x9d\\xed\\r\\x06[\\xc7\\xf1s\\xaah\\x99\\xcb,\\xea\\xb1\\xe0\\xbb0\\xc5\\xf6u\\x18\\xca\\x87\\x1e\\xa8\\xa9\\x96\\xf3HD\\xb9u\\xd5\\xedFrR\\x92Zo8h\"5\\x19\\x9f>f~\\xf1\\xf3\\x0bdx-m\\xdf\\xc310\\xbcz-\\xc7\\xa4z_\\xc2\\x0cU0\\x89\\x1d\\xfe\\x8a.\\xf7\\xbc$oo\\xe8\\xb5\\x96\\xf6\\xba\\xe8\\xa3\\xe7\\xcc\\xc4\\x06\\xd1\\xfbD\\xe0\\xbb0\\x81\\x88\\xcf\\xb6\\xbe\\xaf:\\xfc\\x9e\\xc1\\x10`\\xcdD\\xe6\\x12\\xc6\\xe1\\xa4\\xd4\\xb9\\nZ\\x96E\\xdc\\xa0\\x88\\x89KN\\xba\\x1a\\xd0G\\xf7\\xda\\x8b=\\xde\\xd30\\xfcj\\x92\\x05\\xcd\\xbeWIUQ`\\x94\\xae\\x1d\\x84\\xdb\\x16Y\\x8f%*I)&\\xdb\\x8aQ%dddddg\\xa9\\x19\\x18^\\x8e\\x1c\\x93W\\xe2[(\\xc2\\n\\xc6m\\x81a\\xd4\\x05>k\\xc8\\x93*W\\xc1lw\\xb2\\x1dB\\xc9hq\\xc5n\\xea\\xa5%dJ%\\x1e\\xa6FDe\\xcc{\\xdc\\xc1\\xb1\\xb7\\xb2\\xa6\\xb2w1\\xfa\\xa5\\xe4\\x8d6l\\xb7r\\xa8M\\x9c\\xc4#C-\\xd2{w|\\x8bC2\\xd3]43\\x14I\\x1d\\xa31j\\xbd\\xa5\\xd9\\xe37\\x16u\\x14\\xd51\\xaa \\xda\\xc7\\xbe\\x9dl\\xd3LK9.>\\x84\\xb4\\x8d\\xed\\x13\\xc8\\x98\\xde#%\\x9e\\xf6\\xf7\\xb8\\xb4\\xd4\\xf5F\\x9dC\\xcd\\xa1\\xc6\\xd6\\x97\\x1bY\\x12\\x92\\xb4\\x9e\\xa4\\xa2?q\\x91\\x8b\\x19g\\x81\\xaa\\xbdG\\xb3\\\\C\\x18\\xbb\\x97sO\\x8a\\xd2T\\xdb\\xcb\\xd4\\xe4XA\\xaee\\x99\\x0fjz\\x9e\\xfb\\x89I)Z\\x9f\\xe31\\x1d\\x8dl\\xbe\\xbb\\x1b\\x99\\x996D\\xcc\\xca,\\x96i\\xd9?U%\\x82[h}\\xc6\\xc9\\x12}\\xfa\\x92\\x90\\xe6\\xe2Vi2\\xe4\\xa58z\\x99(\\x896\\x1c\\x93)\\xa5\\xc3j\\x9c\\xb4\\xbf\\xb7\\x81GZ\\xd9\\x92W2\\xcaJ#\\xb2\\x93?q\\x1a\\xd6dE\\xaf\\xf5\\x8c\\xf3\\x05\\xed\\x17\\x8beTY]\\xed\\x95\\x9dF=AI\\x90?F\\xd5\\xb4\\xbbf\\xbd\\x16a!\\xb6\\xd6\\x97\\x92\\xea\\xb7RD\\xb2s\\x92H\\xd5\\xf7\\xba\\xeaz\\xf2\\x93\\x92&\"MV\\xda\\r\\x94\\xe18\\xa2_M&\\x1fAN\\x97\\xe3\\x9c7\\x8a\\x05c\\x0cw\\x8c\\x19\\x99\\x9bJ\\xdcIj\\x8333\\xdd>Z\\x99\\xf2\\x1f\\xa6?\\xb3,;\\x12\\\\E\\xd1\\xe2tt\\xcb\\x88n\\x1cuW\\xd6\\xb2\\xc1\\xb3\\xde\\x11\\x13\\x9b\\x9b\\x89-\\xdd\\xe2Jw\\xb4\\xf7\\xe8Z\\xfb\\x85wi]\\xa00\\xbd\\x98\\xe0\\x10s)\\xf70\\xa6Q\\xcf\\x99\\x1e\\x1491&2\\xa6\\xe4)\\xd7I\\x1b\\xc8Y\\xac\\x92\\xa4\\xa0\\xb7\\x96\\xa3#=\\x10\\xda\\xcfC\\xdd\\x13\\x13\\xb6\\xc5\\x81U\\xd3V\\xdb\\xcd\\xcd\\xf1\\xc8\\x956z\\xfa\\x0c\\xf7\\xed\\xa3\\xa1\\x89z\\x1e\\x87\\xdd8k\\xdd_>^\\xc9\\x98^\\x88\\x9bi\\xa1\\xab\\xf5-\\x93`\\xe4\\xc5\\xcb\\x05\\x86\\xe3\\xe4\\xcd\\xd2\\x89v\\x8d\\xfc\\x16\\xc6\\xec\\xf5\\x12\\x8dDo\\x96\\xe6\\x8e\\x99\\x19\\x99\\xea\\xady\\x99\\x98\\xfd\\xa2l\\xd3\\x10\\x81\\x06T(\\xd8\\xa5$hr\\xa2\\x14\\t\\x11\\xda\\xaee-\\xbd\\x18\\xb7\\xb4ai$\\xe8\\xa6\\xcb}~\\xc1\\xf2\\xf6\\x8f\\x973\\x1e}\\xa0m\\x12\\x16\\r\\x8eC\\xb2Keg\"\\xcadj\\xea\\xc8\\xac\\xb8DR\\xe4\\xc8Y!\\xa4\\x92\\xf9\\x91\\'\\x99\\xadJ\\xd0\\xf4BT\\xad\\x0fM\\x0f\\xd9\\x91m\\x0f\\x15\\xc4,!@\\xbd\\xc9\\xa9\\xe9gM\\xfek\\x1a\\xc6{Q\\xdd\\x7f\\x9e\\x9e\\xc2V\\xa25s\\xfcZ\\x8b\\xfe0&\\xe1\\xc3b\\xbe#\\x11b\\xb0\\xdch\\xac!-4\\xc3($!\\xb4$\\xb4JR\\x92\\xe4DDDDD+\\x16\\x1b#\\xc1m\\xaf\\x1e\\xb9\\x9d\\x85\\xe3\\xd3.\\x1eR\\x16\\xed\\x84\\x8a\\xa6\\x1c\\x90\\xe2\\x90\\xa2R\\rN\\x1a7\\x8c\\xd2\\xa4\\xa4\\xc8\\xcc\\xf9\\x1aH\\xcb\\xdc%\\xaa2\\xea,\\x82A1Wu]d\\xf9\\xc5fq7\\x0eSn\\xab\\xd1\\xdd#6^\\xd1&g\\xdd\\xafu[\\xab\\xf7+C\\xd0\\xcfA\\x1f;j\\x18m^3\\x13#\\x99\\x96\\xd1D\\xc7\\xa6\\x19\\x14kg\\xec\\x99DG\\xcc\\xf5\\xd0\\x90\\xe9\\xabqZ\\xe8~\\xe3\\xf8\\x8cY\\xcb1\\xa8\\x94N3N\\x99v\\x92\\x8a\\xaa\\tI\\xb5B\\x1b\\xb0x\\xa3#~bR\\x93JR\\xea\\xb4\\xd5\\xc2$\\x99\\xa4\\x89Z\\xe8Fd#\\xb1\\xad\\x9bb8dI\\x91q\\xfcZ\\x96\\x8a4\\xc22\\x92\\xcdms1\\xd0\\xff\\x00\\xbc\\xbd\\xb4\\xa1$J\\xf7\\x9f\\xbf\\xf1\\x98\\xfa\\xb0\\xda.)S\\x02\\x04\\xe9\\xd9=4(S\\xdb[\\xd1$\\xc8\\xb0i\\xb6\\xe4\\xa1\\x085\\xadM\\xa8\\xd5\\xa2\\xc9(#Q\\x99jDE\\xa9\\xf2\\x1f\\xad\\x06y\\x8c\\xe5p$\\xce\\xa4\\xc8\\xaan!E$\\xa9\\xf90\\'4\\xfbl\\x92\\x9b\\'\\x12kR\\x14d\\x924)+-}\\xe9Q\\x1f\\xb8\\xc3\\xfcn*\\xf7{\\x0e\\xc6gP\\xd5c\\xb5Uu\\xb8\\xee3\\x1e\\xdd\\x8b\\x89\\xb5UP[\\x8e\\xd4\\xd7\\x19Q8\\xdaT\\x94\\x12R_um\\x95\\xa8\\xf43Q4I\\xf8\\xf5-\\x10B\\xd6\\xe6\\xd8\\xed\\xcc\\xa8\\x11\\xab\\xef\\xab\\'H\\xb0\\x86V0\\xd9\\x8d1\\xb7\\x17&)\\x99\\x11>\\xd9\\x12\\x8c\\xd6\\xdf2\\xf6\\xcbT\\xf3.|\\xc7\\xeb\\x93e\\xb4xUZ\\xac\\xf2\\x1b\\x9a\\xfa\\x1a\\xd4\\xa8\\x90\\xa9\\x96r\\x91\\x19\\x92Q\\xfb\\x88\\xd6\\xb3\"\\xd4\\xff\\x00\\x16\\xa1\\x19cX\\x12\\xa02\\xcc\\xbf\\xb4\\xc6\\xcf0\\x8c\\xbb\\x12\\xa2\\xb4\\xc9\\xea\\xa3\\xf1$W\\xe6\\xc6\\xb1r\\xca:\"\\xb6\\xcbd[\\xabZ\\xd4\\xe1rqFil\\xcbRQ\\xa1|\\xfd\\x91o\\xb1\\xda^!Qt\\x9ay\\xf9U$+eHj\\x19@\\x91b\\xcbo\\x9b\\xee\\x91\\x1bMwf\\xa2V\\xfa\\xc8\\xc8\\xd2\\x9d5Q\\x19hF&zg\\xe2Yd\\x01V\\xd9\\xfe{\\x1f<\\x89o\\xbb\\x1dP\\xac)\\xec\\xdf\\xa9\\xb0\\x86\\xa5\\xef\\x9b/\\xb6ddd\\xad\\x0bT\\xad\\xb5\\xb6\\xe2OB\\xf6\\\\N\\xa4G\\xa9\\x14\\xd3\\xd9\\x05\\\\k\\xa8\\xd4\\xefYCj\\xdeSK}\\x8a\\xf5\\xbe\\x82\\x90\\xebh2%\\xad\\r\\x99\\xef))3-L\\x8bB\\xd4\\xb5\\x1a\\x89\\x89\\x8b\\x8fx\\x0f\\xc6t\\xe8\\xd5\\x90\\xdf\\x972CQ\"0\\x83q\\xd7\\xdfY!\\xb6\\xd0E\\xa9\\xa9J>DD_\\x19\\x8cp\\xfbR\\xe2\\xd2\\xb2<\\xba\\x1de\\x8d\\r\\x8d-\\r\\x04{\\x94\\xdf\\xa6\\xfe:!>\\xf3\\xcf<\\xcac)\\xd3\\xfb\\x9bG\\xbe\\xd2\\x0b|\\xd6|\\xdd\"\\xd0\\xb4\\xe7&\\xa8\\xa7\\x8c\\x8d\\xa4\\x058\\xb6\\xab\\x8fSat\\x19\\x06YuI\\x89\\xb7k\\x15\\x97\\xd2S\\xad\\xd8\\xee\\t\\xc5\\xb6\\x95\\x9bm\\xbej$:E\\xbd\\xa1)<\\x94Z\\x19r1\\x03s\\xdaG\\x00\\xa1\\xdae.\\x13;#\\xac\\x8d>\\xda\\xb5VQ\\xe5\\xbda\\x1d\\x11\\xd4\\x93q\\xb6\\xdah\\x8c\\xd7\\xaa\\x9cw\\xbc5!$^\\xd1!FZ\\xe8$\\xd7Lq\\x92\\xcb\\xb6k\\xf8\\x1b}\\xf9\\x84\\x8f\\xdd\\xa8_j\\xbf\\xddp\\xff\\x00\\xb9G\\xfaHP\\xb3_\\xc0\\xdb\\xef\\xcc$~\\xedB\\xfbU\\xfe\\xeb\\x87\\xfd\\xca?\\xd2C>\\'\\xf8i\\xf9\\xcf\\xd2\\x1d)\\xe0\\xf5\\x00\\x00\\xf9\\x8a\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\xa4g?\\x85X\\xa7\\xf6\\xa5~\\xe8\\x84naEe\\x91S*\\x1dVG;\\x15\\x96n%ea\\\\\\xc4w\\x9d\"/zwd4\\xe24?\\xec\\xeb\\xf8\\x8c\\x84\\x96s\\xf8U\\x8a\\x7fjW\\xee\\x88zG\\xd7\\xa7\\\\\\x1a>S\\xf5\\x96j\\xf89\\x13\\'\\xd9nE\\xb3n\\xc1\\xd9\\xb5NY{2\\xe6[\\x18\\x9a\\xd0\\x8a\\xc9\\xac\\xc3\\xee\\xab\\x1cm\\xa5\\xea\\x96V\\xc3I5\\xeb\\xa9{KR\\xcf\\xd8-\\x0c\\xb5=|\\x9bx\\xae\\x8bA\\xb5]\\x98\\xdbdW\\xd2p\\xad\\x9f\\xb3\\x8d\\xc8\\x89\\x16\\xe2-dIqaY\\xad\\xc6\\x96d\\xead0\\xf3l\\xf7\\x8d\\x11\\x919\\xbaG\\xaaM$\\xad\\x14\\xa2>\\xc6\\x01\\xc2pb\\xd6\\x89\\xe5\\xd9\\x9b\\xb8\\xaf\"\\xc5\\xf1\\x0c\\x03d\\x9b:\\xca*n\\xe6\\xe4\\xb8R6\\x90\\xd6A>\\xe2\\xc6\\xbd\\xb6[\\x8a\\xc3\\x88}\\x87\\x96\\x96Za\\xa4\\xb7\\x1f\\xbd\\xddW\\xb2\\x82I\\xf7\\x9b\\xc5\\xa9\\x19\\x18\\xb0]\\xe7;?\\xa6\\xed\\x16\\xeee\\x9d=\\x05\\xec&\\xdf\\x15\\x86\\xc6!w6)\\xbb\\\\\\x8d\\x1dx\\xe52\\x85\\x1aM(uz\\xb2\\xafq\\x1a\\x92DDg\\xee\\x1dh\\x01\\xb2\\xb7\\t.\\xe5\\xfcC\\x1d\\xc2\\xf6\\x83\\xdaS&\\x90\\xdd\\x1dm\\x8d\\x0b\\x9b=\\xa7E{R+\\xc9\\tj+\\xafL-\\xc46\\xb4\\x91\\xb6F\\x92I\\x1at/q\\x11\\x97!{\\xeci-\\xe9\\xbd\\x96vb\\xeb\\xee\\xa9\\xe7\\n\\x91\\x84o,\\xf5=\\xd4\\x91\\xa5%\\xff\\x00b\"/\\xfb\\r\\x94R2\\xbd\\x91Tf7\\x0b\\xb2\\x99m\\x94\\xc3}HJ\\r\\xaa\\x9c\\x9e\\xc2\\x03\\x04DZ\\x11\\x93L>\\x84\\x11\\xfe3\"\\xd4\\xfe1c\\x0ei\\x9b\\xc7\\x9fr\\xf7d\\x9d\\xa3li1\\xad\\xb8\\xec\\xb3 \\xcf\\xdbB\\xb6w\\x0e5\\x8b~\\x93-\\x83v\\x14;U\\x93>\\x8e\\xe3\\xe5\\xa1\\x91j\\xd9<\\x94)E\\xa2Tg\\xcc\\xb5\\xd4b\\x94y\\xb5=~5x\\x8a\\xb5\\xd2\\xd0\\xe0\\xf7\\x1bU\\xb372\\x99\\xd4\\xe8\\x91\\x1a\\x9d\\xa2\\x84\\xda\\xdaq\\xa6\\x9dF\\xe3kuZ\\xb6\\x97\\x16\\x9d\\xd2%\\x9f#\\xde!\\xdc8v\\x1d\\x0f\\x08\\xabr\\x04)\\x96\\xd3Y[\\xa6\\xf1\\xb9qk&\\xc5\\xe23\"-\\t\\xc7\\xd6\\xb5\\x12}\\x92\\xf6H\\xf4#3=53\\x13\\x833\\x855M\\xee]\\xfe}\\xd3\\xb7\\x11=\\x996\\xa4\\xc4gd\\xdc\\xd7\\xd0\\xed\"-\\xb9)\\xda\\xd2a\\xdf\\x83\\xbd*\\x04\\x85ILd6\\x82KjG|\\xe1n!)4\\xef\\x19\\x16\\x9a\\x8d+l;S\\xc4s\\\\\\xbf\\x13\\x88\\xd6CGA\\xb3\\xf9\\x94\\x92\\xe4D\\xca\\x93F\\xc5\\x8b\\xb3\\xdf\\'\\xc9\\xa7+\\xe2\\xf7\\xcd8\\x84\\x9e\\x89%\\xa9$\\x85)~\\xc1$\\xb9j:\\xe8\\x020f\"\\xd7\\xfc\\xf5.\\xe1\\x8d\\x9c=)\\xdd\\x92\\xf6J\\xf4\\x95\\xbc\\xa8\\xb5\\xb9K\\xb5\\xd3\\x19\\x90\\x93J\\xd8\\x90\\xdb\\x13Ze\\xb7\\x12|\\xd2\\xa4\\x1aM:\\x19r\\xe4_\\x88H\\xe7W\\xd8N\\x13\\xb4\\x1e\\xd0qv\\x96\\xccV\\xb2K\\xe8\\xa9^=*\\xd6\\x11\\xbc\\x99\\x95\\xe5\\x01(m\\x98\\xaa4\\xa8\\xb5C\\xc4\\xe6\\xf2\\x13\\xa1\\x9a\\x8c\\x8fC\\xf7\\x97[\\xe6\\xf8U~{FU\\xb6\\x06\\xe3]\\xd4\\x96f\\xc6\\x94\\xc1\\x91;\\x1aC.%\\xc6\\x9dl\\xcc\\x8c\\x89IZH\\xf9\\x91\\x91\\x96\\xa4ddfG\\xef\\xc8i\\x18\\xc9h,\\xea%-\\xc6\\xe3XEv#\\xabd\\xc8\\x96\\x948\\x83I\\x9aL\\xc8\\xcb]\\x0c\\xf4\\xd4\\x8cM\\x8c\\xc4Z\\xff\\x00\\x96\\xb2\\xdd\\xc8;\\n\\xcei6O\\x95c\\x969T\\xcf\\x82a\\xde\\xec\\xb7\\x18E[\\xabij\\xf4\\xd7XC\\xdd\\xeb,\\x92H\\xcdn\\x97z\\xd9\\xf7i\\xd5FJ-\\x08\\xc6O\\xb3\\xd6\\xd9\\xab\\xa3\\xd8}\\xe6]\\x93\\xcd\\xc30\\x93\\xc1\\xdd\\x87\\x02\\xf15\\xb1&F\\x8fbs\\x16\\xa7[s\\xd2c\\xbc\\x86T\\xe3=\\xde\\x8b\\xd1&\\xae\\xec\\xd3\\xbd\\xef!\\xfe\\x86\\xe1x\\xacL\\x17\\x0e\\xa1\\xc6\\xa08\\xf3\\xd0i\\xa01]\\x1d\\xc9*%:\\xa6\\xd9m-\\xa4\\xd6dDF\\xa3$\\x96\\xa6DE\\xaf\\xc4BdM\\x84\\xda\"\\xfc\\x0b\\xb8\\xc6\\x97f\\x98\\x84\\x0c\\xbf\\xb3\\xc4*\\x9b\\x199n3a\\x90\\xdf\\xdc\\xc7v\\xda\\x1bl\\'\\xbc8n\\xb9\\xf76\\x10\\xd3Hm\\xb2u=\\xe2\\x12H\"\\xd4\\xf5.Z\\t.\\xd356\\xf8f\\xd1\\x97O\\x8bG[1\\xb6\\xc3X\\xce&\\xf2\\xa2\\xa4\\x890\\xa52\\xe2Q\\xe9&_\\x11z\\x0b\\xd2K\\x97\\xc9\\x90:\\xf0Sd\\xec\\xae\\xb2\\xc3i\\x90\\xf3i\\xf3\\xac\\xe7\\xcf\\xafeMW@\\x91\\'XP\\x14\\xb4\\x1a\\x1cu\\xa6\\x88\\x8b\\xee\\x8bA\\x9aMJ5\\x1e\\x8a2-51\\xa9\\xc1\\xff\\x00\\x1bG\\xe7\\xc1.\\x83\\x8a{;\\xc76\\xc5\\x8e\\xe3\\x0cS\\xb4\\xcem\\x17\\x1aRkd\\xa6\\n\\x8c\\xd9\\xacm\\xc4\\xa0\\xda\\'\\xf4\\xd0\\x88\\x95\\xa7\\xb3\\xae\\xbf\\xff\\x00.un\\xd6\\xb0qUc\\xf8\\xa5\\xa6C\\x96F\\xc3l*m\\xfd.\\x9e\\xc6\\xca\\t\\xcd\\x82r{\\x97\\x12m\\xc9h\\xcbt\\xdbR\\re\\xa9\\xa9&G\\xbb\\xba\\xa2=\\x08\\xf7p\\x1df\\x8b\\xc4\\xc2]\\xc6\\x07\\xb4J\\xc5\\xca\\xec\\xe1\\xb4\\x8c\\xd2\\x82\\x0e\\x15B\\xa87p\\xa6i\\rH\\x83\\x15\\xc7\\x10\\xd9F\\xd0\\x8d:\\xb6\\xdb\\xa4\\xca\\xd6\\xd9(\\xbd\\xcb\"\\xf7\\xf3=3d\\x14\\xd4\\xf6\\xfd\\xa86\\xe3zp\\xe3K\\x97\\xff\\x00\\xa0\\xa6<\\xc5\\xb6JR\\x1b8\\tYn\\x19\\x96\\xa9#=\\xd3\\xe5\\xef\\xddO\\xe2!\\xd0`1\\x18v\\x9b\\xcc\\xfeZ\\xcbv\\x0f\\xb0\\xe6\\xdfWh\\x8e\\xd0\\xf2\\x1b\\xd7\\xe0\\xa5[T4\\xd1\\x97\\xdezBj\\xd9\\xef\\xf4\\xfc\\xbe\\xd3z\\xff\\x00\\xd8]\\xae\\xed\\xf0fv\\xe1\\x8c\\xd6\\xd8W!\\xdd\\xa0?W)\\xda\\xc9\\xc7\\x05KSQR\\xa4\\x93\\xc9\\'\\xb4\\xd1:\\x99\\x97#?\\xc7\\xee\\xde\\xe7d\\xc3p\\xba\\xfc\"\\x0c\\xd6 \\x9b\\x8e\\xbb>s\\xf6S%>dnH\\x90\\xea\\xb7\\x96\\xb5\\x19\\x11\\x17\\xbbu$DZ\\x12P\\x94\\x97\"\\x13\\xc3t\\xd31M\\xbc\\xef\\xde\\xe5\\xd8?l\\xa8\\xeasf\\x942&\\xc4~~%\\x0f&\\xad\\x95\\x93\\xc5a\\xa5=\\xdeU\\xa1\\xd37w\\xdbI\\x19\\xad\\xb4\\xaf\\xbaR\\xd2D~\\xcaU\\xcbMFB\\xbb\\xdc\\x1b5\\xcf6\\xef?\\x08\\xf82e\\x0b\\xbb2cy\\xda\\xf8\\xc4\\xdb\\x0e\\xba\\x93\\x9d\\xed\\x17\\xb2D\\xa3\"&\\xcbx\\xb5\\xd3t\\x8b]S\\xa1v\\xb0\\x0cU\\x87\\x9a\\xab\\xdc\\x89q&\\x13{\\x89\\xe09\\xd6!}\\xb5V\\xe3\\xb1A7g\\x14\\x911\\xabKH\\xc6\\xec&\\\\Kj9\\x8c\\x12\\x8d&\\x94<\\xbd\\xe6U\\xcfCRH\\x88\\x8c\\xfd\\xc2\\xed\\x96\\xe6\\x18F\\x19\\xb7\\xcd\\x98\\xe6s\\xfd\\x16\\x9b\\x04\\xb1\\xc3f\\xd7\\xd6\\xcfz\\n\\x99\\x8e\\x87M\\xf8\\x8e\\xb0\\xce\\xe9\\xa0\\x8d\\xa5whV\\xeaTI>FDZ\\x96\\x83\\xa9@H\\xc2\\x98\\x8bD\\xf6.\\x86\\xcd\\x7f\\x03o\\xbf0\\x91\\xfb\\xb5\\x0b\\xedW\\xfb\\xae\\x1f\\xf7(\\xff\\x00I\\n\\x16k\\xf8\\x1b}\\xf9\\x84\\x8f\\xdd\\xa8_j\\xbf\\xddp\\xff\\x00\\xb9G\\xfaHo\\xc4\\xff\\x00\\r?9\\xfaCt\\xf0z\\x80\\x00|\\xc5\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00W2\\xccM\\xdc\\x8eEl\\x98\\xd6K\\xad\\x93\\x05N)\\x0bK)p\\x94KN\\xe9\\x91\\x91\\x88\\xce\\x06\\xbc\\xf9\\xd4\\xaf\\xd5\\xed\\xf9\\x8b\\xb0\\x0fM>\\'\\x12\\x8ab\\x98\\x98\\xb4yD\\xfdan\\xa4\\xf05\\xe7\\xce\\xa5~\\xafo\\xcc8\\x1a\\xf3\\xe7R\\xbfW\\xb7\\xe6.\\xc07\\xbd\\xe2\\xf9zG\\xb0\\xa4\\xf05\\xe7\\xce\\xa5~\\xafo\\xcc8\\x1a\\xf3\\xe7R\\xbfW\\xb7\\xe6.\\xc0\\x1b\\xde/\\x97\\xa4{\\nO\\x03^|\\xeaW\\xea\\xf6\\xfc\\xc3\\x81\\xaf>u+\\xf5{~b\\xec\\x01\\xbd\\xe2\\xf9zG\\xb0\\xa4\\xf05\\xe7\\xce\\xa5~\\xafo\\xcc8\\x1a\\xf3\\xe7R\\xbfW\\xb7\\xe6.\\xc0\\x1b\\xde/\\x97\\xa4{\\nO\\x03^|\\xeaW\\xea\\xf6\\xfc\\xc3\\x81\\xaf>u+\\xf5{~b\\xec\\x01\\xbd\\xe2\\xf9zG\\xb0\\xa4\\xf05\\xe7\\xce\\xa5~\\xafo\\xcc8\\x1a\\xf3\\xe7R\\xbfW\\xb7\\xe6.\\xc0\\x1b\\xde/\\x97\\xa4{\\nO\\x03^|\\xeaW\\xea\\xf6\\xfc\\xc3\\x81\\xaf>u+\\xf5{~b\\xec\\x01\\xbd\\xe2\\xf9zG\\xb0\\xa4\\xf05\\xe7\\xce\\xa5~\\xafo\\xcc8\\x1a\\xf3\\xe7R\\xbfW\\xb7\\xe6.\\xc0\\x1b\\xde/\\x97\\xa4{\\nO\\x03^|\\xeaW\\xea\\xf6\\xfc\\xc3\\x81\\xaf>u+\\xf5{~b\\xec\\x01\\xbd\\xe2\\xf9zG\\xb0\\xa4\\xf05\\xe7\\xce\\xa5~\\xafo\\xcc8\\x1a\\xf3\\xe7R\\xbfW\\xb7\\xe6.\\xc0\\x1b\\xde/\\x97\\xa4{\\nO\\x03^|\\xeaW\\xea\\xf6\\xfc\\xc3\\x81\\xaf>u+\\xf5{~b\\xec\\x01\\xbd\\xe2\\xf9zG\\xb0\\xa4\\xf05\\xe7\\xce\\xa5~\\xafo\\xcc8\\x1a\\xf3\\xe7R\\xbfW\\xb7\\xe6.\\xc0\\x1b\\xde/\\x97\\xa4{\\nO\\x03^|\\xeaW\\xea\\xf6\\xfc\\xc3\\x81\\xaf>u+\\xf5{~b\\xec\\x01\\xbd\\xe2\\xf9zG\\xb0\\xa0\\xd8\\xec\\xe2\\xde\\xd2\\xbeL7\\xf2\\x95\\x9b\\x12\\x1aS.\\x12`6G\\xba\\xa22=\\x0f_\\xc4b\\xf3\\x19\\x82\\x8d\\x19\\xa6H\\xf7\\x89\\xb4\\x12\\x08\\xcf\\xe3\\xd0\\xb4\\x1f\\xa8\\x0eX\\x98\\xf5\\xe2\\xc4ES\\xc3\\xca#\\xe8\\\\\\x00\\x01\\xc1\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\xff\\xd9'"
+}
\ No newline at end of file
diff --git a/tests/data/rsp_cache.json b/tests/data/rsp_cache.json
index 40d7d3953..565241779 100644
--- a/tests/data/rsp_cache.json
+++ b/tests/data/rsp_cache.json
@@ -355,7 +355,7 @@
"code": "print(data.head())"
},
"\n # Context:\n user: run analysis on sklearn iris dataset\n # Task:\n Based on the context, write a plan or modify an existing plan of what you should do to achieve the goal. A plan consists of one to 5 tasks.\n If you are modifying an existing plan, carefully follow the instruction, don't make unnecessary changes. Give the whole plan unless instructed to modify only one task of the plan.\n If you encounter errors on the current task, revise and output the current single task only.\n Output a list of jsons following the format:\n ```json\n [\n {\n \"task_id\": str = \"unique identifier for a task in plan, can be an ordinal\",\n \"dependent_task_ids\": list[str] = \"ids of tasks prerequisite to this task\",\n \"instruction\": \"what you should do in this task, one short phrase or sentence\",\n },\n ...\n ]\n ```\n ": "```json\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Import the Iris dataset from sklearn.datasets\"\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\"1\"],\n \"instruction\": \"Perform exploratory data analysis to understand the dataset\"\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\"2\"],\n \"instruction\": \"Preprocess the data to prepare it for modeling\"\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\"3\"],\n \"instruction\": \"Split the dataset into training and testing sets\"\n },\n {\n \"task_id\": \"5\",\n \"dependent_task_ids\": [\"4\"],\n \"instruction\": \"Train a classifier using the training set and evaluate it using the test set\"\n }\n]\n```",
- "[{\"role\": \"user\", \"content\": \"\\nPlease assign a task type to each task in the list below from the given categories:\\nTask 1: Import the Iris dataset from sklearn.datasets\\nTask 2: Perform exploratory data analysis to understand the dataset\\nTask 3: Preprocess the data to prepare it for modeling\\nTask 4: Split the dataset into training and testing sets\\nTask 5: Train a classifier using the training set and evaluate it using the test set\\n\\n## All Task Type:\\n- **eda**: For performing exploratory data analysis\\n- **data_preprocess**: Only for changing value inplace.\\n- **feature_engineering**: Only for creating new columns for input data.\\n- **model_train**: Only for training model.\\n- **model_evaluate**: Only for evaluating model.\\n- **stable_diffusion**: Related to text2image, image2image using stable diffusion model.\\n- **image2webpage**: For converting image into webpage code.\\n- **web_scraping**: For scraping data from web pages.\\n- **other**: Any tools not in the defined categories\\n\"}]": {
+ "[{\"role\": \"user\", \"content\": \"\\nPlease assign a task type to each task in the list below from the given categories:\\nTask 1: Import the Iris dataset from sklearn.datasets\\nTask 2: Perform exploratory data analysis to understand the dataset\\nTask 3: Preprocess the data to prepare it for modeling\\nTask 4: Split the dataset into training and testing sets\\nTask 5: Train a classifier using the training set and evaluate it using the test set\\n\\n## All Task Type:\\n- **eda**: For performing exploratory data analysis\\n- **data_preprocess**: Only for changing value inplace.\\n- **email_login**: For logging to an email.\\n- **feature_engineering**: Only for creating new columns for input data.\\n- **model_train**: Only for training model.\\n- **model_evaluate**: Only for evaluating model.\\n- **stable_diffusion**: Related to text2image, image2image using stable diffusion model.\\n- **image2webpage**: For converting image into webpage code.\\n- **web_scraping**: For scraping data from web pages.\\n- **other**: Any tools not in the defined categories\\n\"}]": {
"task_type": [
"other",
"eda",
@@ -366,28 +366,66 @@
]
},
"\n # Context:\n user: \n## User Requirement\nRun data analysis on sklearn Iris dataset, include a plot\n## Context\n\n## Current Plan\n[]\n## Current Task\n{}\n\n # Task:\n Based on the context, write a plan or modify an existing plan of what you should do to achieve the goal. A plan consists of one to 3 tasks.\n If you are modifying an existing plan, carefully follow the instruction, don't make unnecessary changes. Give the whole plan unless instructed to modify only one task of the plan.\n If you encounter errors on the current task, revise and output the current single task only.\n Output a list of jsons following the format:\n ```json\n [\n {\n \"task_id\": str = \"unique identifier for a task in plan, can be an ordinal\",\n \"dependent_task_ids\": list[str] = \"ids of tasks prerequisite to this task\",\n \"instruction\": \"what you should do in this task, one short phrase or sentence\",\n },\n ...\n ]\n ```\n ": "```json\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Load the sklearn Iris dataset.\"\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\"1\"],\n \"instruction\": \"Perform exploratory data analysis on the Iris dataset.\"\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\"2\"],\n \"instruction\": \"Create a plot visualizing the Iris dataset.\"\n }\n]\n```",
- "[{\"role\": \"user\", \"content\": \"\\nPlease assign a task type to each task in the list below from the given categories:\\nTask 1: Load the sklearn Iris dataset.\\nTask 2: Perform exploratory data analysis on the Iris dataset.\\nTask 3: Create a plot visualizing the Iris dataset.\\n\\n## All Task Type:\\n- **eda**: For performing exploratory data analysis\\n- **data_preprocess**: Only for changing value inplace.\\n- **feature_engineering**: Only for creating new columns for input data.\\n- **model_train**: Only for training model.\\n- **model_evaluate**: Only for evaluating model.\\n- **stable_diffusion**: Related to text2image, image2image using stable diffusion model.\\n- **image2webpage**: For converting image into webpage code.\\n- **web_scraping**: For scraping data from web pages.\\n- **other**: Any tools not in the defined categories\\n\"}]": {
+ "[{\"role\": \"user\", \"content\": \"\\nPlease assign a task type to each task in the list below from the given categories:\\nTask 1: Load the sklearn Iris dataset.\\nTask 2: Perform exploratory data analysis on the Iris dataset.\\nTask 3: Create a plot visualizing the Iris dataset.\\n\\n## All Task Type:\\n- **eda**: For performing exploratory data analysis\\n- **data_preprocess**: Only for changing value inplace.\\n- **email_login**: For logging to an email.\\n- **feature_engineering**: Only for creating new columns for input data.\\n- **model_train**: Only for training model.\\n- **model_evaluate**: Only for evaluating model.\\n- **stable_diffusion**: Related to text2image, image2image using stable diffusion model.\\n- **image2webpage**: For converting image into webpage code.\\n- **web_scraping**: For scraping data from web pages.\\n- **other**: Any tools not in the defined categories\\n\"}]": {
"task_type": [
- "other",
+ "data_preprocess",
"eda",
"other"
]
},
- "[{\"role\": \"system\", \"content\": \"You are Code Interpreter, a world-class programmer that can complete any goal by executing code. Strictly follow the plan and generate code step by step. Each step of the code will be executed on the user's machine, and the user will provide the code execution results to you.**Notice: The code for the next step depends on the code for the previous step. Must reuse variables in the lastest other code directly, dont creat it again, it is very import for you. Use !pip install in a standalone block to install missing packages.Usually the libraries you need are already installed.Dont check if packages already imported.**\"}, {\"role\": \"user\", \"content\": \"\\n## User Requirement\\nRun data analysis on sklearn Iris dataset, include a plot\\n## Context\\n\\n## Current Plan\\n[\\n {\\n \\\"task_id\\\": \\\"1\\\",\\n \\\"dependent_task_ids\\\": [],\\n \\\"instruction\\\": \\\"Load the sklearn Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n },\\n {\\n \\\"task_id\\\": \\\"2\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"1\\\"\\n ],\\n \\\"instruction\\\": \\\"Perform exploratory data analysis on the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"eda\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n },\\n {\\n \\\"task_id\\\": \\\"3\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"2\\\"\\n ],\\n \\\"instruction\\\": \\\"Create a plot visualizing the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n }\\n]\\n## Current Task\\n{\\\"task_id\\\":\\\"1\\\",\\\"dependent_task_ids\\\":[],\\\"instruction\\\":\\\"Load the sklearn Iris dataset.\\\",\\\"task_type\\\":\\\"other\\\",\\\"code\\\":\\\"\\\",\\\"result\\\":\\\"\\\",\\\"is_success\\\":false,\\\"is_finished\\\":false}\\n\"}, {\"role\": \"user\", \"content\": \"\\n# Instruction\\nWrite complete code for 'Current Task'. And avoid duplicating code from finished tasks, such as repeated import of packages, reading data, etc.\\nSpecifically, \\n\\n# Capabilities\\n- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python Class.\\n- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..\\n\\n# Available Tools (can be empty):\\nEach Class tool is described in JSON format. When you call a tool, import the tool first.\\n{}\\n\\n# Constraints:\\n- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.\\n- Always prioritize using pre-defined tools for the same functionality.\\n\"}]": {
- "code": "from sklearn.datasets import load_iris\niris_data = load_iris()"
+ "[{\"role\": \"user\", \"content\": \"\\n## User Requirement:\\nLoad the sklearn Iris dataset.\\n\\n## Task\\nRecommend up to five tools from 'Available Tools' that can help solve the 'User Requirement'. \\n\\n## Available Tools:\\n{'FillMissingValue': 'Completing missing values with simple strategies.', 'MinMaxScale': 'Transform features by scaling each feature to a range, which is (0, 1).', 'StandardScale': 'Standardize features by removing the mean and scaling to unit variance.', 'MaxAbsScale': 'Scale each feature by its maximum absolute value.', 'RobustScale': 'Apply the RobustScaler to scale features using statistics that are robust to outliers.', 'OrdinalEncode': 'Encode categorical features as ordinal integers.', 'OneHotEncode': 'Apply one-hot encoding to specified categorical columns, the original columns will be dropped.', 'LabelEncode': 'Apply label encoding to specified categorical columns in-place.'}\\n\\n## Tool Selection and Instructions:\\n- Select tools most relevant to completing the 'User Requirement'.\\n- If you believe that no tools are suitable, indicate with an empty list.\\n- Only list the names of the tools, not the full schema of each tool.\\n- Ensure selected tools are listed in 'Available Tools'.\\n\"}]": {
+ "recommend_tools": []
},
- "[{\"role\": \"system\", \"content\": \"You are Code Interpreter, a world-class programmer that can complete any goal by executing code. Strictly follow the plan and generate code step by step. Each step of the code will be executed on the user's machine, and the user will provide the code execution results to you.**Notice: The code for the next step depends on the code for the previous step. Must reuse variables in the lastest other code directly, dont creat it again, it is very import for you. Use !pip install in a standalone block to install missing packages.Usually the libraries you need are already installed.Dont check if packages already imported.**\"}, {\"role\": \"user\", \"content\": \"\\n## User Requirement\\nRun data analysis on sklearn Iris dataset, include a plot\\n## Context\\n\\n## Current Plan\\n[\\n {\\n \\\"task_id\\\": \\\"1\\\",\\n \\\"dependent_task_ids\\\": [],\\n \\\"instruction\\\": \\\"Load the sklearn Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"a successful run\\\",\\n \\\"is_success\\\": true,\\n \\\"is_finished\\\": true\\n },\\n {\\n \\\"task_id\\\": \\\"2\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"1\\\"\\n ],\\n \\\"instruction\\\": \\\"Perform exploratory data analysis on the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"eda\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n },\\n {\\n \\\"task_id\\\": \\\"3\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"2\\\"\\n ],\\n \\\"instruction\\\": \\\"Create a plot visualizing the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n }\\n]\\n## Current Task\\n{\\\"task_id\\\":\\\"2\\\",\\\"dependent_task_ids\\\":[\\\"1\\\"],\\\"instruction\\\":\\\"Perform exploratory data analysis on the Iris dataset.\\\",\\\"task_type\\\":\\\"eda\\\",\\\"code\\\":\\\"\\\",\\\"result\\\":\\\"\\\",\\\"is_success\\\":false,\\\"is_finished\\\":false}\\n\"}, {\"role\": \"user\", \"content\": \"\\n# Instruction\\nWrite complete code for 'Current Task'. And avoid duplicating code from finished tasks, such as repeated import of packages, reading data, etc.\\nSpecifically, \\n\\n# Capabilities\\n- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python Class.\\n- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..\\n\\n# Available Tools (can be empty):\\nEach Class tool is described in JSON format. When you call a tool, import the tool first.\\n{}\\n\\n# Constraints:\\n- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.\\n- Always prioritize using pre-defined tools for the same functionality.\\n\"}]": {
- "code": "from sklearn import datasets\nimport pandas as pd\n\n# Load Iris dataset\niris = datasets.load_iris()\ndf_iris = pd.DataFrame(data=iris.data, columns=iris.feature_names)\ndf_iris['target'] = iris.target\n\n# Display basic information about the dataset\nprint(df_iris.info())\n\n# Display statistical summary of the dataset\nprint(df_iris.describe())\n\n# Display the first few rows of the dataset\nprint(df_iris.head())\n\n# Display the distribution of the target variable\ntarget_counts = df_iris['target'].value_counts()\nprint(target_counts)"
+ "[{\"role\": \"system\", \"content\": \"You are Code Interpreter, a world-class programmer that can complete any goal by executing code. Strictly follow the plan and generate code step by step. Each step of the code will be executed on the user's machine, and the user will provide the code execution results to you.**Notice: The code for the next step depends on the code for the previous step. Must reuse variables in the lastest other code directly, dont creat it again, it is very import for you. Use !pip install in a standalone block to install missing packages.Usually the libraries you need are already installed.Dont check if packages already imported.**\"}, {\"role\": \"user\", \"content\": \"\\n## User Requirement\\nRun data analysis on sklearn Iris dataset, include a plot\\n## Context\\n\\n## Current Plan\\n[\\n {\\n \\\"task_id\\\": \\\"1\\\",\\n \\\"dependent_task_ids\\\": [],\\n \\\"instruction\\\": \\\"Load the sklearn Iris dataset.\\\",\\n \\\"task_type\\\": \\\"data_preprocess\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n },\\n {\\n \\\"task_id\\\": \\\"2\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"1\\\"\\n ],\\n \\\"instruction\\\": \\\"Perform exploratory data analysis on the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"eda\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n },\\n {\\n \\\"task_id\\\": \\\"3\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"2\\\"\\n ],\\n \\\"instruction\\\": \\\"Create a plot visualizing the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n }\\n]\\n## Current Task\\n{\\\"task_id\\\":\\\"1\\\",\\\"dependent_task_ids\\\":[],\\\"instruction\\\":\\\"Load the sklearn Iris dataset.\\\",\\\"task_type\\\":\\\"data_preprocess\\\",\\\"code\\\":\\\"\\\",\\\"result\\\":\\\"\\\",\\\"is_success\\\":false,\\\"is_finished\\\":false}\\n\"}, {\"role\": \"user\", \"content\": \"\\n# Instruction\\nWrite complete code for 'Current Task'. And avoid duplicating code from finished tasks, such as repeated import of packages, reading data, etc.\\nSpecifically, \\nThe current task is about data preprocessing, please note the following:\\n- Monitor data types per column, applying appropriate methods.\\n- Ensure operations are on existing dataset columns.\\n- Avoid writing processed data to files.\\n- Avoid any change to label column, such as standardization, etc.\\n- Prefer alternatives to one-hot encoding for categorical data.\\n- Only encode or scale necessary columns to allow for potential feature-specific engineering tasks (like time_extract, binning, extraction, etc.) later.\\n- Each step do data preprocessing to train, must do same for test separately at the same time.\\n\\n\\n# Capabilities\\n- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python Class.\\n- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..\\n\\n# Available Tools (can be empty):\\nEach Class tool is described in JSON format. When you call a tool, import the tool first.\\n{}\\n\\n# Constraints:\\n- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.\\n- Always prioritize using pre-defined tools for the same functionality.\\n\"}]": {
+ "code": "from sklearn.datasets import load_iris\niris_data = load_iris()\nX, y = iris_data.data, iris_data.target"
},
- "[{\"role\": \"system\", \"content\": \"You are Code Interpreter, a world-class programmer that can complete any goal by executing code. Strictly follow the plan and generate code step by step. Each step of the code will be executed on the user's machine, and the user will provide the code execution results to you.**Notice: The code for the next step depends on the code for the previous step. Must reuse variables in the lastest other code directly, dont creat it again, it is very import for you. Use !pip install in a standalone block to install missing packages.Usually the libraries you need are already installed.Dont check if packages already imported.**\"}, {\"role\": \"user\", \"content\": \"\\n## User Requirement\\nRun data analysis on sklearn Iris dataset, include a plot\\n## Context\\n\\n## Current Plan\\n[\\n {\\n \\\"task_id\\\": \\\"1\\\",\\n \\\"dependent_task_ids\\\": [],\\n \\\"instruction\\\": \\\"Load the sklearn Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"a successful run\\\",\\n \\\"is_success\\\": true,\\n \\\"is_finished\\\": true\\n },\\n {\\n \\\"task_id\\\": \\\"2\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"1\\\"\\n ],\\n \\\"instruction\\\": \\\"Perform exploratory data analysis on the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"eda\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"a successful run\\\",\\n \\\"is_success\\\": true,\\n \\\"is_finished\\\": true\\n },\\n {\\n \\\"task_id\\\": \\\"3\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"2\\\"\\n ],\\n \\\"instruction\\\": \\\"Create a plot visualizing the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n }\\n]\\n## Current Task\\n{\\\"task_id\\\":\\\"3\\\",\\\"dependent_task_ids\\\":[\\\"2\\\"],\\\"instruction\\\":\\\"Create a plot visualizing the Iris dataset.\\\",\\\"task_type\\\":\\\"other\\\",\\\"code\\\":\\\"\\\",\\\"result\\\":\\\"\\\",\\\"is_success\\\":false,\\\"is_finished\\\":false}\\n\"}, {\"role\": \"user\", \"content\": \"\\n# Instruction\\nWrite complete code for 'Current Task'. And avoid duplicating code from finished tasks, such as repeated import of packages, reading data, etc.\\nSpecifically, \\n\\n# Capabilities\\n- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python Class.\\n- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..\\n\\n# Available Tools (can be empty):\\nEach Class tool is described in JSON format. When you call a tool, import the tool first.\\n{}\\n\\n# Constraints:\\n- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.\\n- Always prioritize using pre-defined tools for the same functionality.\\n\"}]": {
- "code": "from sklearn import datasets\nimport matplotlib.pyplot as plt\nimport pandas as pd\n\n# Load Iris dataset\niris = datasets.load_iris()\niris_df = pd.DataFrame(data=iris.data, columns=iris.feature_names)\niris_df['target'] = iris.target\niris_df['target_name'] = iris_df['target'].apply(lambda x: iris.target_names[x])\n\n# Plotting\nfig, ax = plt.subplots(figsize=(12, 8))\nfor target, target_name in zip(iris.target_names, iris.target_names):\n subset = iris_df[iris_df['target_name'] == target_name]\n ax.scatter(subset[iris.feature_names[0]], subset[iris.feature_names[1]], label=target_name)\n\nax.set_xlabel(iris.feature_names[0])\nax.set_ylabel(iris.feature_names[1])\nax.legend()\nplt.show()"
+ "[{\"role\": \"system\", \"content\": \"You are Code Interpreter, a world-class programmer that can complete any goal by executing code. Strictly follow the plan and generate code step by step. Each step of the code will be executed on the user's machine, and the user will provide the code execution results to you.**Notice: The code for the next step depends on the code for the previous step. Must reuse variables in the lastest other code directly, dont creat it again, it is very import for you. Use !pip install in a standalone block to install missing packages.Usually the libraries you need are already installed.Dont check if packages already imported.**\"}, {\"role\": \"user\", \"content\": \"\\n## User Requirement\\nRun data analysis on sklearn Iris dataset, include a plot\\n## Context\\n\\n## Current Plan\\n[\\n {\\n \\\"task_id\\\": \\\"1\\\",\\n \\\"dependent_task_ids\\\": [],\\n \\\"instruction\\\": \\\"Load the sklearn Iris dataset.\\\",\\n \\\"task_type\\\": \\\"data_preprocess\\\",\\n \\\"code\\\": \\\"from sklearn.datasets import load_iris\\\\niris_data = load_iris()\\\\nX, y = iris_data.data, iris_data.target\\\",\\n \\\"result\\\": \\\"a successful run\\\",\\n \\\"is_success\\\": true,\\n \\\"is_finished\\\": true\\n },\\n {\\n \\\"task_id\\\": \\\"2\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"1\\\"\\n ],\\n \\\"instruction\\\": \\\"Perform exploratory data analysis on the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"eda\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n },\\n {\\n \\\"task_id\\\": \\\"3\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"2\\\"\\n ],\\n \\\"instruction\\\": \\\"Create a plot visualizing the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n }\\n]\\n## Current Task\\n{\\\"task_id\\\":\\\"2\\\",\\\"dependent_task_ids\\\":[\\\"1\\\"],\\\"instruction\\\":\\\"Perform exploratory data analysis on the Iris dataset.\\\",\\\"task_type\\\":\\\"eda\\\",\\\"code\\\":\\\"\\\",\\\"result\\\":\\\"\\\",\\\"is_success\\\":false,\\\"is_finished\\\":false}\\n\"}, {\"role\": \"user\", \"content\": \"\\n# Instruction\\nWrite complete code for 'Current Task'. And avoid duplicating code from finished tasks, such as repeated import of packages, reading data, etc.\\nSpecifically, \\nThe current task is about exploratory data analysis, please note the following:\\n- Distinguish column types with `select_dtypes` for tailored analysis and visualization, such as correlation.\\n- Remember to `import numpy as np` before using Numpy functions.\\n\\n\\n# Capabilities\\n- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python Class.\\n- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..\\n\\n# Available Tools (can be empty):\\nEach Class tool is described in JSON format. When you call a tool, import the tool first.\\n{}\\n\\n# Constraints:\\n- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.\\n- Always prioritize using pre-defined tools for the same functionality.\\n\"}]": {
+ "code": "import numpy as np\nimport pandas as pd\n\n# Convert the sklearn dataset to a pandas DataFrame for easier manipulation\nfeature_names = iris_data.feature_names\niris_df = pd.DataFrame(X, columns=feature_names)\n\n# Add target column to the DataFrame\niris_df['species'] = pd.Categorical.from_codes(iris_data.target, iris_data.target_names)\n\n# Display basic information about the dataset\niris_info = iris_df.info()\n\n# Display basic statistics about the dataset\niris_description = iris_df.describe()\n\n# Check for missing values\nmissing_values = iris_df.isnull().sum()\n\n# Distinguish column types\nnumerical_cols = iris_df.select_dtypes(include=[np.number]).columns.tolist()\ncategorical_cols = iris_df.select_dtypes(include=['category']).columns.tolist()\n\n# Display the first few rows of the DataFrame\nhead = iris_df.head()\n\n# Output the results\n(iris_info, iris_description, missing_values, numerical_cols, categorical_cols, head)"
},
- "[{\"role\": \"user\", \"content\": \"\\n# Background\\nAs a data scientist, you need to help user to achieve their goal [This is a titanic passenger survival dataset, your goal is to predict passenger survival outcome. The target column is Survived. Perform data analysis, data preprocessing, feature engineering, and modeling to predict the target. Report accuracy on the eval data. Train data path: 'tests/data/ml_datasets/titanic/split_train.csv', eval data path: 'tests/data/ml_datasets/titanic/split_eval.csv'.] step-by-step in an continuous Jupyter notebook.\\n\\n## Done Tasks\\n```python\\n\\n```end\\n\\n## Current Task\\nPerform exploratory data analysis on the train dataset to understand the features and target variable.\\n\\n# Latest Data Info\\nLatest data info after previous tasks:\\n\\n\\n# Task\\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Done Tasks', such as repeated import of packages, reading data, etc.\\nSpecifically, \\n\\n# Output Example:\\nwhen current task is \\\"train a lightgbm model on training data\\\", the code can be like:\\n```python\\n# Step 1: check data type and convert to numeric\\nobj_cols = train.select_dtypes(include='object').columns.tolist()\\n\\nfor col in obj_cols:\\n encoder = LabelEncoder()\\n train[col] = encoder.fit_transform(train[col].unique().tolist() + ['unknown'])\\n test[col] = test[col].apply(lambda x: x if x in encoder.classes_ else 'unknown')\\n test[col] = encoder.transform(test[col])\\n\\n# Step 2: train lightgbm model\\nmodel = LGBMClassifier()\\nmodel.fit(train, y_train)\\n```end\\n\\n# Constraints:\\n- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.\\n\"}]": {
- "code": "# Perform exploratory data analysis on the train dataset\ndf_train = pd.read_csv('tests/data/ml_datasets/titanic/split_train.csv')\n\n# Display the first few rows of the dataset\ndisplay(df_train.head())\n\n# Summary statistics for numerical features\ndisplay(df_train.describe())\n\n# Summary information about the dataset including the data types and number of non-null values\ndisplay(df_train.info())\n\n# Distribution of the target variable 'Survived'\nsurvival_counts = df_train['Survived'].value_counts()\nprint(\"Survival counts:\\n\", survival_counts)\n\n# Visualizations\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\n# Distribution of the target variable\nsns.countplot(x='Survived', data=df_train)\nplt.title('Distribution of Survival')\nplt.show()\n\n# Correlation matrix heatmap to understand the relationship between features\nplt.figure(figsize=(10, 8))\nsns.heatmap(df_train.corr(), annot=True, fmt='.2f')\nplt.title('Correlation Matrix')\nplt.show()\n\n# Pairplot to visualize the pairwise relationships between features\nsns.pairplot(df_train, hue='Survived')\nplt.title('Pairplot of Features')\nplt.show()"
+ "[{\"role\": \"system\", \"content\": \"You are Code Interpreter, a world-class programmer that can complete any goal by executing code. Strictly follow the plan and generate code step by step. Each step of the code will be executed on the user's machine, and the user will provide the code execution results to you.**Notice: The code for the next step depends on the code for the previous step. Must reuse variables in the lastest other code directly, dont creat it again, it is very import for you. Use !pip install in a standalone block to install missing packages.Usually the libraries you need are already installed.Dont check if packages already imported.**\"}, {\"role\": \"user\", \"content\": \"\\n## User Requirement\\nRun data analysis on sklearn Iris dataset, include a plot\\n## Context\\n\\n## Current Plan\\n[\\n {\\n \\\"task_id\\\": \\\"1\\\",\\n \\\"dependent_task_ids\\\": [],\\n \\\"instruction\\\": \\\"Load the sklearn Iris dataset.\\\",\\n \\\"task_type\\\": \\\"data_preprocess\\\",\\n \\\"code\\\": \\\"from sklearn.datasets import load_iris\\\\niris_data = load_iris()\\\\nX, y = iris_data.data, iris_data.target\\\",\\n \\\"result\\\": \\\"a successful run\\\",\\n \\\"is_success\\\": true,\\n \\\"is_finished\\\": true\\n },\\n {\\n \\\"task_id\\\": \\\"2\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"1\\\"\\n ],\\n \\\"instruction\\\": \\\"Perform exploratory data analysis on the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"eda\\\",\\n \\\"code\\\": \\\"import numpy as np\\\\nimport pandas as pd\\\\n\\\\n# Convert the sklearn dataset to a pandas DataFrame for easier manipulation\\\\nfeature_names = iris_data.feature_names\\\\niris_df = pd.DataFrame(X, columns=feature_names)\\\\n\\\\n# Add target column to the DataFrame\\\\niris_df['species'] = pd.Categorical.from_codes(iris_data.target, iris_data.target_names)\\\\n\\\\n# Display basic information about the dataset\\\\niris_info = iris_df.info()\\\\n\\\\n# Display basic statistics about the dataset\\\\niris_description = iris_df.describe()\\\\n\\\\n# Check for missing values\\\\nmissing_values = iris_df.isnull().sum()\\\\n\\\\n# Distinguish column types\\\\nnumerical_cols = iris_df.select_dtypes(include=[np.number]).columns.tolist()\\\\ncategorical_cols = iris_df.select_dtypes(include=['category']).columns.tolist()\\\\n\\\\n# Display the first few rows of the DataFrame\\\\nhead = iris_df.head()\\\\n\\\\n# Output the results\\\\n(iris_info, iris_description, missing_values, numerical_cols, categorical_cols, head)\\\",\\n \\\"result\\\": \\\"a successful run\\\",\\n \\\"is_success\\\": true,\\n \\\"is_finished\\\": true\\n },\\n {\\n \\\"task_id\\\": \\\"3\\\",\\n \\\"dependent_task_ids\\\": [\\n \\\"2\\\"\\n ],\\n \\\"instruction\\\": \\\"Create a plot visualizing the Iris dataset.\\\",\\n \\\"task_type\\\": \\\"other\\\",\\n \\\"code\\\": \\\"\\\",\\n \\\"result\\\": \\\"\\\",\\n \\\"is_success\\\": false,\\n \\\"is_finished\\\": false\\n }\\n]\\n## Current Task\\n{\\\"task_id\\\":\\\"3\\\",\\\"dependent_task_ids\\\":[\\\"2\\\"],\\\"instruction\\\":\\\"Create a plot visualizing the Iris dataset.\\\",\\\"task_type\\\":\\\"other\\\",\\\"code\\\":\\\"\\\",\\\"result\\\":\\\"\\\",\\\"is_success\\\":false,\\\"is_finished\\\":false}\\n\"}, {\"role\": \"user\", \"content\": \"\\n# Instruction\\nWrite complete code for 'Current Task'. And avoid duplicating code from finished tasks, such as repeated import of packages, reading data, etc.\\nSpecifically, \\n\\n# Capabilities\\n- You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python Class.\\n- You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..\\n\\n# Available Tools (can be empty):\\nEach Class tool is described in JSON format. When you call a tool, import the tool first.\\n{}\\n\\n# Constraints:\\n- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.\\n- Always prioritize using pre-defined tools for the same functionality.\\n\"}]": {
+ "code": "import matplotlib.pyplot as plt\nimport seaborn as sns\n\n# Set the style of seaborn\nsns.set(style='whitegrid')\n\n# Create a pairplot to visualize the relationships between the features\npairplot = sns.pairplot(iris_df, hue='species')\nplt.show()"
+ },
+ "[{\"role\": \"user\", \"content\": \"\\n# Background\\nAs a data scientist, you need to help user to achieve their goal [This is a titanic passenger survival dataset, your goal is to predict passenger survival outcome. The target column is Survived. Perform data analysis, data preprocessing, feature engineering, and modeling to predict the target. Report accuracy on the eval data. Train data path: 'tests/data/ml_datasets/titanic/split_train.csv', eval data path: 'tests/data/ml_datasets/titanic/split_eval.csv'.] step-by-step in an continuous Jupyter notebook.\\n\\n## Done Tasks\\n```python\\n\\n```end\\n\\n## Current Task\\nPerform exploratory data analysis on the train dataset to understand the features and target variable.\\n\\n# Latest Data Info\\nLatest data info after previous tasks:\\n\\n\\n# Task\\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Done Tasks', such as repeated import of packages, reading data, etc.\\nSpecifically, \\nThe current task is about exploratory data analysis, please note the following:\\n- Distinguish column types with `select_dtypes` for tailored analysis and visualization, such as correlation.\\n- Remember to `import numpy as np` before using Numpy functions.\\n\\n\\n# Output Example:\\nwhen current task is \\\"train a lightgbm model on training data\\\", the code can be like:\\n```python\\n# Step 1: check data type and convert to numeric\\nobj_cols = train.select_dtypes(include='object').columns.tolist()\\n\\nfor col in obj_cols:\\n encoder = LabelEncoder()\\n train[col] = encoder.fit_transform(train[col].unique().tolist() + ['unknown'])\\n test[col] = test[col].apply(lambda x: x if x in encoder.classes_ else 'unknown')\\n test[col] = encoder.transform(test[col])\\n\\n# Step 2: train lightgbm model\\nmodel = LGBMClassifier()\\nmodel.fit(train, y_train)\\n```end\\n\\n# Constraints:\\n- Ensure the output new code is executable in the same Jupyter notebook with previous tasks code have been executed.\\n\"}]": {
+ "code": "# Perform exploratory data analysis on the train dataset\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n\n# Read the train dataset\ntrain_data = pd.read_csv('tests/data/ml_datasets/titanic/split_train.csv')\n\n# Display the first few rows of the dataset\ndisplay(train_data.head())\n\n# Summary statistics for numerical features\nprint(train_data.describe())\n\n# Summary statistics for categorical features\nprint(train_data.describe(include=['O']))\n\n# Check for missing values\nprint(train_data.isnull().sum())\n\n# Distribution of the target variable\nsns.countplot(x='Survived', data=train_data)\nplt.title('Distribution of Survival on the Titanic')\nplt.show()\n\n# Correlation matrix for numerical features\nnumerical_features = train_data.select_dtypes(include=[np.number])\ncorrelation_matrix = numerical_features.corr()\nplt.figure(figsize=(10, 8))\nsns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', center=0)\nplt.title('Correlation Matrix for Numerical Features')\nplt.show()\n\n# Pairplot for selected features\nselected_features = ['Survived', 'Pclass', 'Age', 'SibSp', 'Parch', 'Fare']\nsns.pairplot(train_data[selected_features], hue='Survived')\nplt.show()\n\n# Boxplot for categorical features vs Survived\nfor column in train_data.select_dtypes(include=['O']).columns:\n if column != 'Survived':\n plt.figure(figsize=(10, 5))\n sns.boxplot(x='Survived', y=column, data=train_data)\n plt.title(f'Survived vs {column}')\n plt.show()\n"
},
"[{\"role\": \"system\", \"content\": \"You are an AI Python assistant. You will be given your previous implementation code of a task, runtime error results, and a hint to change the implementation appropriately. Write your full implementation \"}, {\"role\": \"user\", \"content\": \"\\nHere is an example for you.\\n\\nExample 1:\\n[previous impl]:\\n```python\\ndef add(a: int, b: int) -> int:\\n \\\"\\\"\\\"\\n Given integers a and b, return the total value of a and b.\\n \\\"\\\"\\\"\\n return a - b\\n```\\n\\n[runtime Error]:\\nTested passed:\\n\\nTests failed:\\nassert add(1, 2) == 3 # output: -1\\nassert add(1, 2) == 4 # output: -1\\n\\n[reflection on previous impl]:\\nThe implementation failed the test cases where the input integers are 1 and 2. The issue arises because the code does not add the two integers together, but instead subtracts the second integer from the first. To fix this issue, we should change the operator from `-` to `+` in the return statement. This will ensure that the function returns the correct output for the given input.\\n\\n[improved impl]:\\n```python\\ndef add(a: int, b: int) -> int:\\n \\\"\\\"\\\"\\n Given integers a and b, return the total value of a and b.\\n \\\"\\\"\\\"\\n return a + b\\n```\\n\\n[context]\\nSolve the problem in Python:\\ndef sort_array(arr):\\n \\\"\\\"\\\"\\n In this Kata, you have to sort an array of non-negative integers according to\\n number of ones in their binary representation in ascending order.\\n For similar number of ones, sort based on decimal value.\\n\\n It must be implemented like this:\\n >>> sort_array([1, 5, 2, 3, 4]) == [1, 2, 3, 4, 5]\\n >>> sort_array([-2, -3, -4, -5, -6]) == [-6, -5, -4, -3, -2]\\n >>> sort_array([1, 0, 2, 3, 4]) [0, 1, 2, 3, 4]\\n \\\"\\\"\\\"\\n\\n\\n[previous impl]\\n\\ndef sort_array(arr):\\n # Helper function to count the number of ones in the binary representation\\n def count_ones(n):\\n return bin(n).count('1')\\n \\n # Sort the array using a custom key function\\n # The key function returns a tuple (number of ones, value) for each element\\n # This ensures that if two elements have the same number of ones, they are sorted by their value\\n sorted_arr = sorted(arr, key=lambda x: (count_ones(x), x))\\n \\n return sorted_arr\\n```\\n\\n[runtime Error]\\n[user: Tested passed:\\n\\nTests failed:\\nassert sort_array([1, 5, 2, 3, 4]) == [1, 2, 3, 4, 5] # output: [1, 2, 4, 3, 5]\\n]\\n\\nAnalysis the error step by step, provide me improve method and code. Remember to follow [context] requirement. Don't forget write code for steps behind the error step.\\n[reflection on previous impl]:\\nxxx\\n\"}]": {
"reflection": "The implementation failed the test case where the input array is [1, 5, 2, 3, 4]. The issue arises because the code does not handle the sorting of elements with the same number of ones in their binary representation correctly. According to the context, for similar number of ones, the elements should be sorted based on their decimal value in ascending order. However, the output [1, 2, 4, 3, 5] shows that 3 and 4 are not in the correct order, indicating that the sorting by decimal value is not functioning as intended. To fix this issue, we should ensure that the sorting is stable, so that when two elements have the same number of ones, they maintain their relative order if their decimal values are already in ascending order.",
"improved_impl": "def sort_array(arr):\n # Helper function to count the number of ones in the binary representation\n def count_ones(n):\n return bin(n).count('1')\n \n # Sort the array using a custom key function\n # The key function returns a tuple (number of ones, value) for each element\n # This ensures that if two elements have the same number of ones, they are sorted by their value\n # We use a stable sorting algorithm to maintain the relative order of elements with the same number of ones\n sorted_arr = sorted(arr, key=lambda x: (count_ones(x), x), reverse=True)\n sorted_arr = sorted(sorted_arr, key=count_ones)\n \n return sorted_arr\n"
},
- "\n## context\n\n\n-----\n\n## format example\n[CONTENT]\n{\n \"invoice\": \"False\"\n}\n[/CONTENT]\n\n## nodes: \": # \"\n- invoice: # if it's a invoice file, return True else False\n\n\n## constraint\nLanguage: Please use the same language as Human INPUT.\nFormat: output wrapped inside [CONTENT][/CONTENT] like format example, nothing else.\n\n## action\nFollow instructions of nodes, generate output and make sure it follows the format example.\n": "[CONTENT]\n{\n \"invoice\": \"True\"\n}\n[/CONTENT]"
+ "\n## context\n\n\n-----\n\n## format example\n[CONTENT]\n{\n \"invoice\": \"False\"\n}\n[/CONTENT]\n\n## nodes: \": # \"\n- invoice: # if it's a invoice file, return True else False\n\n\n## constraint\nLanguage: Please use the same language as Human INPUT.\nFormat: output wrapped inside [CONTENT][/CONTENT] like format example, nothing else.\n\n## action\nFollow instructions of nodes, generate output and make sure it follows the format example.\n": "[CONTENT]\n{\n \"invoice\": \"True\"\n}\n[/CONTENT]",
+ "\n## context\n\n### Legacy Content\n\n## Implementation approach\n\nWe will create a Python-based number guessing game with a simple command-line interface. For the user interface, we will use the built-in 'input' and 'print' functions for interaction. The random library will be used for generating random numbers. We will structure the code to be modular and easily extendable, separating the game logic from the user interface.\n\n## File list\n\n- main.py\n- game.py\n- ui.py\n\n## Data structures and interfaces\n\n\nclassDiagram\n class Game {\n -int secret_number\n -int min_range\n -int max_range\n -list attempts\n +__init__(difficulty: str)\n +start_game()\n +check_guess(guess: int) str\n +get_attempts() int\n +get_history() list\n }\n class UI {\n +start()\n +display_message(message: str)\n +get_user_input(prompt: str) str\n +show_attempts(attempts: int)\n +show_history(history: list)\n +select_difficulty() str\n }\n class Main {\n +main()\n }\n Main --> UI\n UI --> Game\n\n\n## Program call flow\n\n\nsequenceDiagram\n participant M as Main\n participant UI as UI\n participant G as Game\n M->>UI: start()\n UI->>UI: select_difficulty()\n UI-->>G: __init__(difficulty)\n G->>G: start_game()\n loop Game Loop\n UI->>UI: get_user_input(\"Enter your guess:\")\n UI-->>G: check_guess(guess)\n G->>UI: display_message(feedback)\n G->>UI: show_attempts(attempts)\n G->>UI: show_history(history)\n end\n G->>UI: display_message(\"Correct! Game over.\")\n UI->>M: main() # Game session ends\n\n\n## Anything UNCLEAR\n\nThe requirement analysis suggests the need for a clean and intuitive interface. Since we are using a command-line interface, we need to ensure that the text-based UI is as user-friendly as possible. Further clarification on whether a graphical user interface (GUI) is expected in the future would be helpful for planning the extendability of the game.\n\n### New Requirements\n{'Language': 'en_us', 'Programming Language': 'Python', 'Refined Requirements': 'Adding graphical interface functionality to enhance the user experience in the number-guessing game.', 'Project Name': 'number_guessing_game', 'Refined Product Goals': ['Ensure a user-friendly interface for the game with the new graphical interface', 'Provide a challenging yet enjoyable game experience with visual enhancements', 'Design the game to be easily extendable for future features, including graphical elements'], 'Refined User Stories': ['As a player, I want to interact with a graphical interface to guess numbers and receive visual feedback on my guesses', 'As a player, I want to easily select the difficulty level through the graphical interface', 'As a player, I want to visually track my previous guesses and the number of attempts in the graphical interface', 'As a player, I want to be congratulated with a visually appealing message when I guess the number correctly'], 'Competitive Analysis': ['Guess The Number Game A: Basic text interface, no difficulty levels', 'Number Master B: Has difficulty levels, but cluttered interface', 'Quick Guess C: Sleek design, but lacks performance tracking', 'NumGuess D: Good performance tracking, but not mobile-friendly', 'GuessIt E: Mobile-friendly, but too many ads', 'Perfect Guess F: Offers hints, but the hints are not very helpful', 'SmartGuesser G: Has a learning mode, but lacks a competitive edge', 'Graphical Guess H: Graphical interface, but poor user experience due to complex design'], 'Competitive Quadrant Chart': 'quadrantChart\\n title \"User Engagement and Game Complexity with Graphical Interface\"\\n x-axis \"Low Complexity\" --> \"High Complexity\"\\n y-axis \"Low Engagement\" --> \"High Engagement\"\\n quadrant-1 \"Too Simple\"\\n quadrant-2 \"Niche Appeal\"\\n quadrant-3 \"Complex & Unengaging\"\\n quadrant-4 \"Sweet Spot\"\\n \"Guess The Number Game A\": [0.2, 0.4]\\n \"Number Master B\": [0.5, 0.3]\\n \"Quick Guess C\": [0.6, 0.7]\\n \"NumGuess D\": [0.4, 0.6]\\n \"GuessIt E\": [0.7, 0.5]\\n \"Perfect Guess F\": [0.6, 0.4]\\n \"SmartGuesser G\": [0.8, 0.6]\\n \"Graphical Guess H\": [0.7, 0.3]\\n \"Our Target Product\": [0.5, 0.9]', 'Refined Requirement Analysis': ['The game should maintain its simplicity while integrating a graphical interface for enhanced engagement.', 'Immediate visual feedback is crucial for user satisfaction in the graphical interface.', 'The interface must be intuitive, allowing for easy navigation and selection of game options.', \"The graphical design should be clean and not detract from the game's core guessing mechanic.\"], 'Refined Requirement Pool': [['P0', 'Implement a graphical user interface (GUI) to replace the command-line interaction'], ['P0', 'Design a user interface that displays the game status, results, and feedback clearly with graphical elements'], ['P1', 'Incorporate interactive elements for selecting difficulty levels'], ['P1', \"Visualize the history of the player's guesses and the number of attempts within the game session\"], ['P2', 'Create animations for correct or incorrect guesses to enhance user feedback'], ['P2', 'Ensure the GUI is responsive and compatible with various screen sizes'], ['P2', \"Store and show the history of the player's guesses during a game session\"]], 'UI Design draft': 'The UI will feature a modern and minimalist design with a graphical number input field, a submit button with animations, and a dedicated area for visual feedback. It will include interactive elements to select the difficulty level and a visual display for the number of attempts and history of past guesses.', 'Anything UNCLEAR': ''}\n\n\n-----\n\n## format example\n[CONTENT]\n{\n \"Refined Implementation Approach\": \"We will refine ...\",\n \"Refined File list\": [\n \"main.py\",\n \"game.py\",\n \"new_feature.py\"\n ],\n \"Refined Data structures and interfaces\": \"\\nclassDiagram\\n class Main {\\n -SearchEngine search_engine\\n +main() str\\n }\\n class SearchEngine {\\n -Index index\\n -Ranking ranking\\n -Summary summary\\n +search(query: str) str\\n }\\n class Index {\\n -KnowledgeBase knowledge_base\\n +create_index(data: dict)\\n +query_index(query: str) list\\n }\\n class Ranking {\\n +rank_results(results: list) list\\n }\\n class Summary {\\n +summarize_results(results: list) str\\n }\\n class KnowledgeBase {\\n +update(data: dict)\\n +fetch_data(query: str) dict\\n }\\n Main --> SearchEngine\\n SearchEngine --> Index\\n SearchEngine --> Ranking\\n SearchEngine --> Summary\\n Index --> KnowledgeBase\\n\",\n \"Refined Program call flow\": \"\\nsequenceDiagram\\n participant M as Main\\n participant SE as SearchEngine\\n participant I as Index\\n participant R as Ranking\\n participant S as Summary\\n participant KB as KnowledgeBase\\n M->>SE: search(query)\\n SE->>I: query_index(query)\\n I->>KB: fetch_data(query)\\n KB-->>I: return data\\n I-->>SE: return results\\n SE->>R: rank_results(results)\\n R-->>SE: return ranked_results\\n SE->>S: summarize_results(ranked_results)\\n S-->>SE: return summary\\n SE-->>M: return summary\\n\",\n \"Anything UNCLEAR\": \"Clarification needed on third-party API integration, ...\"\n}\n[/CONTENT]\n\n## nodes: \": # \"\n- Refined Implementation Approach: # Update and extend the original implementation approach to reflect the evolving challenges and requirements due to incremental development. Outline the steps involved in the implementation process with the detailed strategies.\n- Refined File list: typing.List[str] # Update and expand the original file list including only relative paths. Up to 2 files can be added.Ensure that the refined file list reflects the evolving structure of the project.\n- Refined Data structures and interfaces: # Update and extend the existing mermaid classDiagram code syntax to incorporate new classes, methods (including __init__), and functions with precise type annotations. Delineate additional relationships between classes, ensuring clarity and adherence to PEP8 standards.Retain content that is not related to incremental development but important for consistency and clarity.\n- Refined Program call flow: # Extend the existing sequenceDiagram code syntax with detailed information, accurately covering theCRUD and initialization of each object. Ensure correct syntax usage and reflect the incremental changes introducedin the classes and API defined above. Retain content that is not related to incremental development but important for consistency and clarity.\n- Anything UNCLEAR: # Mention unclear project aspects, then try to clarify it.\n\n\n## constraint\nLanguage: Please use the same language as Human INPUT.\nFormat: output wrapped inside [CONTENT][/CONTENT] like format example, nothing else.\n\n## action\nFollow instructions of nodes, generate output and make sure it follows the format example.\n": "[CONTENT]\n{\n \"Refined Implementation Approach\": \"To accommodate the new graphical interface requirements, we will integrate the Tkinter library for Python to develop the GUI components. The implementation will involve designing the layout, creating interactive widgets for user input, and displaying visual feedback. We will also implement event-driven programming to handle user actions. The game logic will be encapsulated within the Game class, and the UI class will be responsible for rendering the game state graphically.\",\n \"Refined File list\": [\n \"main.py\",\n \"game.py\",\n \"ui.py\",\n \"gui.py\"\n ],\n \"Refined Data structures and interfaces\": \"\\nclassDiagram\\n class Game {\\n -int secret_number\\n -int min_range\\n -int max_range\\n -list attempts\\n +__init__(difficulty: str)\\n +start_game()\\n +check_guess(guess: int) str\\n +get_attempts() int\\n +get_history() list\\n }\\n class UI {\\n +start()\\n +display_message(message: str)\\n +get_user_input(prompt: str) str\\n +show_attempts(attempts: int)\\n +show_history(history: list)\\n +select_difficulty() str\\n }\\n class GUI {\\n +__init__(game: Game)\\n +render_main_window()\\n +update_feedback(message: str)\\n +update_attempts(attempts: int)\\n +update_history(history: list)\\n +get_difficulty_selection() str\\n +get_guess_from_user() int\\n }\\n class Main {\\n +main()\\n }\\n Main --> UI\\n UI --> Game\\n UI --> GUI\\n GUI --> Game\\n\",\n \"Refined Program call flow\": \"\\nsequenceDiagram\\n participant M as Main\\n participant UI as UI\\n participant G as Game\\n participant GUI as GUI\\n M->>UI: start()\\n UI->>GUI: render_main_window()\\n GUI->>GUI: get_difficulty_selection()\\n GUI-->>G: __init__(difficulty)\\n G->>G: start_game()\\n loop Game Loop\\n GUI->>GUI: get_guess_from_user()\\n GUI-->>G: check_guess(guess)\\n G->>GUI: update_feedback(feedback)\\n G->>GUI: update_attempts(attempts)\\n G->>GUI: update_history(history)\\n end\\n G->>GUI: update_feedback(\\\"Correct! Game over.\\\")\\n GUI->>M: main() # Game session ends\\n\",\n \"Anything UNCLEAR\": \"Clarification needed on whether the GUI should support touch input for devices with touch screens, and if so, what gestures need to be supported.\"\n}\n[/CONTENT]",
+ "\n## context\n\n### Legacy Content\n\n## Required Python packages\n\n- random==2.2.1\n\n## Required Other language third-party packages\n\n- No third-party dependencies required\n\n## Logic Analysis\n\n- ['game.py', 'Contains Game class with methods __init__, start_game, check_guess, get_attempts, get_history and uses random library for generating secret_number']\n- ['ui.py', 'Contains UI class with methods start, display_message, get_user_input, show_attempts, show_history, select_difficulty and interacts with Game class']\n- ['main.py', 'Contains Main class with method main that initializes UI class and starts the game loop']\n\n## Task list\n\n- game.py\n- ui.py\n- main.py\n\n## Full API spec\n\n\n\n## Shared Knowledge\n\n`game.py` contains the core game logic and is used by `ui.py` to interact with the user. `main.py` serves as the entry point to start the game.\n\n## Anything UNCLEAR\n\nThe requirement analysis suggests the need for a clean and intuitive interface. Since we are using a command-line interface, we need to ensure that the text-based UI is as user-friendly as possible. Further clarification on whether a graphical user interface (GUI) is expected in the future would be helpful for planning the extendability of the game.\n\n### New Requirements\n{'Refined Implementation Approach': 'To accommodate the new graphical user interface (GUI) requirements, we will leverage the Tkinter library, which is included with Python and supports the creation of a user-friendly GUI. The game logic will remain in Python, with Tkinter handling the rendering of the interface. We will ensure that the GUI is responsive and provides immediate visual feedback. The main game loop will be event-driven, responding to user inputs such as button clicks and difficulty selection.', 'Refined File list': ['main.py', 'game.py', 'ui.py', 'gui.py'], 'Refined Data structures and interfaces': '\\nclassDiagram\\n class Game {\\n -int secret_number\\n -int min_range\\n -int max_range\\n -list attempts\\n +__init__(difficulty: str)\\n +start_game()\\n +check_guess(guess: int) str\\n +get_attempts() int\\n +get_history() list\\n }\\n class UI {\\n +start()\\n +display_message(message: str)\\n +get_user_input(prompt: str) str\\n +show_attempts(attempts: int)\\n +show_history(history: list)\\n +select_difficulty() str\\n }\\n class GUI {\\n +__init__()\\n +setup_window()\\n +bind_events()\\n +update_feedback(message: str)\\n +update_attempts(attempts: int)\\n +update_history(history: list)\\n +show_difficulty_selector()\\n +animate_guess_result(correct: bool)\\n }\\n class Main {\\n +main()\\n }\\n Main --> UI\\n UI --> Game\\n UI --> GUI\\n GUI --> Game\\n', 'Refined Program call flow': '\\nsequenceDiagram\\n participant M as Main\\n participant UI as UI\\n participant G as Game\\n participant GU as GUI\\n M->>UI: start()\\n UI->>GU: setup_window()\\n GU->>GU: bind_events()\\n GU->>UI: select_difficulty()\\n UI-->>G: __init__(difficulty)\\n G->>G: start_game()\\n loop Game Loop\\n GU->>GU: show_difficulty_selector()\\n GU->>UI: get_user_input(\"Enter your guess:\")\\n UI-->>G: check_guess(guess)\\n G->>GU: update_feedback(feedback)\\n G->>GU: update_attempts(attempts)\\n G->>GU: update_history(history)\\n GU->>GU: animate_guess_result(correct)\\n end\\n G->>GU: update_feedback(\"Correct! Game over.\")\\n GU->>M: main() # Game session ends\\n', 'Anything UNCLEAR': ''}\n\n\n-----\n\n## format example\n[CONTENT]\n{\n \"Required Python packages\": [\n \"flask==1.1.2\",\n \"bcrypt==3.2.0\"\n ],\n \"Required Other language third-party packages\": [\n \"No third-party dependencies required\"\n ],\n \"Refined Logic Analysis\": [\n [\n \"game.py\",\n \"Contains Game class and ... functions\"\n ],\n [\n \"main.py\",\n \"Contains main function, from game import Game\"\n ],\n [\n \"new_feature.py\",\n \"Introduces NewFeature class and related functions\"\n ],\n [\n \"utils.py\",\n \"Modifies existing utility functions to support incremental changes\"\n ]\n ],\n \"Refined Task list\": [\n \"new_feature.py\",\n \"utils\",\n \"game.py\",\n \"main.py\"\n ],\n \"Full API spec\": \"openapi: 3.0.0 ...\",\n \"Refined Shared Knowledge\": \"`new_module.py` enhances shared utility functions for improved code reusability and collaboration.\",\n \"Anything UNCLEAR\": \"Clarification needed on how to start and initialize third-party libraries.\"\n}\n[/CONTENT]\n\n## nodes: \": # \"\n- Required Python packages: typing.List[str] # Provide required Python packages in requirements.txt format.\n- Required Other language third-party packages: typing.List[str] # List down the required packages for languages other than Python.\n- Refined Logic Analysis: typing.List[typing.List[str]] # Review and refine the logic analysis by merging the Legacy Content and Incremental Content. Provide a comprehensive list of files with classes/methods/functions to be implemented or modified incrementally. Include dependency analysis, consider potential impacts on existing code, and document necessary imports.\n- Refined Task list: typing.List[str] # Review and refine the combined task list after the merger of Legacy Content and Incremental Content, and consistent with Refined File List. Ensure that tasks are organized in a logical and prioritized order, considering dependencies for a streamlined and efficient development process. \n- Full API spec: # Describe all APIs using OpenAPI 3.0 spec that may be used by both frontend and backend. If front-end and back-end communication is not required, leave it blank.\n- Refined Shared Knowledge: # Update and expand shared knowledge to reflect any new elements introduced. This includes common utility functions, configuration variables for team collaboration. Retain content that is not related to incremental development but important for consistency and clarity.\n- Anything UNCLEAR: # Mention any unclear aspects in the project management context and try to clarify them.\n\n\n## constraint\nLanguage: Please use the same language as Human INPUT.\nFormat: output wrapped inside [CONTENT][/CONTENT] like format example, nothing else.\n\n## action\nFollow instructions of nodes, generate output and make sure it follows the format example.\n": "[CONTENT]\n{\n \"Required Python packages\": [\n \"random==2.2.1\",\n \"tkinter==8.6\"\n ],\n \"Required Other language third-party packages\": [\n \"No third-party dependencies required\"\n ],\n \"Refined Logic Analysis\": [\n [\n \"game.py\",\n \"Contains Game class with methods __init__, start_game, check_guess, get_attempts, get_history and uses random library for generating secret_number\"\n ],\n [\n \"ui.py\",\n \"Contains UI class with methods start, display_message, get_user_input, show_attempts, show_history, select_difficulty and interacts with Game class\"\n ],\n [\n \"gui.py\",\n \"Contains GUI class with methods __init__, setup_window, bind_events, update_feedback, update_attempts, update_history, show_difficulty_selector, animate_guess_result and interacts with Game class\"\n ],\n [\n \"main.py\",\n \"Contains Main class with method main that initializes UI class and starts the game loop\"\n ]\n ],\n \"Refined Task list\": [\n \"game.py\",\n \"ui.py\",\n \"gui.py\",\n \"main.py\"\n ],\n \"Full API spec\": \"\",\n \"Refined Shared Knowledge\": \"`game.py` contains the core game logic and is used by `ui.py` to interact with the user. `main.py` serves as the entry point to start the game. `gui.py` will handle the graphical user interface using the Tkinter library, providing a responsive and user-friendly interface for the game.\",\n \"Anything UNCLEAR\": \"\"\n}\n[/CONTENT]",
+ "\nNOTICE\nRole: You are a professional engineer; The main goal is to complete incremental development by combining legacy code and plan and Incremental Change, ensuring the integration of new features.\n\n# Context\n## User New Requirements\n\n\n## Code Plan And Change\n{\"Development Plan\": [\"Develop the GUI using Tkinter to replace the command-line interface. Start by setting up the main window and event handling. Then, add widgets for displaying the game status, results, and feedback. Implement interactive elements for difficulty selection and visualize the guess history. Finally, create animations for guess feedback and ensure responsiveness across different screen sizes.\", \"Modify the main.py to initialize the GUI and start the event-driven game loop. Ensure that the GUI is the primary interface for user interaction.\"], \"Incremental Change\": [\"```diff\\nclass GUI:\\n- pass\\n+ def __init__(self):\\n+ self.setup_window()\\n+\\n+ def setup_window(self):\\n+ # Initialize the main window using Tkinter\\n+ pass\\n+\\n+ def bind_events(self):\\n+ # Bind button clicks and other events\\n+ pass\\n+\\n+ def update_feedback(self, message: str):\\n+ # Update the feedback label with the given message\\n+ pass\\n+\\n+ def update_attempts(self, attempts: int):\\n+ # Update the attempts label with the number of attempts\\n+ pass\\n+\\n+ def update_history(self, history: list):\\n+ # Update the history view with the list of past guesses\\n+ pass\\n+\\n+ def show_difficulty_selector(self):\\n+ # Show buttons or a dropdown for difficulty selection\\n+ pass\\n+\\n+ def animate_guess_result(self, correct: bool):\\n+ # Trigger an animation for correct or incorrect guesses\\n+ pass\\n```\", \"```diff\\nclass Main:\\n def main(self):\\n- user_interface = UI()\\n- user_interface.start()\\n+ graphical_user_interface = GUI()\\n+ graphical_user_interface.setup_window()\\n+ graphical_user_interface.bind_events()\\n+ # Start the Tkinter main loop\\n+ pass\\n\\n if __name__ == \\\"__main__\\\":\\n main_instance = Main()\\n main_instance.main()\\n```\\n\\n3. Plan for ui.py: Refactor ui.py to work with the new GUI class. Remove command-line interactions and delegate display and input tasks to the GUI.\\n```python\\nclass UI:\\n- def display_message(self, message: str):\\n- print(message)\\n+\\n+ def display_message(self, message: str):\\n+ # This method will now pass the message to the GUI to display\\n+ pass\\n\\n- def get_user_input(self, prompt: str) -> str:\\n- return input(prompt)\\n+\\n+ def get_user_input(self, prompt: str) -> str:\\n+ # This method will now trigger the GUI to get user input\\n+ pass\\n\\n- def show_attempts(self, attempts: int):\\n- print(f\\\"Number of attempts: {attempts}\\\")\\n+\\n+ def show_attempts(self, attempts: int):\\n+ # This method will now update the GUI with the number of attempts\\n+ pass\\n\\n- def show_history(self, history: list):\\n- print(\\\"Guess history:\\\")\\n- for guess in history:\\n- print(guess)\\n+\\n+ def show_history(self, history: list):\\n+ # This method will now update the GUI with the guess history\\n+ pass\\n```\\n\\n4. Plan for game.py: Ensure game.py remains mostly unchanged as it contains the core game logic. However, make minor adjustments if necessary to integrate with the new GUI.\\n```python\\nclass Game:\\n # No changes required for now\\n```\\n\"]}\n\n## Design\n{\"Refined Implementation Approach\": \"To accommodate the new graphical user interface (GUI) requirements, we will leverage the Tkinter library, which is included with Python and supports the creation of a user-friendly GUI. The game logic will remain in Python, with Tkinter handling the rendering of the interface. We will ensure that the GUI is responsive and provides immediate visual feedback. The main game loop will be event-driven, responding to user inputs such as button clicks and difficulty selection.\", \"Refined File list\": [\"main.py\", \"game.py\", \"ui.py\", \"gui.py\"], \"Refined Data structures and interfaces\": \"\\nclassDiagram\\n class Game {\\n -int secret_number\\n -int min_range\\n -int max_range\\n -list attempts\\n +__init__(difficulty: str)\\n +start_game()\\n +check_guess(guess: int) str\\n +get_attempts() int\\n +get_history() list\\n }\\n class UI {\\n +start()\\n +display_message(message: str)\\n +get_user_input(prompt: str) str\\n +show_attempts(attempts: int)\\n +show_history(history: list)\\n +select_difficulty() str\\n }\\n class GUI {\\n +__init__()\\n +setup_window()\\n +bind_events()\\n +update_feedback(message: str)\\n +update_attempts(attempts: int)\\n +update_history(history: list)\\n +show_difficulty_selector()\\n +animate_guess_result(correct: bool)\\n }\\n class Main {\\n +main()\\n }\\n Main --> UI\\n UI --> Game\\n UI --> GUI\\n GUI --> Game\\n\", \"Refined Program call flow\": \"\\nsequenceDiagram\\n participant M as Main\\n participant UI as UI\\n participant G as Game\\n participant GU as GUI\\n M->>UI: start()\\n UI->>GU: setup_window()\\n GU->>GU: bind_events()\\n GU->>UI: select_difficulty()\\n UI-->>G: __init__(difficulty)\\n G->>G: start_game()\\n loop Game Loop\\n GU->>GU: show_difficulty_selector()\\n GU->>UI: get_user_input(\\\"Enter your guess:\\\")\\n UI-->>G: check_guess(guess)\\n G->>GU: update_feedback(feedback)\\n G->>GU: update_attempts(attempts)\\n G->>GU: update_history(history)\\n GU->>GU: animate_guess_result(correct)\\n end\\n G->>GU: update_feedback(\\\"Correct! Game over.\\\")\\n GU->>M: main() # Game session ends\\n\", \"Anything UNCLEAR\": \"\"}\n\n## Task\n{\"Required Python packages\": [\"random==2.2.1\", \"Tkinter==8.6\"], \"Required Other language third-party packages\": [\"No third-party dependencies required\"], \"Refined Logic Analysis\": [[\"game.py\", \"Contains Game class with methods __init__, start_game, check_guess, get_attempts, get_history and uses random library for generating secret_number\"], [\"ui.py\", \"Contains UI class with methods start, display_message, get_user_input, show_attempts, show_history, select_difficulty and interacts with Game class\"], [\"gui.py\", \"Contains GUI class with methods __init__, setup_window, bind_events, update_feedback, update_attempts, update_history, show_difficulty_selector, animate_guess_result and interacts with Game class for GUI rendering\"], [\"main.py\", \"Contains Main class with method main that initializes UI class and starts the event-driven game loop\"]], \"Refined Task list\": [\"game.py\", \"ui.py\", \"gui.py\", \"main.py\"], \"Full API spec\": \"\", \"Refined Shared Knowledge\": \"`game.py` contains the core game logic and is used by `ui.py` to interact with the user. `main.py` serves as the entry point to start the game. `gui.py` is introduced to handle the graphical user interface using Tkinter, which will interact with both `game.py` and `ui.py` for a responsive and user-friendly experience.\", \"Anything UNCLEAR\": \"\"}\n\n## Legacy Code\n```Code\n-----Now, game.py to be rewritten\n```game.py\n\nimport random\n\nclass Game:\n def __init__(self, difficulty: str = 'medium'):\n self.min_range, self.max_range = self._set_difficulty(difficulty)\n self.secret_number = random.randint(self.min_range, self.max_range)\n self.attempts = []\n\n def _set_difficulty(self, difficulty: str):\n difficulties = {\n 'easy': (1, 10),\n 'medium': (1, 100),\n 'hard': (1, 1000)\n }\n return difficulties.get(difficulty, (1, 100))\n\n def start_game(self):\n self.secret_number = random.randint(self.min_range, self.max_range)\n self.attempts = []\n\n def check_guess(self, guess: int) -> str:\n self.attempts.append(guess)\n if guess < self.secret_number:\n return \"It's higher.\"\n elif guess > self.secret_number:\n return \"It's lower.\"\n else:\n return \"Correct! Game over.\"\n\n def get_attempts(self) -> int:\n return len(self.attempts)\n\n def get_history(self) -> list:\n return self.attempts```\n=====\n```\n\n## Debug logs\n```text\n\n\n\n```\n\n## Bug Feedback logs\n```text\n\n```\n\n# Format example\n## Code: game.py\n```python\n## game.py\n...\n```\n\n# Instruction: Based on the context, follow \"Format example\", write or rewrite code.\n## Write/Rewrite Code: Only write one file game.py, write or rewrite complete code using triple quotes based on the following attentions and context.\n1. Only One file: do your best to implement THIS ONLY ONE FILE.\n2. COMPLETE CODE: Your code will be part of the entire project, so please implement complete, reliable, reusable code snippets.\n3. Set default value: If there is any setting, ALWAYS SET A DEFAULT VALUE, ALWAYS USE STRONG TYPE AND EXPLICIT VARIABLE. AVOID circular import.\n4. Follow design: YOU MUST FOLLOW \"Data structures and interfaces\". DONT CHANGE ANY DESIGN. Do not use public member functions that do not exist in your design.\n5. Follow Code Plan And Change: If there is any \"Incremental Change\" that is marked by the git diff format with '+' and '-' symbols, or Legacy Code files contain \"game.py to be rewritten\", you must merge it into the code file according to the \"Development Plan\". \n6. CAREFULLY CHECK THAT YOU DONT MISS ANY NECESSARY CLASS/FUNCTION IN THIS FILE.\n7. Before using a external variable/module, make sure you import it first.\n8. Write out EVERY CODE DETAIL, DON'T LEAVE TODO.\n9. Attention: Retain details that are not related to incremental development but are important for maintaining the consistency and clarity of the old code.\n": "```python\n## game.py\n\nimport random\n\nclass Game:\n def __init__(self, difficulty: str = 'medium'):\n self._min_range, self._max_range = self._set_difficulty(difficulty)\n self._secret_number = random.randint(self._min_range, self._max_range)\n self._attempts = []\n\n def _set_difficulty(self, difficulty: str):\n difficulties = {\n 'easy': (1, 10),\n 'medium': (1, 100),\n 'hard': (1, 1000)\n }\n return difficulties.get(difficulty, (1, 100))\n\n def start_game(self):\n self._secret_number = random.randint(self._min_range, self._max_range)\n self._attempts = []\n\n def check_guess(self, guess: int) -> str:\n self._attempts.append(guess)\n if guess < self._secret_number:\n return \"It's higher.\"\n elif guess > self._secret_number:\n return \"It's lower.\"\n else:\n return \"Correct! Game over.\"\n\n def get_attempts(self) -> int:\n return len(self._attempts)\n\n def get_history(self) -> list:\n return self._attempts\n```",
+ "\n# System\nRole: You are a professional software engineer, and your main task is to review and revise the code. You need to ensure that the code conforms to the google-style standards, is elegantly designed and modularized, easy to read and maintain.\nLanguage: Please use the same language as the user requirement, but the title and code should be still in English. For example, if the user speaks Chinese, the specific text of your answer should also be in Chinese.\nATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced \"Format example\".\n\n# Context\n## User New Requirements\nNone\n\n## Code Plan And Change\n\n def add(a, b):\n- return a + \n+ return a + b\n \n\n## System Design\n编写一个从a加b的函数,返回a+b\n\n## Task\n\n\n## Code Files\n\n\n\n## Code to be Reviewed: \n```Code\n\n def add(a, b):\n return a + \n \n```\n\n\n\n# Format example 1\n## Code Review: \n1. No, we should fix the logic of class A due to ...\n2. ...\n3. ...\n4. No, function B is not implemented, ...\n5. ...\n6. ...\n\n## Actions\n1. Fix the `handle_events` method to update the game state only if a move is successful.\n ```python\n def handle_events(self):\n for event in pygame.event.get():\n if event.type == pygame.QUIT:\n return False\n if event.type == pygame.KEYDOWN:\n moved = False\n if event.key == pygame.K_UP:\n moved = self.game.move('UP')\n elif event.key == pygame.K_DOWN:\n moved = self.game.move('DOWN')\n elif event.key == pygame.K_LEFT:\n moved = self.game.move('LEFT')\n elif event.key == pygame.K_RIGHT:\n moved = self.game.move('RIGHT')\n if moved:\n # Update the game state only if a move was successful\n self.render()\n return True\n ```\n2. Implement function B\n\n## Code Review Result\nLBTM\n\n# Format example 2\n## Code Review: \n1. Yes.\n2. Yes.\n3. Yes.\n4. Yes.\n5. Yes.\n6. Yes.\n\n## Actions\npass\n\n## Code Review Result\nLGTM\n\n\n\n# Instruction: Based on the actual code situation, follow one of the \"Format example\". Return only 1 file under review.\n\n## Code Review: Ordered List. Based on the \"Code to be Reviewed\", provide key, clear, concise, and specific answer. If any answer is no, explain how to fix it step by step.\n1. Is the code implemented as per the requirements? If not, how to achieve it? Analyse it step by step.\n2. Is the code logic completely correct? If there are errors, please indicate how to correct them.\n3. Does the existing code follow the \"Data structures and interfaces\"?\n4. Are all functions implemented? If there is no implementation, please indicate how to achieve it step by step.\n5. Have all necessary pre-dependencies been imported? If not, indicate which ones need to be imported\n6. Are methods from other files being reused correctly?\n\n## Actions: Ordered List. Things that should be done after CR, such as implementing class A and function B\n\n## Code Review Result: str. If the code doesn't have bugs, we don't need to rewrite it, so answer LGTM and stop. ONLY ANSWER LGTM/LBTM.\nLGTM/LBTM\n\n": "## Code Review:\n1. 是的,代码实现了按照要求从a加b的功能。\n2. 不完全正确,代码逻辑存在错误。在`add`函数中,`return`语句没有完整地返回a和b的和,缺少了变量b。\n3. 是的,现有代码遵循了\"数据结构和接口\"的原则。\n4. 所有函数都已实现,但`add`函数的实现不完整。\n5. 由于这是一个简单的加法函数,不需要导入额外的依赖。\n6. 代码中没有使用其他文件的方法。\n\n## Actions:\n1. 修正`add`函数,确保它可以正确返回a和b的和。\n ```python\n def add(a, b):\n return a + b\n ```\n\n## Code Review Result:\nLBTM",
+ "\n# System\nRole: You are a professional software engineer, and your main task is to review and revise the code. You need to ensure that the code conforms to the google-style standards, is elegantly designed and modularized, easy to read and maintain.\nLanguage: Please use the same language as the user requirement, but the title and code should be still in English. For example, if the user speaks Chinese, the specific text of your answer should also be in Chinese.\nATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced \"Format example\".\n\n# Context\n## User New Requirements\nNone\n\n## Code Plan And Change\n\n def add(a, b):\n- return a + \n+ return a + b\n \n\n## System Design\n编写一个从a加b的函数,返回a+b\n\n## Task\n\n\n## Code Files\n\n\n\n## Code to be Reviewed: \n```Code\n\n def add(a, b):\n return a + \n \n```\n\n## Code Review:\n1. 是的,代码实现了按照要求从a加b的功能。\n2. 不完全正确,代码逻辑存在错误。在`add`函数中,`return`语句没有完整地返回a和b的和,缺少了变量b。\n3. 是的,现有代码遵循了\"数据结构和接口\"的原则。\n4. 所有函数都已实现,但`add`函数的实现不完整。\n5. 由于这是一个简单的加法函数,不需要导入额外的依赖。\n6. 代码中没有使用其他文件的方法。\n\n## Actions:\n1. 修正`add`函数,确保它可以正确返回a和b的和。\n ```python\n def add(a, b):\n return a + b\n ```\n\n## Code Review Result:\nLBTM\n\n# Instruction: rewrite code based on the Code Review and Actions\n## Rewrite Code: CodeBlock. If it still has some bugs, rewrite with triple quotes. Do your utmost to optimize THIS SINGLE FILE. Return all completed codes and prohibit the return of unfinished codes.\n```Code\n## \n...\n```\n": "## 重写代码:代码块\n```python\ndef add(a, b):\n return a + b\n```",
+ "\n# System\nRole: You are a professional software engineer, and your main task is to review and revise the code. You need to ensure that the code conforms to the google-style standards, is elegantly designed and modularized, easy to read and maintain.\nLanguage: Please use the same language as the user requirement, but the title and code should be still in English. For example, if the user speaks Chinese, the specific text of your answer should also be in Chinese.\nATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced \"Format example\".\n\n# Context\n## User New Requirements\nNone\n\n## Code Plan And Change\n\n def add(a, b):\n- return a + \n+ return a + b\n \n\n## System Design\n编写一个从a加b的函数,返回a+b\n\n## Task\n\n\n## Code Files\n\n\n\n## Code to be Reviewed: \n```Code\ndef add(a, b):\n return a + b\n\n```\n\n\n\n# Format example 1\n## Code Review: \n1. No, we should fix the logic of class A due to ...\n2. ...\n3. ...\n4. No, function B is not implemented, ...\n5. ...\n6. ...\n\n## Actions\n1. Fix the `handle_events` method to update the game state only if a move is successful.\n ```python\n def handle_events(self):\n for event in pygame.event.get():\n if event.type == pygame.QUIT:\n return False\n if event.type == pygame.KEYDOWN:\n moved = False\n if event.key == pygame.K_UP:\n moved = self.game.move('UP')\n elif event.key == pygame.K_DOWN:\n moved = self.game.move('DOWN')\n elif event.key == pygame.K_LEFT:\n moved = self.game.move('LEFT')\n elif event.key == pygame.K_RIGHT:\n moved = self.game.move('RIGHT')\n if moved:\n # Update the game state only if a move was successful\n self.render()\n return True\n ```\n2. Implement function B\n\n## Code Review Result\nLBTM\n\n# Format example 2\n## Code Review: \n1. Yes.\n2. Yes.\n3. Yes.\n4. Yes.\n5. Yes.\n6. Yes.\n\n## Actions\npass\n\n## Code Review Result\nLGTM\n\n\n\n# Instruction: Based on the actual code situation, follow one of the \"Format example\". Return only 1 file under review.\n\n## Code Review: Ordered List. Based on the \"Code to be Reviewed\", provide key, clear, concise, and specific answer. If any answer is no, explain how to fix it step by step.\n1. Is the code implemented as per the requirements? If not, how to achieve it? Analyse it step by step.\n2. Is the code logic completely correct? If there are errors, please indicate how to correct them.\n3. Does the existing code follow the \"Data structures and interfaces\"?\n4. Are all functions implemented? If there is no implementation, please indicate how to achieve it step by step.\n5. Have all necessary pre-dependencies been imported? If not, indicate which ones need to be imported\n6. Are methods from other files being reused correctly?\n\n## Actions: Ordered List. Things that should be done after CR, such as implementing class A and function B\n\n## Code Review Result: str. If the code doesn't have bugs, we don't need to rewrite it, so answer LGTM and stop. ONLY ANSWER LGTM/LBTM.\nLGTM/LBTM\n\n": "## Code Review: \n1. 是的,代码按照要求实现了从a加b的功能。\n2. 是的,代码逻辑完全正确。\n3. 是的,现有代码遵循了“数据结构和接口”原则。\n4. 是的,所有功能都已实现。\n5. 是的,此代码片段不需要额外的依赖导入,因为它使用的是Python的内置操作。\n6. 是的,此代码片段没有从其他文件重用方法,因此不适用。\n\n## Actions\npass\n\n## Code Review Result\nLGTM",
+ "\n## context\nPlease fix the bug in the code.\n\n-----\n\n## format example\n[CONTENT]\n{\n \"issue_type\": \"BUG\",\n \"reason\": \"...\"\n}\n[/CONTENT]\n\n## nodes: \": # \"\n- issue_type: # Answer BUG/REQUIREMENT. If it is a bugfix, answer BUG, otherwise answer Requirement\n- reason: # Explain the reasoning process from question to answer\n\n\n## constraint\nLanguage: Please use the same language as Human INPUT.\nFormat: output wrapped inside [CONTENT][/CONTENT] like format example, nothing else.\n\n## action\nFollow instructions of nodes, generate output and make sure it follows the format example.\n": "[CONTENT]\n{\n \"issue_type\": \"BUG\",\n \"reason\": \"The user has requested to fix a bug in the code, but has not provided the code or described the bug. Without this information, it is not possible to identify or fix the bug.\"\n}\n[/CONTENT]",
+ "\n## context\n\n### Legacy Content\n\n## Language\n\nen_us\n\n## Programming Language\n\nPython\n\n## Original Requirements\n\nMake a simple number guessing game\n\n## Product Goals\n\n- Ensure a user-friendly interface for the game\n- Provide a challenging yet enjoyable game experience\n- Design the game to be easily extendable for future features\n\n## User Stories\n\n- As a player, I want to guess numbers and receive feedback on whether my guess is too high or too low\n- As a player, I want to be able to set the difficulty level by choosing the range of possible numbers\n- As a player, I want to see my previous guesses to strategize my next guess\n- As a player, I want to know how many attempts it took me to guess the number once I get it right\n\n## Competitive Analysis\n\n- Guess The Number Game A: Basic text interface, no difficulty levels\n- Number Master B: Has difficulty levels, but cluttered interface\n- Quick Guess C: Sleek design, but lacks performance tracking\n- NumGuess D: Good performance tracking, but not mobile-friendly\n- GuessIt E: Mobile-friendly, but too many ads\n- Perfect Guess F: Offers hints, but the hints are not very helpful\n- SmartGuesser G: Has a learning mode, but lacks a competitive edge\n\n## Competitive Quadrant Chart\n\nquadrantChart\n title \"User Engagement and Game Complexity\"\n x-axis \"Low Complexity\" --> \"High Complexity\"\n y-axis \"Low Engagement\" --> \"High Engagement\"\n quadrant-1 \"Too Simple\"\n quadrant-2 \"Niche Appeal\"\n quadrant-3 \"Complex & Unengaging\"\n quadrant-4 \"Sweet Spot\"\n \"Guess The Number Game A\": [0.2, 0.4]\n \"Number Master B\": [0.5, 0.3]\n \"Quick Guess C\": [0.6, 0.7]\n \"NumGuess D\": [0.4, 0.6]\n \"GuessIt E\": [0.7, 0.5]\n \"Perfect Guess F\": [0.6, 0.4]\n \"SmartGuesser G\": [0.8, 0.6]\n \"Our Target Product\": [0.5, 0.8]\n\n## Requirement Analysis\n\nThe game should be simple yet engaging, allowing players of different skill levels to enjoy it. It should provide immediate feedback and track the player's performance. The game should also be designed with a clean and intuitive interface, and it should be easy to add new features in the future.\n\n## Requirement Pool\n\n- ['P0', 'Implement the core game logic to randomly select a number and allow the user to guess it']\n- ['P0', 'Design a user interface that displays the game status and results clearly']\n- ['P1', 'Add difficulty levels by varying the range of possible numbers']\n- ['P1', 'Keep track of and display the number of attempts for each game session']\n- ['P2', \"Store and show the history of the player's guesses during a game session\"]\n\n## UI Design draft\n\nThe UI will feature a clean and minimalist design with a number input field, submit button, and messages area to provide feedback. There will be options to select the difficulty level and a display showing the number of attempts and history of past guesses.\n\n## Anything UNCLEAR\n\n### New Requirements\n\nAdding graphical interface functionality to enhance the user experience in the number-guessing game. The existing number-guessing game currently relies on command-line input for numbers. The goal is to introduce a graphical interface to improve the game's usability and visual appeal\n\n\n\n-----\n\n## format example\n[CONTENT]\n{\n \"is_relative\": \"YES\",\n \"reason\": \"...\"\n}\n[/CONTENT]\n\n## nodes: \": # \"\n- is_relative: # Answer YES/NO. If the requirement is related to the old PRD, answer YES, otherwise NO\n- reason: # Explain the reasoning process from question to answer\n\n\n## constraint\nLanguage: Please use the same language as Human INPUT.\nFormat: output wrapped inside [CONTENT][/CONTENT] like format example, nothing else.\n\n## action\nFollow instructions of nodes, generate output and make sure it follows the format example.\n": "[CONTENT]\n{\n \"is_relative\": \"YES\",\n \"reason\": \"The new requirement to add a graphical interface functionality is related to the original PRD's goal of ensuring a user-friendly interface for the game. The addition of a graphical interface aligns with the original product goals of providing a challenging yet enjoyable game experience and designing the game to be easily extendable for future features. It specifically addresses the competitive analysis findings by enhancing usability and visual appeal, which were identified as shortcomings in some of the competitive products.\"\n}\n[/CONTENT]",
+ "\n## context\n\n### Legacy Content\n\n## Language\n\nen_us\n\n## Programming Language\n\nPython\n\n## Original Requirements\n\nMake a simple number guessing game\n\n## Product Goals\n\n- Ensure a user-friendly interface for the game\n- Provide a challenging yet enjoyable game experience\n- Design the game to be easily extendable for future features\n\n## User Stories\n\n- As a player, I want to guess numbers and receive feedback on whether my guess is too high or too low\n- As a player, I want to be able to set the difficulty level by choosing the range of possible numbers\n- As a player, I want to see my previous guesses to strategize my next guess\n- As a player, I want to know how many attempts it took me to guess the number once I get it right\n\n## Competitive Analysis\n\n- Guess The Number Game A: Basic text interface, no difficulty levels\n- Number Master B: Has difficulty levels, but cluttered interface\n- Quick Guess C: Sleek design, but lacks performance tracking\n- NumGuess D: Good performance tracking, but not mobile-friendly\n- GuessIt E: Mobile-friendly, but too many ads\n- Perfect Guess F: Offers hints, but the hints are not very helpful\n- SmartGuesser G: Has a learning mode, but lacks a competitive edge\n\n## Competitive Quadrant Chart\n\nquadrantChart\n title \"User Engagement and Game Complexity\"\n x-axis \"Low Complexity\" --> \"High Complexity\"\n y-axis \"Low Engagement\" --> \"High Engagement\"\n quadrant-1 \"Too Simple\"\n quadrant-2 \"Niche Appeal\"\n quadrant-3 \"Complex & Unengaging\"\n quadrant-4 \"Sweet Spot\"\n \"Guess The Number Game A\": [0.2, 0.4]\n \"Number Master B\": [0.5, 0.3]\n \"Quick Guess C\": [0.6, 0.7]\n \"NumGuess D\": [0.4, 0.6]\n \"GuessIt E\": [0.7, 0.5]\n \"Perfect Guess F\": [0.6, 0.4]\n \"SmartGuesser G\": [0.8, 0.6]\n \"Our Target Product\": [0.5, 0.8]\n\n## Requirement Analysis\n\nThe game should be simple yet engaging, allowing players of different skill levels to enjoy it. It should provide immediate feedback and track the player's performance. The game should also be designed with a clean and intuitive interface, and it should be easy to add new features in the future.\n\n## Requirement Pool\n\n- ['P0', 'Implement the core game logic to randomly select a number and allow the user to guess it']\n- ['P0', 'Design a user interface that displays the game status and results clearly']\n- ['P1', 'Add difficulty levels by varying the range of possible numbers']\n- ['P1', 'Keep track of and display the number of attempts for each game session']\n- ['P2', \"Store and show the history of the player's guesses during a game session\"]\n\n## UI Design draft\n\nThe UI will feature a clean and minimalist design with a number input field, submit button, and messages area to provide feedback. There will be options to select the difficulty level and a display showing the number of attempts and history of past guesses.\n\n## Anything UNCLEAR\n\n### New Requirements\n\nAdding graphical interface functionality to enhance the user experience in the number-guessing game. The existing number-guessing game currently relies on command-line input for numbers. The goal is to introduce a graphical interface to improve the game's usability and visual appeal\n\n\n\n-----\n\n## format example\n[CONTENT]\n{\n \"Language\": \"en_us\",\n \"Programming Language\": \"Python\",\n \"Refined Requirements\": \"Create a 2048 game with a new feature that ...\",\n \"Project Name\": \"game_2048\",\n \"Refined Product Goals\": [\n \"Enhance user engagement through new features\",\n \"Optimize performance for scalability\",\n \"Integrate innovative UI enhancements\"\n ],\n \"Refined User Stories\": [\n \"As a player, I want to choose difficulty levels to challenge my skills\",\n \"As a player, I want a visually appealing score display after each game for a better gaming experience\",\n \"As a player, I want a convenient restart button displayed when I lose to quickly start a new game\",\n \"As a player, I want an enhanced and aesthetically pleasing UI to elevate the overall gaming experience\",\n \"As a player, I want the ability to play the game seamlessly on my mobile phone for on-the-go entertainment\"\n ],\n \"Competitive Analysis\": [\n \"2048 Game A: Simple interface, lacks responsive features\",\n \"play2048.co: Beautiful and responsive UI with my best score shown\",\n \"2048game.com: Responsive UI with my best score shown, but many ads\"\n ],\n \"Competitive Quadrant Chart\": \"quadrantChart\\n title \\\"Reach and engagement of campaigns\\\"\\n x-axis \\\"Low Reach\\\" --> \\\"High Reach\\\"\\n y-axis \\\"Low Engagement\\\" --> \\\"High Engagement\\\"\\n quadrant-1 \\\"We should expand\\\"\\n quadrant-2 \\\"Need to promote\\\"\\n quadrant-3 \\\"Re-evaluate\\\"\\n quadrant-4 \\\"May be improved\\\"\\n \\\"Campaign A\\\": [0.3, 0.6]\\n \\\"Campaign B\\\": [0.45, 0.23]\\n \\\"Campaign C\\\": [0.57, 0.69]\\n \\\"Campaign D\\\": [0.78, 0.34]\\n \\\"Campaign E\\\": [0.40, 0.34]\\n \\\"Campaign F\\\": [0.35, 0.78]\\n \\\"Our Target Product\\\": [0.5, 0.6]\",\n \"Refined Requirement Analysis\": [\n \"Require add/update/modify ...\"\n ],\n \"Refined Requirement Pool\": [\n [\n \"P0\",\n \"The main code ...\"\n ],\n [\n \"P0\",\n \"The game algorithm ...\"\n ]\n ],\n \"UI Design draft\": \"Basic function description with a simple style and layout.\",\n \"Anything UNCLEAR\": \"\"\n}\n[/CONTENT]\n\n## nodes: \": # \"\n- Language: # Provide the language used in the project, typically matching the user's requirement language.\n- Programming Language: # Python/JavaScript or other mainstream programming language.\n- Refined Requirements: # Place the New user's original requirements here.\n- Project Name: # According to the content of \"Original Requirements,\" name the project using snake case style , like 'game_2048' or 'simple_crm.\n- Refined Product Goals: typing.List[str] # Update and expand the original product goals to reflect the evolving needs due to incremental development. Ensure that the refined goals align with the current project direction and contribute to its success.\n- Refined User Stories: typing.List[str] # Update and expand the original scenario-based user stories to reflect the evolving needs due to incremental development. Ensure that the refined user stories capture incremental features and improvements. \n- Competitive Analysis: typing.List[str] # Provide 5 to 7 competitive products.\n- Competitive Quadrant Chart: # Use mermaid quadrantChart syntax. Distribute scores evenly between 0 and 1\n- Refined Requirement Analysis: typing.List[str] # Review and refine the existing requirement analysis to align with the evolving needs of the project due to incremental development. Ensure the analysis comprehensively covers the new features and enhancements required for the refined project scope.\n- Refined Requirement Pool: typing.List[typing.List[str]] # List down the top 5 to 7 requirements with their priority (P0, P1, P2). Cover both legacy content and incremental content. Retain content unrelated to incremental development\n- UI Design draft: # Provide a simple description of UI elements, functions, style, and layout.\n- Anything UNCLEAR: # Mention any aspects of the project that are unclear and try to clarify them.\n\n\n## constraint\nLanguage: Please use the same language as Human INPUT.\nFormat: output wrapped inside [CONTENT][/CONTENT] like format example, nothing else.\n\n## action\nFollow instructions of nodes, generate output and make sure it follows the format example.\n": "[CONTENT]\n{\n \"Language\": \"en_us\",\n \"Programming Language\": \"Python\",\n \"Refined Requirements\": \"Adding graphical interface functionality to enhance the user experience in the number-guessing game. The existing number-guessing game currently relies on command-line input for numbers. The goal is to introduce a graphical interface to improve the game's usability and visual appeal.\",\n \"Project Name\": \"graphical_number_guesser\",\n \"Refined Product Goals\": [\n \"Introduce a graphical user interface to make the game more accessible and visually appealing\",\n \"Maintain a user-friendly experience while transitioning from a command-line interface to a graphical interface\",\n \"Ensure the game remains challenging and enjoyable with the addition of the new interface\",\n \"Design the graphical interface to be easily extendable for future enhancements\"\n ],\n \"Refined User Stories\": [\n \"As a player, I want to interact with a graphical interface to input my guesses and receive feedback\",\n \"As a player, I want to easily select difficulty levels through the graphical interface\",\n \"As a player, I want to see a visual representation of my previous guesses and the number of attempts\",\n \"As a player, I want to enjoy a visually engaging experience that enhances the overall gameplay\"\n ],\n \"Competitive Analysis\": [\n \"Guess The Number Game A: Basic text interface, no difficulty levels\",\n \"Number Master B: Has difficulty levels, but cluttered interface\",\n \"Quick Guess C: Sleek design, but lacks performance tracking\",\n \"NumGuess D: Good performance tracking, but not mobile-friendly\",\n \"GuessIt E: Mobile-friendly, but too many ads\",\n \"Perfect Guess F: Offers hints, but the hints are not very helpful\",\n \"SmartGuesser G: Has a learning mode, but lacks a competitive edge\",\n \"Graphical Number Guesser: Our new game with a graphical interface and user-friendly design\"\n ],\n \"Competitive Quadrant Chart\": \"quadrantChart\\n title \\\"User Engagement and Game Complexity\\\"\\n x-axis \\\"Low Complexity\\\" --> \\\"High Complexity\\\"\\n y-axis \\\"Low Engagement\\\" --> \\\"High Engagement\\\"\\n quadrant-1 \\\"Too Simple\\\"\\n quadrant-2 \\\"Niche Appeal\\\"\\n quadrant-3 \\\"Complex & Unengaging\\\"\\n quadrant-4 \\\"Sweet Spot\\\"\\n \\\"Guess The Number Game A\\\": [0.2, 0.4]\\n \\\"Number Master B\\\": [0.5, 0.3]\\n \\\"Quick Guess C\\\": [0.6, 0.7]\\n \\\"NumGuess D\\\": [0.4, 0.6]\\n \\\"GuessIt E\\\": [0.7, 0.5]\\n \\\"Perfect Guess F\\\": [0.6, 0.4]\\n \\\"SmartGuesser G\\\": [0.8, 0.6]\\n \\\"Graphical Number Guesser\\\": [0.5, 0.8]\",\n \"Refined Requirement Analysis\": [\n \"The game must provide an intuitive graphical interface for user interaction\",\n \"The difficulty level selection should be seamlessly integrated into the graphical interface\",\n \"Performance tracking must be visually represented within the game interface\",\n \"The game should be designed to allow for easy updates and feature additions\"\n ],\n \"Refined Requirement Pool\": [\n [\"P0\", \"Implement a graphical user interface for the game\"],\n [\"P0\", \"Ensure the graphical interface provides feedback on guesses\"],\n [\"P1\", \"Incorporate difficulty level selection into the graphical interface\"],\n [\"P1\", \"Display a visual representation of guess history and attempt count\"],\n [\"P2\", \"Design the interface to be extensible for future game features\"]\n ],\n \"UI Design draft\": \"The graphical interface will feature a main game window with an input field for number guesses, buttons for submitting guesses and selecting difficulty, and panels for displaying guess history, attempt count, and feedback messages.\",\n \"Anything UNCLEAR\": \"\"\n}\n[/CONTENT]",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Iris dataset, include a plot\n\n# Plan Status\n\n## Finished Tasks\n### code\n```python\n\n```\n\n### execution result\n\n\n## Current Task\nLoad the sklearn Iris dataset and perform exploratory data analysis\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \nThe current task is about exploratory data analysis, please note the following:\n- Distinguish column types with `select_dtypes` for tailored analysis and visualization, such as correlation.\n- Remember to `import numpy as np` before using Numpy functions.\n\n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n": "```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn import datasets\n\n# Load the Iris dataset\niris = datasets.load_iris()\niris_df = pd.DataFrame(data= np.c_[iris['data'], iris['target']],\n columns= iris['feature_names'] + ['target'])\n\n# Perform exploratory data analysis\n# Distinguish column types\nnumerical_cols = iris_df.select_dtypes(include=[np.number]).columns.tolist()\ncategorical_cols = iris_df.select_dtypes(include=[object]).columns.tolist()\n\n# Display basic statistics for numerical columns\nprint(iris_df[numerical_cols].describe())\n\n# Plotting histograms for numerical features\nfig, axs = plt.subplots(2, 2, figsize=(12, 8))\nfor i, col in enumerate(numerical_cols[:-1]): # Exclude the target column for histogram\n ax = axs[i//2, i%2]\n iris_df[col].hist(ax=ax)\n ax.set_title(col)\n ax.set_xlabel('Measurement (cm)')\n ax.set_ylabel('Frequency')\n\nplt.tight_layout()\nplt.show()\n\n# Plotting a scatter matrix for numerical features\npd.plotting.scatter_matrix(iris_df[numerical_cols], figsize=(12, 12), diagonal='kde')\nplt.show()\n\n# Correlation matrix heatmap\nplt.figure(figsize=(8, 6))\nsns.heatmap(iris_df[numerical_cols].corr(), annot=True, fmt=\".2f\")\nplt.show()\n```",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nPreprocess sklearn Wine recognition dataset and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n\n# Tool Info\n\n ## Capabilities\n - You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python class or function.\n - You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..\n\n ## Available Tools:\n Each tool is described in JSON format. When you call a tool, import the tool from its path first.\n {'FillMissingValue': {'type': 'class', 'description': 'Completing missing values with simple strategies.', 'methods': {'__init__': {'type': 'function', 'description': 'Initialize self. ', 'signature': '(self, features: 'list', strategy: \"Literal['mean', 'median', 'most_frequent', 'constant']\" = 'mean', fill_value=None)', 'parameters': 'Args: features (list): Columns to be processed. strategy (Literal[\"mean\", \"median\", \"most_frequent\", \"constant\"], optional): The imputation strategy, notice 'mean' and 'median' can only be used for numeric features. Defaults to 'mean'. fill_value (int, optional): Fill_value is used to replace all occurrences of missing_values. Defaults to None.'}, 'fit': {'type': 'function', 'description': 'Fit a model to be used in subsequent transform. ', 'signature': \"(self, df: 'pd.DataFrame')\", 'parameters': 'Args: df (pd.DataFrame): The input DataFrame.'}, 'fit_transform': {'type': 'function', 'description': 'Fit and transform the input DataFrame. ', 'signature': \"(self, df: 'pd.DataFrame') -> 'pd.DataFrame'\", 'parameters': 'Args: df (pd.DataFrame): The input DataFrame. Returns: pd.DataFrame: The transformed DataFrame.'}, 'transform': {'type': 'function', 'description': 'Transform the input DataFrame with the fitted model. ', 'signature': \"(self, df: 'pd.DataFrame') -> 'pd.DataFrame'\", 'parameters': 'Args: df (pd.DataFrame): The input DataFrame. Returns: pd.DataFrame: The transformed DataFrame.'}}, 'tool_path': 'metagpt/tools/libs/data_preprocess.py'}\n \n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n": "To achieve the goal of preprocessing the sklearn Wine recognition dataset, training a model, and showing validation accuracy, we will follow these steps:\n\n1. Load the Wine recognition dataset from `sklearn.datasets`.\n2. Preprocess the dataset by handling any missing values using the `FillMissingValue` tool.\n3. Split the dataset into training and validation sets.\n4. Train a classification model using the training set.\n5. Evaluate the model on the validation set and output the accuracy.\n\nLet's start by loading the dataset and checking for any missing values.\n\n```python\nfrom sklearn.datasets import load_wine\nimport pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\n\n# Load the wine dataset\ndata = load_wine()\ndf = pd.DataFrame(data.data, columns=data.feature_names)\ndf['target'] = data.target\n\n# Check for missing values\nmissing_values = df.isnull().sum()\nprint(\"Missing values in each column:\\n\", missing_values)\n\n# If there are missing values, we will use the FillMissingValue tool to handle them\nif missing_values.sum() > 0:\n from metagpt.tools.libs.data_preprocess import FillMissingValue\n fill_missing = FillMissingValue(features=list(df.columns), strategy='mean')\n df = fill_missing.fit_transform(df)\n\n# Split the dataset into training and validation sets (80% train, 20% validation)\nX_train, X_val, y_train, y_val = train_test_split(df.drop('target', axis=1), df['target'], test_size=0.2, random_state=42)\n\n# Train a RandomForestClassifier\nmodel = RandomForestClassifier(random_state=42)\nmodel.fit(X_train, y_train)\n\n# Predict on the validation set\ny_pred = model.predict(X_val)\n\n# Calculate and print the validation accuracy\naccuracy = accuracy_score(y_val, y_pred)\nprint(f\"Validation accuracy: {accuracy:.2f}\")\n```",
+ "You are an AI Python assistant. You will be given your previous implementation code of a task, runtime error results, and a hint to change the implementation appropriately. Write your full implementation.#SYSTEM_MSG_END#\n[example]\nHere is an example of debugging with reflection.\n\n[previous impl]:\nassistant:\n```python\ndef add(a: int, b: int) -> int:\n \"\"\"\n Given integers a and b, return the total value of a and b.\n \"\"\"\n return a - b\n```\n\nuser:\nTests failed:\nassert add(1, 2) == 3 # output: -1\nassert add(1, 2) == 4 # output: -1\n\n[reflection on previous impl]:\nThe implementation failed the test cases where the input integers are 1 and 2. The issue arises because the code does not add the two integers together, but instead subtracts the second integer from the first. To fix this issue, we should change the operator from `-` to `+` in the return statement. This will ensure that the function returns the correct output for the given input.\n\n[improved impl]:\ndef add(a: int, b: int) -> int:\n \"\"\"\n Given integers a and b, return the total value of a and b.\n \"\"\"\n return a + b\n\n[/example]\n\n[context]\n[{'role': 'user', 'content': \"\\n# User Requirement\\nread a dataset test.csv and print its head\\n\\n# Plan Status\\n\\n ## Finished Tasks\\n ### code\\n ```python\\n ```\\n\\n ### execution result\\n\\n ## Current Task\\n import pandas and load the dataset from 'test.csv'.\\n\\n ## Task Guidance\\n Write complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\\n Specifically, \\n \\n\\n# Tool Info\\n\\n\\n# Constraints\\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\\n- Always prioritize using pre-defined tools for the same functionality.\\n\\n# Output\\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\\n```python\\nyour code\\n```\\n\"}, {'role': 'assistant', 'content': \"import pandas as pd\\ndata = pd.read_excel('test.csv')\\ndata\"}, {'role': 'user', 'content': '\\n Traceback (most recent call last):\\n File \"\", line 2, in \\n File \"/Users/gary/miniconda3/envs/py39_scratch/lib/python3.9/site-packages/pandas/io/excel/_base.py\", line 478, in read_excel\\n io = ExcelFile(io, storage_options=storage_options, engine=engine)\\n File \"/Users/gary/miniconda3/envs/py39_scratch/lib/python3.9/site-packages/pandas/io/excel/_base.py\", line 1500, in __init__\\n raise ValueError(\\n ValueError: Excel file format cannot be determined, you must specify an engine manually.\\n '}]\n\n[previous impl]:\n[assistant: import pandas as pd\ndata = pd.read_excel('test.csv')\ndata, user: \n Traceback (most recent call last):\n File \"\", line 2, in \n File \"/Users/gary/miniconda3/envs/py39_scratch/lib/python3.9/site-packages/pandas/io/excel/_base.py\", line 478, in read_excel\n io = ExcelFile(io, storage_options=storage_options, engine=engine)\n File \"/Users/gary/miniconda3/envs/py39_scratch/lib/python3.9/site-packages/pandas/io/excel/_base.py\", line 1500, in __init__\n raise ValueError(\n ValueError: Excel file format cannot be determined, you must specify an engine manually.\n ]\n\n[instruction]\nAnalyze your previous code and error in [context] step by step, provide me with improved method and code. Remember to follow [context] requirement. Don't forget to write code for steps behind the error step.\nOutput a json following the format:\n```json\n{\n \"reflection\": str = \"Reflection on previous implementation\",\n \"improved_impl\": str = \"Refined code after reflection.\",\n}\n```\n": "```json\n{\n \"reflection\": \"The previous implementation attempted to read a CSV file using the `pd.read_excel` function, which is intended for Excel files, not CSV files. The error message indicates that the file format cannot be determined and an engine must be specified manually. However, the real issue is that the wrong function is being used for a CSV file. The correct function to use for reading CSV files is `pd.read_csv`.\",\n \"improved_impl\": \"import pandas as pd\\ndata = pd.read_csv('test.csv')\\nprint(data.head())\"\n}\n```",
+ "\n # Context:\n user: Run data analysis on sklearn Iris dataset, include a plot\n # Available Task Types:\n - **eda**: For performing exploratory data analysis\n- **data preprocessing**: For preprocessing dataset in a data analysis or machine learning task ONLY,general data operation doesn't fall into this type\n- **feature engineering**: Only for creating new columns for input data.\n- **model train**: Only for training model.\n- **model evaluate**: Only for evaluating model.\n- **image2webpage**: For converting image into webpage code.\n- **other**: Any tasks not in the defined categories\n- **text2image**: Related to text2image, image2image using stable diffusion model.\n- **web scraping**: For scraping data from web pages.\n- **email login**: For logging to an email.\n # Task:\n Based on the context, write a plan or modify an existing plan of what you should do to achieve the goal. A plan consists of one to 5 tasks.\n If you are modifying an existing plan, carefully follow the instruction, don't make unnecessary changes. Give the whole plan unless instructed to modify only one task of the plan.\n If you encounter errors on the current task, revise and output the current single task only.\n Output a list of jsons following the format:\n ```json\n [\n {\n \"task_id\": str = \"unique identifier for a task in plan, can be an ordinal\",\n \"dependent_task_ids\": list[str] = \"ids of tasks prerequisite to this task\",\n \"instruction\": \"what you should do in this task, one short phrase or sentence\",\n \"task_type\": \"type of this task, should be one of Available Task Types\",\n },\n ...\n ]\n ```\n ": "```json\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Load the sklearn Iris dataset and display the first few rows.\",\n \"task_type\": \"eda\"\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\"1\"],\n \"instruction\": \"Perform exploratory data analysis on the Iris dataset to summarize the main characteristics.\",\n \"task_type\": \"eda\"\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\"2\"],\n \"instruction\": \"Create a scatter plot of the Iris dataset showing the relationship between sepal length and sepal width, color-coded by species.\",\n \"task_type\": \"eda\"\n }\n]\n```",
+ "\n # Context:\n user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[]\n## Current Task\n{}\n\n # Available Task Types:\n - **eda**: For performing exploratory data analysis\n- **data preprocessing**: For preprocessing dataset in a data analysis or machine learning task ONLY,general data operation doesn't fall into this type\n- **feature engineering**: Only for creating new columns for input data.\n- **model train**: Only for training model.\n- **model evaluate**: Only for evaluating model.\n- **image2webpage**: For converting image into webpage code.\n- **other**: Any tasks not in the defined categories\n- **text2image**: Related to text2image, image2image using stable diffusion model.\n- **web scraping**: For scraping data from web pages.\n- **email login**: For logging to an email.\n # Task:\n Based on the context, write a plan or modify an existing plan of what you should do to achieve the goal. A plan consists of one to 3 tasks.\n If you are modifying an existing plan, carefully follow the instruction, don't make unnecessary changes. Give the whole plan unless instructed to modify only one task of the plan.\n If you encounter errors on the current task, revise and output the current single task only.\n Output a list of jsons following the format:\n ```json\n [\n {\n \"task_id\": str = \"unique identifier for a task in plan, can be an ordinal\",\n \"dependent_task_ids\": list[str] = \"ids of tasks prerequisite to this task\",\n \"instruction\": \"what you should do in this task, one short phrase or sentence\",\n \"task_type\": \"type of this task, should be one of Available Task Types\",\n },\n ...\n ]\n ```\n ": "```json\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\"\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\"1\"],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\"\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\"2\"],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\"\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\"3\"],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\"\n }\n]\n```",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n## Finished Tasks\n### code\n```python\n\n```\n\n### execution result\n\n\n## Current Task\nPerform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \nThe current task is about exploratory data analysis, please note the following:\n- Distinguish column types with `select_dtypes` for tailored analysis and visualization, such as correlation.\n- Remember to `import numpy as np` before using Numpy functions.\n\n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n": "```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\n\n# Load the wine dataset\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\n\n# Summary statistics for numerical features\nnumerical_summary = wine_df.describe()\n\n# Summary statistics for categorical features\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\n\n# Correlation matrix for numerical features\ncorrelation_matrix = wine_df.corr()\n\n# Plotting a histogram for each numerical feature\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\n\n# Displaying the summary statistics\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n```",
+ "\n# Background\nCheck latest data info to guide subsequent tasks.\n\n## Finished Tasks\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n```end\n\n# Task\nCheck code in finished tasks, print key variables to guide your following actions.\nSpecifically, if it is a data analysis or machine learning task, print the the latest column information using the following code, with DataFrame variable from 'Finished Tasks' in place of df:\n```python\nfrom metagpt.tools.libs.data_preprocess import get_column_info\n\ncolumn_info = get_column_info(df)\nprint(\"column_info\")\nprint(column_info)\n```end\nOtherwise, print out any key variables you see fit. Return an empty string if you think there is no important data to check.\n\n# Constraints:\n- Your code is to be added to a new cell in jupyter.\n\n# Instruction\nOutput code following the format:\n```python\nyour code\n```\n": "```python\nfrom metagpt.tools.libs.data_preprocess import get_column_info\n\ncolumn_info = get_column_info(wine_df)\nprint(\"column_info\")\nprint(column_info)\n```",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n## Finished Tasks\n### code\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n```\n\n### execution result\na successful run\n\n## Current Task\nPreprocess the dataset by splitting it into training and validation sets with a 80-20 split.\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n#MSG_SEP#\n# Latest Data Info\nLatest data info after previous tasks:\na successful run\n": "```python\nfrom sklearn.model_selection import train_test_split\n\n# Split the data into training and validation sets\nX_train, X_val, y_train, y_val = train_test_split(\n wine.data, wine.target, test_size=0.2, random_state=42\n)\n```",
+ "\n# Background\nCheck latest data info to guide subsequent tasks.\n\n## Finished Tasks\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n\nfrom sklearn.model_selection import train_test_split\nX_train, X_val, y_train, y_val = train_test_split(\n wine.data, wine.target, test_size=0.2, random_state=42\n)\n```end\n\n# Task\nCheck code in finished tasks, print key variables to guide your following actions.\nSpecifically, if it is a data analysis or machine learning task, print the the latest column information using the following code, with DataFrame variable from 'Finished Tasks' in place of df:\n```python\nfrom metagpt.tools.libs.data_preprocess import get_column_info\n\ncolumn_info = get_column_info(df)\nprint(\"column_info\")\nprint(column_info)\n```end\nOtherwise, print out any key variables you see fit. Return an empty string if you think there is no important data to check.\n\n# Constraints:\n- Your code is to be added to a new cell in jupyter.\n\n# Instruction\nOutput code following the format:\n```python\nyour code\n```\n": "```python\nfrom metagpt.tools.libs.data_preprocess import get_column_info\n\ncolumn_info = get_column_info(wine_df)\nprint(\"column_info\")\nprint(column_info)\n```",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n## Finished Tasks\n### code\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n\nfrom sklearn.model_selection import train_test_split\nX_train, X_val, y_train, y_val = train_test_split(\n wine.data, wine.target, test_size=0.2, random_state=42\n)\n```\n\n### execution result\na successful run\n\na successful run\n\n## Current Task\nTrain a model using the training set to predict wine class.\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n#MSG_SEP#\n# Latest Data Info\nLatest data info after previous tasks:\na successful run\n": "```python\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\n\n# Initialize the model\nmodel = RandomForestClassifier(random_state=42)\n\n# Train the model\nmodel.fit(X_train, y_train)\n\n# Predict the validation set\ny_pred = model.predict(X_val)\n\n# Calculate the accuracy\naccuracy = accuracy_score(y_val, y_pred)\nprint(f\"Validation Accuracy: {accuracy:.2f}\")\n```",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n## Finished Tasks\n### code\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n\nfrom sklearn.model_selection import train_test_split\nX_train, X_val, y_train, y_val = train_test_split(\n wine.data, wine.target, test_size=0.2, random_state=42\n)\n\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\nmodel = RandomForestClassifier(random_state=42)\nmodel.fit(X_train, y_train)\ny_pred = model.predict(X_val)\naccuracy = accuracy_score(y_val, y_pred)\nprint(f\"Validation Accuracy: {accuracy:.2f}\")\n```\n\n### execution result\na successful run\n\na successful run\n\na successful run\n\n## Current Task\nEvaluate the model on the validation set and show the validation accuracy.\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n": "```python\n# Since the model has already been trained and predictions have been made on the validation set,\n# we only need to evaluate the model using the predictions and the true labels from the validation set.\n\n# The accuracy has already been calculated and printed in the previous task.\n# However, to follow the task guidance and to ensure the output is only related to the current task,\n# we will calculate and print the validation accuracy again.\n\nvalidation_accuracy = accuracy_score(y_val, y_pred)\nprint(f\"Validation Accuracy: {validation_accuracy:.2f}\")\n```",
+ "user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[]\n## Current Task\n{}\n\nassistant: [\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\"\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\"1\"],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\"\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\"2\"],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\"\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\"3\"],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\"\n }\n]\nThis is a review. Please review output from metagpt.actions.di.write_plan.WritePlan\nIf you want to change, add, delete a task or merge tasks in the plan, say 'change task task_id or current task, ... (things to change)' If you confirm the output from the current task and wish to continue, type: confirmIf you think user requirement has been fulfilled completedly, you can finish the process by typing: finish\nIf you want to terminate the process, type: exit\nPlease type your review below:\n": "confirm",
+ "user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\n \"1\"\n ],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\n \"2\"\n ],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\n \"3\"\n ],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n }\n]\n## Current Task\n{\"task_id\":\"1\",\"dependent_task_ids\":[],\"instruction\":\"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\"task_type\":\"eda\",\"code\":\"\",\"result\":\"\",\"is_success\":false,\"is_finished\":false}\n\nassistant: import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\n\n# Load the wine dataset\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\n\n# Summary statistics for numerical features\nnumerical_summary = wine_df.describe()\n\n# Summary statistics for categorical features\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\n\n# Correlation matrix for numerical features\ncorrelation_matrix = wine_df.corr()\n\n# Plotting a histogram for each numerical feature\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\n\n# Displaying the summary statistics\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n\nuser: a successful runThis is a review. Please review output from metagpt.actions.di.execute_nb_code.ExecuteNbCode\nIf you want to change, add, delete a task or merge tasks in the plan, say 'change task task_id or current task, ... (things to change)' If you confirm the output from the current task and wish to continue, type: confirmIf you think user requirement has been fulfilled completedly, you can finish the process by typing: finish\nIf you want to terminate the process, type: exit\nPlease type your review below:\n": "confirm",
+ "user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\",\n \"code\": \"import numpy as np\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\nfrom sklearn.datasets import load_wine\\n\\n# Load the wine dataset\\nwine = load_wine()\\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\\n columns=wine['feature_names'] + ['target'])\\n\\n# Summary statistics for numerical features\\nnumerical_summary = wine_df.describe()\\n\\n# Summary statistics for categorical features\\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\\n\\n# Correlation matrix for numerical features\\ncorrelation_matrix = wine_df.corr()\\n\\n# Plotting a histogram for each numerical feature\\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\\nplt.tight_layout()\\nplt.show()\\n\\n# Displaying the summary statistics\\nprint(\\\"Numerical Summary:\\\\n\\\", numerical_summary)\\nprint(\\\"\\\\nCategorical Summary:\\\\n\\\", categorical_summary)\\nprint(\\\"\\\\nCorrelation Matrix:\\\\n\\\", correlation_matrix)\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\n \"1\"\n ],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\n \"2\"\n ],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\n \"3\"\n ],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n }\n]\n## Current Task\n{\"task_id\":\"2\",\"dependent_task_ids\":[\"1\"],\"instruction\":\"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\"task_type\":\"data preprocessing\",\"code\":\"\",\"result\":\"\",\"is_success\":false,\"is_finished\":false}\n\nuser: \n# Latest Data Info\nLatest data info after previous tasks:\na successful run\n\nassistant: from sklearn.model_selection import train_test_split\n\n# Split the data into training and validation sets\nX_train, X_val, y_train, y_val = train_test_split(\n wine.data, wine.target, test_size=0.2, random_state=42\n)\n\nuser: a successful runThis is a review. Please review output from metagpt.actions.di.execute_nb_code.ExecuteNbCode\nIf you want to change, add, delete a task or merge tasks in the plan, say 'change task task_id or current task, ... (things to change)' If you confirm the output from the current task and wish to continue, type: confirmIf you think user requirement has been fulfilled completedly, you can finish the process by typing: finish\nIf you want to terminate the process, type: exit\nPlease type your review below:\n": "confirm",
+ "user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\",\n \"code\": \"import numpy as np\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\nfrom sklearn.datasets import load_wine\\n\\n# Load the wine dataset\\nwine = load_wine()\\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\\n columns=wine['feature_names'] + ['target'])\\n\\n# Summary statistics for numerical features\\nnumerical_summary = wine_df.describe()\\n\\n# Summary statistics for categorical features\\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\\n\\n# Correlation matrix for numerical features\\ncorrelation_matrix = wine_df.corr()\\n\\n# Plotting a histogram for each numerical feature\\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\\nplt.tight_layout()\\nplt.show()\\n\\n# Displaying the summary statistics\\nprint(\\\"Numerical Summary:\\\\n\\\", numerical_summary)\\nprint(\\\"\\\\nCategorical Summary:\\\\n\\\", categorical_summary)\\nprint(\\\"\\\\nCorrelation Matrix:\\\\n\\\", correlation_matrix)\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\n \"1\"\n ],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\",\n \"code\": \"from sklearn.model_selection import train_test_split\\n\\n# Split the data into training and validation sets\\nX_train, X_val, y_train, y_val = train_test_split(\\n wine.data, wine.target, test_size=0.2, random_state=42\\n)\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\n \"2\"\n ],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\n \"3\"\n ],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n }\n]\n## Current Task\n{\"task_id\":\"3\",\"dependent_task_ids\":[\"2\"],\"instruction\":\"Train a model using the training set to predict wine class.\",\"task_type\":\"model train\",\"code\":\"\",\"result\":\"\",\"is_success\":false,\"is_finished\":false}\n\nuser: \n# Latest Data Info\nLatest data info after previous tasks:\na successful run\n\nassistant: from sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\n\n# Initialize the model\nmodel = RandomForestClassifier(random_state=42)\n\n# Train the model\nmodel.fit(X_train, y_train)\n\n# Predict the validation set\ny_pred = model.predict(X_val)\n\n# Calculate the accuracy\naccuracy = accuracy_score(y_val, y_pred)\nprint(f\"Validation Accuracy: {accuracy:.2f}\")\n\nuser: a successful runThis is a review. Please review output from metagpt.actions.di.execute_nb_code.ExecuteNbCode\nIf you want to change, add, delete a task or merge tasks in the plan, say 'change task task_id or current task, ... (things to change)' If you confirm the output from the current task and wish to continue, type: confirmIf you think user requirement has been fulfilled completedly, you can finish the process by typing: finish\nIf you want to terminate the process, type: exit\nPlease type your review below:\n": "confirm",
+ "user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\",\n \"code\": \"import numpy as np\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\nfrom sklearn.datasets import load_wine\\n\\n# Load the wine dataset\\nwine = load_wine()\\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\\n columns=wine['feature_names'] + ['target'])\\n\\n# Summary statistics for numerical features\\nnumerical_summary = wine_df.describe()\\n\\n# Summary statistics for categorical features\\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\\n\\n# Correlation matrix for numerical features\\ncorrelation_matrix = wine_df.corr()\\n\\n# Plotting a histogram for each numerical feature\\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\\nplt.tight_layout()\\nplt.show()\\n\\n# Displaying the summary statistics\\nprint(\\\"Numerical Summary:\\\\n\\\", numerical_summary)\\nprint(\\\"\\\\nCategorical Summary:\\\\n\\\", categorical_summary)\\nprint(\\\"\\\\nCorrelation Matrix:\\\\n\\\", correlation_matrix)\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\n \"1\"\n ],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\",\n \"code\": \"from sklearn.model_selection import train_test_split\\n\\n# Split the data into training and validation sets\\nX_train, X_val, y_train, y_val = train_test_split(\\n wine.data, wine.target, test_size=0.2, random_state=42\\n)\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\n \"2\"\n ],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\",\n \"code\": \"from sklearn.ensemble import RandomForestClassifier\\nfrom sklearn.metrics import accuracy_score\\n\\n# Initialize the model\\nmodel = RandomForestClassifier(random_state=42)\\n\\n# Train the model\\nmodel.fit(X_train, y_train)\\n\\n# Predict the validation set\\ny_pred = model.predict(X_val)\\n\\n# Calculate the accuracy\\naccuracy = accuracy_score(y_val, y_pred)\\nprint(f\\\"Validation Accuracy: {accuracy:.2f}\\\")\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\n \"3\"\n ],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n }\n]\n## Current Task\n{\"task_id\":\"4\",\"dependent_task_ids\":[\"3\"],\"instruction\":\"Evaluate the model on the validation set and show the validation accuracy.\",\"task_type\":\"model evaluate\",\"code\":\"\",\"result\":\"\",\"is_success\":false,\"is_finished\":false}\n\nassistant: # Since the model has already been trained and predictions have been made on the validation set,\n# we only need to evaluate the model using the predictions and the true labels from the validation set.\n\n# The accuracy has already been calculated and printed in the previous task.\n# However, to follow the task guidance and to ensure the output is only related to the current task,\n# we will calculate and print the validation accuracy again.\n\nvalidation_accuracy = accuracy_score(y_val, y_pred)\nprint(f\"Validation Accuracy: {validation_accuracy:.2f}\")\n\nuser: a successful runThis is a review. Please review output from metagpt.actions.di.execute_nb_code.ExecuteNbCode\nIf you want to change, add, delete a task or merge tasks in the plan, say 'change task task_id or current task, ... (things to change)' If you confirm the output from the current task and wish to continue, type: confirmIf you think user requirement has been fulfilled completedly, you can finish the process by typing: finish\nIf you want to terminate the process, type: exit\nPlease type your review below:\n": "confirm",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n#MSG_SEP#Run data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.": "To achieve the user requirement, we will follow these steps:\n\n1. Load the Wine recognition dataset from `sklearn.datasets`.\n2. Perform a basic data analysis to understand the dataset.\n3. Visualize the data to gain insights.\n4. Split the dataset into training and validation sets.\n5. Train a classification model using the training set.\n6. Evaluate the model on the validation set and report the accuracy.\n\nLet's start by loading the dataset and performing the initial data analysis:\n\n```python\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\n\n# Load the wine dataset\nwine = load_wine()\nX = wine.data\ny = wine.target\nfeature_names = wine.feature_names\nclass_names = wine.target_names\n\n# Convert to a DataFrame for better visualization and analysis\nwine_df = pd.DataFrame(X, columns=feature_names)\nwine_df['target'] = y\n\n# Basic data analysis\nprint(wine_df.describe())\n\n# Plotting the data\n# Let's plot the distribution of alcohol content for each class\nfor class_idx, class_name in enumerate(class_names):\n plt.hist(wine_df[wine_df['target'] == class_idx]['alcohol'], label=class_name, alpha=0.5)\nplt.title('Alcohol content distribution by wine class')\nplt.xlabel('Alcohol content')\nplt.ylabel('Frequency')\nplt.legend()\nplt.show()\n\n# Split the dataset into training and validation sets (80% train, 20% validation)\nX_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\n\n# Train a RandomForestClassifier\nmodel = RandomForestClassifier(random_state=42)\nmodel.fit(X_train, y_train)\n\n# Predict on the validation set\ny_pred = model.predict(X_val)\n\n# Calculate the accuracy on the validation set\naccuracy = accuracy_score(y_val, y_pred)\nprint(f'Validation accuracy: {accuracy:.2f}')\n```\n\nThis code will load the dataset, perform a basic analysis, plot the distribution of alcohol content for each wine class, split the data, train a RandomForestClassifier, and finally, evaluate its performance on the validation set.",
+ "\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n# Context\n[user: Run data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy., assistant: import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\n\n# Load the wine dataset\nwine = load_wine()\nX = wine.data\ny = wine.target\nfeature_names = wine.feature_names\nclass_names = wine.target_names\n\n# Convert to a DataFrame for better visualization and analysis\nwine_df = pd.DataFrame(X, columns=feature_names)\nwine_df['target'] = y\n\n# Basic data analysis\nprint(wine_df.describe())\n\n# Plotting the data\n# Let's plot the distribution of alcohol content for each class\nfor class_idx, class_name in enumerate(class_names):\n plt.hist(wine_df[wine_df['target'] == class_idx]['alcohol'], label=class_name, alpha=0.5)\nplt.title('Alcohol content distribution by wine class')\nplt.xlabel('Alcohol content')\nplt.ylabel('Frequency')\nplt.legend()\nplt.show()\n\n# Split the dataset into training and validation sets (80% train, 20% validation)\nX_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)\n\n# Train a RandomForestClassifier\nmodel = RandomForestClassifier(random_state=42)\nmodel.fit(X_train, y_train)\n\n# Predict on the validation set\ny_pred = model.predict(X_val)\n\n# Calculate the accuracy on the validation set\naccuracy = accuracy_score(y_val, y_pred)\nprint(f'Validation accuracy: {accuracy:.2f}')\n, user: a successful run]\n\nOutput a json following the format:\n```json\n{\n \"thoughts\": str = \"Thoughts on current situation, reflect on how you should proceed to fulfill the user requirement\",\n \"state\": bool = \"Decide whether you need to take more actions to complete the user requirement. Return true if you think so. Return false if you think the requirement has been completely fulfilled.\"\n}\n```\n": "```json\n{\n \"thoughts\": \"The user has requested a data analysis on the sklearn Wine recognition dataset, including a plot and training a model to predict wine class with validation accuracy. The provided code snippet appears to fulfill the user's requirements. It loads the dataset, performs basic data analysis, creates a plot of alcohol content distribution by wine class, splits the data into training and validation sets, trains a RandomForestClassifier, predicts on the validation set, and prints the validation accuracy. Assuming the code runs successfully without errors, the user's requirements should be met.\",\n \"state\": false\n}\n```",
+ "\n## User Requirement:\nconduct feature engineering, add new features on the dataset\n\n## Task\nRecommend up to 5 tools from 'Available Tools' that can help solve the 'User Requirement'. \n\n## Available Tools:\n{'PolynomialExpansion': 'Add polynomial and interaction features from selected numeric columns to input DataFrame.', 'scrape_web_playwright': 'Asynchronously Scrape and save the HTML structure and inner text content of a web page using Playwright. ', 'FillMissingValue': 'Completing missing values with simple strategies.'}\n\n## Tool Selection and Instructions:\n- Select tools most relevant to completing the 'User Requirement'.\n- If you believe that no tools are suitable, indicate with an empty list.\n- Only list the names of the tools, not the full schema of each tool.\n- Ensure selected tools are listed in 'Available Tools'.\n- Output a json list of tool names:\n```json\n[\"tool_name1\", \"tool_name2\", ...]\n```\n": "```json\n[\"PolynomialExpansion\", \"FillMissingValue\"]\n```",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n## Finished Tasks\n### code\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n```\n\n### execution result\na successful run\n\n## Current Task\nPreprocess the dataset by splitting it into training and validation sets with a 80-20 split.\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \nThe current task is about data preprocessing, please note the following:\n- Monitor data types per column, applying appropriate methods.\n- Ensure operations are on existing dataset columns.\n- Avoid writing processed data to files.\n- Avoid any change to label column, such as standardization, etc.\n- Prefer alternatives to one-hot encoding for categorical data.\n- Only encode or scale necessary columns to allow for potential feature-specific engineering tasks (like time_extract, binning, extraction, etc.) later.\n- Each step do data preprocessing to train, must do same for test separately at the same time.\n- Always copy the DataFrame before processing it and use the copy to process.\n\n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n#MSG_SEP#\n# Latest Data Info\nLatest data info after previous tasks:\na successful run\n": "```python\nfrom sklearn.model_selection import train_test_split\n\n# Split the data into training and validation sets (80-20 split)\nX_train, X_val, y_train, y_val = train_test_split(\n wine_df.drop('target', axis=1), # features\n wine_df['target'], # target variable\n test_size=0.2, # 20% for validation\n random_state=42 # seed for reproducibility\n)\n\n# Output the shapes of the resulting data splits\nprint(f\"Training set shape: {X_train.shape}\")\nprint(f\"Validation set shape: {X_val.shape}\")\nprint(f\"Training target shape: {y_train.shape}\")\nprint(f\"Validation target shape: {y_val.shape}\")\n```",
+ "\n# Background\nCheck latest data info to guide subsequent tasks.\n\n## Finished Tasks\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n\nfrom sklearn.model_selection import train_test_split\nX_train, X_val, y_train, y_val = train_test_split(\n wine_df.drop('target', axis=1),\n wine_df['target'],\n test_size=0.2,\n random_state=42\n)\nprint(f\"Training set shape: {X_train.shape}\")\nprint(f\"Validation set shape: {X_val.shape}\")\nprint(f\"Training target shape: {y_train.shape}\")\nprint(f\"Validation target shape: {y_val.shape}\")\n```end\n\n# Task\nCheck code in finished tasks, print key variables to guide your following actions.\nSpecifically, if it is a data analysis or machine learning task, print the the latest column information using the following code, with DataFrame variable from 'Finished Tasks' in place of df:\n```python\nfrom metagpt.tools.libs.data_preprocess import get_column_info\n\ncolumn_info = get_column_info(df)\nprint(\"column_info\")\nprint(column_info)\n```end\nOtherwise, print out any key variables you see fit. Return an empty string if you think there is no important data to check.\n\n# Constraints:\n- Your code is to be added to a new cell in jupyter.\n\n# Instruction\nOutput code following the format:\n```python\nyour code\n```\n": "```python\nfrom metagpt.tools.libs.data_preprocess import get_column_info\n\ncolumn_info = get_column_info(wine_df)\nprint(\"column_info\")\nprint(column_info)\n```",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n## Finished Tasks\n### code\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n\nfrom sklearn.model_selection import train_test_split\nX_train, X_val, y_train, y_val = train_test_split(\n wine_df.drop('target', axis=1),\n wine_df['target'],\n test_size=0.2,\n random_state=42\n)\nprint(f\"Training set shape: {X_train.shape}\")\nprint(f\"Validation set shape: {X_val.shape}\")\nprint(f\"Training target shape: {y_train.shape}\")\nprint(f\"Validation target shape: {y_val.shape}\")\n```\n\n### execution result\na successful run\n\na successful run\n\n## Current Task\nTrain a model using the training set to predict wine class.\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \nThe current task is about training a model, please ensure high performance:\n- Keep in mind that your user prioritizes results and is highly focused on model performance. So, when needed, feel free to use models of any complexity to improve effectiveness, such as XGBoost, CatBoost, etc.\n- If non-numeric columns exist, perform label encode together with all steps.\n- Use the data from previous task result directly, do not mock or reload data yourself.\n- Set suitable hyperparameters for the model, make metrics as high as possible.\n\n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n#MSG_SEP#\n# Latest Data Info\nLatest data info after previous tasks:\na successful run\n": "```python\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\n\n# Initialize the RandomForestClassifier\nmodel = RandomForestClassifier(n_estimators=100, random_state=42)\n\n# Train the model on the training data\nmodel.fit(X_train, y_train)\n\n# Predict the wine classes on the validation set\ny_val_pred = model.predict(X_val)\n\n# Calculate the accuracy on the validation set\nval_accuracy = accuracy_score(y_val, y_val_pred)\n\nprint(f\"Validation Accuracy: {val_accuracy:.4f}\")\n```",
+ "As a data scientist, you need to help user to achieve their goal step by step in a continuous Jupyter notebook. Since it is a notebook environment, don't use asyncio.run. Instead, use await if you need to call an async function.#SYSTEM_MSG_END#\n# User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n\n# Plan Status\n\n## Finished Tasks\n### code\n```python\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.datasets import load_wine\nwine = load_wine()\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\n columns=wine['feature_names'] + ['target'])\nnumerical_summary = wine_df.describe()\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\ncorrelation_matrix = wine_df.corr()\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\nplt.tight_layout()\nplt.show()\nprint(\"Numerical Summary:\\n\", numerical_summary)\nprint(\"\\nCategorical Summary:\\n\", categorical_summary)\nprint(\"\\nCorrelation Matrix:\\n\", correlation_matrix)\n\nfrom sklearn.model_selection import train_test_split\nX_train, X_val, y_train, y_val = train_test_split(\n wine_df.drop('target', axis=1),\n wine_df['target'],\n test_size=0.2,\n random_state=42\n)\nprint(f\"Training set shape: {X_train.shape}\")\nprint(f\"Validation set shape: {X_val.shape}\")\nprint(f\"Training target shape: {y_train.shape}\")\nprint(f\"Validation target shape: {y_val.shape}\")\n\nfrom sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\nmodel = RandomForestClassifier(n_estimators=100, random_state=42)\nmodel.fit(X_train, y_train)\ny_val_pred = model.predict(X_val)\nval_accuracy = accuracy_score(y_val, y_val_pred)\nprint(f\"Validation Accuracy: {val_accuracy:.4f}\")\n```\n\n### execution result\na successful run\n\na successful run\n\na successful run\n\n## Current Task\nEvaluate the model on the validation set and show the validation accuracy.\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \nThe current task is about evaluating a model, please note the following:\n- Ensure that the evaluated data is same processed as the training data. If not, remember use object in 'Done Tasks' to transform the data.\n- Use trained model from previous task result directly, do not mock or reload model yourself.\n\n\n\n# Tool Info\n\n\n# Constraints\n- Take on Current Task if it is in Plan Status, otherwise, tackle User Requirement directly.\n- Ensure the output new code is executable in the same Jupyter notebook as the previous executed code.\n- Always prioritize using pre-defined tools for the same functionality.\n\n# Output\nWhile some concise thoughts are helpful, code is absolutely required. Always output one and only one code block in your response. Output code in the following format:\n```python\nyour code\n```\n": "```python\n# Evaluate the model on the validation set and show the validation accuracy\nval_accuracy = accuracy_score(y_val, y_val_pred)\nprint(f\"Validation Accuracy: {val_accuracy:.4f}\")\n```",
+ "user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\",\n \"code\": \"import numpy as np\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\nfrom sklearn.datasets import load_wine\\n\\n# Load the wine dataset\\nwine = load_wine()\\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\\n columns=wine['feature_names'] + ['target'])\\n\\n# Summary statistics for numerical features\\nnumerical_summary = wine_df.describe()\\n\\n# Summary statistics for categorical features\\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\\n\\n# Correlation matrix for numerical features\\ncorrelation_matrix = wine_df.corr()\\n\\n# Plotting a histogram for each numerical feature\\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\\nplt.tight_layout()\\nplt.show()\\n\\n# Displaying the summary statistics\\nprint(\\\"Numerical Summary:\\\\n\\\", numerical_summary)\\nprint(\\\"\\\\nCategorical Summary:\\\\n\\\", categorical_summary)\\nprint(\\\"\\\\nCorrelation Matrix:\\\\n\\\", correlation_matrix)\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\n \"1\"\n ],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\n \"2\"\n ],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\n \"3\"\n ],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n }\n]\n## Current Task\n{\"task_id\":\"2\",\"dependent_task_ids\":[\"1\"],\"instruction\":\"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\"task_type\":\"data preprocessing\",\"code\":\"\",\"result\":\"\",\"is_success\":false,\"is_finished\":false}\n\nuser: \n# Latest Data Info\nLatest data info after previous tasks:\na successful run\n\nassistant: from sklearn.model_selection import train_test_split\n\n# Split the data into training and validation sets (80-20 split)\nX_train, X_val, y_train, y_val = train_test_split(\n wine_df.drop('target', axis=1), # features\n wine_df['target'], # target variable\n test_size=0.2, # 20% for validation\n random_state=42 # seed for reproducibility\n)\n\n# Output the shapes of the resulting data splits\nprint(f\"Training set shape: {X_train.shape}\")\nprint(f\"Validation set shape: {X_val.shape}\")\nprint(f\"Training target shape: {y_train.shape}\")\nprint(f\"Validation target shape: {y_val.shape}\")\n\nuser: a successful runThis is a review. Please review output from metagpt.actions.di.execute_nb_code.ExecuteNbCode\nIf you want to change, add, delete a task or merge tasks in the plan, say 'change task task_id or current task, ... (things to change)' If you confirm the output from the current task and wish to continue, type: confirmIf you think user requirement has been fulfilled completedly, you can finish the process by typing: finish\nIf you want to terminate the process, type: exit\nPlease type your review below:\n": "confirm",
+ "user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\",\n \"code\": \"import numpy as np\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\nfrom sklearn.datasets import load_wine\\n\\n# Load the wine dataset\\nwine = load_wine()\\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\\n columns=wine['feature_names'] + ['target'])\\n\\n# Summary statistics for numerical features\\nnumerical_summary = wine_df.describe()\\n\\n# Summary statistics for categorical features\\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\\n\\n# Correlation matrix for numerical features\\ncorrelation_matrix = wine_df.corr()\\n\\n# Plotting a histogram for each numerical feature\\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\\nplt.tight_layout()\\nplt.show()\\n\\n# Displaying the summary statistics\\nprint(\\\"Numerical Summary:\\\\n\\\", numerical_summary)\\nprint(\\\"\\\\nCategorical Summary:\\\\n\\\", categorical_summary)\\nprint(\\\"\\\\nCorrelation Matrix:\\\\n\\\", correlation_matrix)\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\n \"1\"\n ],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\",\n \"code\": \"from sklearn.model_selection import train_test_split\\n\\n# Split the data into training and validation sets (80-20 split)\\nX_train, X_val, y_train, y_val = train_test_split(\\n wine_df.drop('target', axis=1), # features\\n wine_df['target'], # target variable\\n test_size=0.2, # 20% for validation\\n random_state=42 # seed for reproducibility\\n)\\n\\n# Output the shapes of the resulting data splits\\nprint(f\\\"Training set shape: {X_train.shape}\\\")\\nprint(f\\\"Validation set shape: {X_val.shape}\\\")\\nprint(f\\\"Training target shape: {y_train.shape}\\\")\\nprint(f\\\"Validation target shape: {y_val.shape}\\\")\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\n \"2\"\n ],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\n \"3\"\n ],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n }\n]\n## Current Task\n{\"task_id\":\"3\",\"dependent_task_ids\":[\"2\"],\"instruction\":\"Train a model using the training set to predict wine class.\",\"task_type\":\"model train\",\"code\":\"\",\"result\":\"\",\"is_success\":false,\"is_finished\":false}\n\nuser: \n# Latest Data Info\nLatest data info after previous tasks:\na successful run\n\nassistant: from sklearn.ensemble import RandomForestClassifier\nfrom sklearn.metrics import accuracy_score\n\n# Initialize the RandomForestClassifier\nmodel = RandomForestClassifier(n_estimators=100, random_state=42)\n\n# Train the model on the training data\nmodel.fit(X_train, y_train)\n\n# Predict the wine classes on the validation set\ny_val_pred = model.predict(X_val)\n\n# Calculate the accuracy on the validation set\nval_accuracy = accuracy_score(y_val, y_val_pred)\n\nprint(f\"Validation Accuracy: {val_accuracy:.4f}\")\n\nuser: a successful runThis is a review. Please review output from metagpt.actions.di.execute_nb_code.ExecuteNbCode\nIf you want to change, add, delete a task or merge tasks in the plan, say 'change task task_id or current task, ... (things to change)' If you confirm the output from the current task and wish to continue, type: confirmIf you think user requirement has been fulfilled completedly, you can finish the process by typing: finish\nIf you want to terminate the process, type: exit\nPlease type your review below:\n": "confirm",
+ "user: \n## User Requirement\nRun data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy.\n## Context\n\n## Current Plan\n[\n {\n \"task_id\": \"1\",\n \"dependent_task_ids\": [],\n \"instruction\": \"Perform exploratory data analysis on the sklearn Wine recognition dataset including summary statistics and a plot.\",\n \"task_type\": \"eda\",\n \"code\": \"import numpy as np\\nimport pandas as pd\\nimport matplotlib.pyplot as plt\\nfrom sklearn.datasets import load_wine\\n\\n# Load the wine dataset\\nwine = load_wine()\\nwine_df = pd.DataFrame(data=np.c_[wine['data'], wine['target']],\\n columns=wine['feature_names'] + ['target'])\\n\\n# Summary statistics for numerical features\\nnumerical_summary = wine_df.describe()\\n\\n# Summary statistics for categorical features\\ncategorical_summary = wine_df.select_dtypes(include=['object', 'category']).describe()\\n\\n# Correlation matrix for numerical features\\ncorrelation_matrix = wine_df.corr()\\n\\n# Plotting a histogram for each numerical feature\\nwine_df.hist(bins=15, figsize=(15, 10), layout=(4, 4))\\nplt.tight_layout()\\nplt.show()\\n\\n# Displaying the summary statistics\\nprint(\\\"Numerical Summary:\\\\n\\\", numerical_summary)\\nprint(\\\"\\\\nCategorical Summary:\\\\n\\\", categorical_summary)\\nprint(\\\"\\\\nCorrelation Matrix:\\\\n\\\", correlation_matrix)\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"2\",\n \"dependent_task_ids\": [\n \"1\"\n ],\n \"instruction\": \"Preprocess the dataset by splitting it into training and validation sets with a 80-20 split.\",\n \"task_type\": \"data preprocessing\",\n \"code\": \"from sklearn.model_selection import train_test_split\\n\\n# Split the data into training and validation sets (80-20 split)\\nX_train, X_val, y_train, y_val = train_test_split(\\n wine_df.drop('target', axis=1), # features\\n wine_df['target'], # target variable\\n test_size=0.2, # 20% for validation\\n random_state=42 # seed for reproducibility\\n)\\n\\n# Output the shapes of the resulting data splits\\nprint(f\\\"Training set shape: {X_train.shape}\\\")\\nprint(f\\\"Validation set shape: {X_val.shape}\\\")\\nprint(f\\\"Training target shape: {y_train.shape}\\\")\\nprint(f\\\"Validation target shape: {y_val.shape}\\\")\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"3\",\n \"dependent_task_ids\": [\n \"2\"\n ],\n \"instruction\": \"Train a model using the training set to predict wine class.\",\n \"task_type\": \"model train\",\n \"code\": \"from sklearn.ensemble import RandomForestClassifier\\nfrom sklearn.metrics import accuracy_score\\n\\n# Initialize the RandomForestClassifier\\nmodel = RandomForestClassifier(n_estimators=100, random_state=42)\\n\\n# Train the model on the training data\\nmodel.fit(X_train, y_train)\\n\\n# Predict the wine classes on the validation set\\ny_val_pred = model.predict(X_val)\\n\\n# Calculate the accuracy on the validation set\\nval_accuracy = accuracy_score(y_val, y_val_pred)\\n\\nprint(f\\\"Validation Accuracy: {val_accuracy:.4f}\\\")\\n\",\n \"result\": \"a successful run\",\n \"is_success\": true,\n \"is_finished\": true\n },\n {\n \"task_id\": \"4\",\n \"dependent_task_ids\": [\n \"3\"\n ],\n \"instruction\": \"Evaluate the model on the validation set and show the validation accuracy.\",\n \"task_type\": \"model evaluate\",\n \"code\": \"\",\n \"result\": \"\",\n \"is_success\": false,\n \"is_finished\": false\n }\n]\n## Current Task\n{\"task_id\":\"4\",\"dependent_task_ids\":[\"3\"],\"instruction\":\"Evaluate the model on the validation set and show the validation accuracy.\",\"task_type\":\"model evaluate\",\"code\":\"\",\"result\":\"\",\"is_success\":false,\"is_finished\":false}\n\nassistant: # Evaluate the model on the validation set and show the validation accuracy\nval_accuracy = accuracy_score(y_val, y_val_pred)\nprint(f\"Validation Accuracy: {val_accuracy:.4f}\")\n\nuser: a successful runThis is a review. Please review output from metagpt.actions.di.execute_nb_code.ExecuteNbCode\nIf you want to change, add, delete a task or merge tasks in the plan, say 'change task task_id or current task, ... (things to change)' If you confirm the output from the current task and wish to continue, type: confirmIf you think user requirement has been fulfilled completedly, you can finish the process by typing: finish\nIf you want to terminate the process, type: exit\nPlease type your review below:\n": "confirm"
}
\ No newline at end of file
diff --git a/tests/metagpt/actions/ci/test_debug_code.py b/tests/metagpt/actions/ci/test_debug_code.py
deleted file mode 100644
index 0307ac17e..000000000
--- a/tests/metagpt/actions/ci/test_debug_code.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# -*- coding: utf-8 -*-
-# @Date : 1/11/2024 8:51 PM
-# @Author : stellahong (stellahong@fuzhi.ai)
-# @Desc :
-
-import pytest
-
-from metagpt.actions.ci.debug_code import DebugCode
-from metagpt.schema import Message
-
-ErrorStr = """Tested passed:
-
-Tests failed:
-assert sort_array([1, 5, 2, 3, 4]) == [1, 2, 3, 4, 5] # output: [1, 2, 4, 3, 5]
-"""
-
-CODE = """
-def sort_array(arr):
- # Helper function to count the number of ones in the binary representation
- def count_ones(n):
- return bin(n).count('1')
-
- # Sort the array using a custom key function
- # The key function returns a tuple (number of ones, value) for each element
- # This ensures that if two elements have the same number of ones, they are sorted by their value
- sorted_arr = sorted(arr, key=lambda x: (count_ones(x), x))
-
- return sorted_arr
-```
-"""
-
-DebugContext = '''Solve the problem in Python:
-def sort_array(arr):
- """
- In this Kata, you have to sort an array of non-negative integers according to
- number of ones in their binary representation in ascending order.
- For similar number of ones, sort based on decimal value.
-
- It must be implemented like this:
- >>> sort_array([1, 5, 2, 3, 4]) == [1, 2, 3, 4, 5]
- >>> sort_array([-2, -3, -4, -5, -6]) == [-6, -5, -4, -3, -2]
- >>> sort_array([1, 0, 2, 3, 4]) [0, 1, 2, 3, 4]
- """
-'''
-
-
-@pytest.mark.asyncio
-async def test_debug_code():
- debug_context = Message(content=DebugContext)
- new_code = await DebugCode().run(context=debug_context, code=CODE, runtime_result=ErrorStr)
- assert "def sort_array(arr)" in new_code["code"]
diff --git a/tests/metagpt/actions/ci/test_ml_action.py b/tests/metagpt/actions/ci/test_ml_action.py
deleted file mode 100644
index 5d9507094..000000000
--- a/tests/metagpt/actions/ci/test_ml_action.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import pytest
-
-from metagpt.actions.ci.ml_action import WriteCodeWithToolsML
-from metagpt.schema import Plan, Task
-
-
-@pytest.mark.asyncio
-async def test_write_code_with_tools():
- write_code_ml = WriteCodeWithToolsML()
-
- task_map = {
- "1": Task(
- task_id="1",
- instruction="随机生成一个pandas DataFrame数据集",
- task_type="other",
- dependent_task_ids=[],
- code="""
- import pandas as pd
- df = pd.DataFrame({
- 'a': [1, 2, 3, 4, 5],
- 'b': [1.1, 2.2, 3.3, 4.4, np.nan],
- 'c': ['aa', 'bb', 'cc', 'dd', 'ee'],
- 'd': [1, 2, 3, 4, 5]
- })
- """,
- is_finished=True,
- ),
- "2": Task(
- task_id="2",
- instruction="对数据集进行数据清洗",
- task_type="data_preprocess",
- dependent_task_ids=["1"],
- ),
- }
- plan = Plan(
- goal="构造数据集并进行数据清洗",
- tasks=list(task_map.values()),
- task_map=task_map,
- current_task_id="2",
- )
- column_info = ""
-
- _, code_with_ml = await write_code_ml.run([], plan, column_info)
- code_with_ml = code_with_ml["code"]
- assert len(code_with_ml) > 0
- print(code_with_ml)
diff --git a/tests/metagpt/actions/ci/test_write_analysis_code.py b/tests/metagpt/actions/ci/test_write_analysis_code.py
deleted file mode 100644
index 95c7dfca8..000000000
--- a/tests/metagpt/actions/ci/test_write_analysis_code.py
+++ /dev/null
@@ -1,324 +0,0 @@
-import asyncio
-
-import pytest
-
-from metagpt.actions.ci.execute_nb_code import ExecuteNbCode
-from metagpt.actions.ci.write_analysis_code import (
- WriteCodeWithoutTools,
- WriteCodeWithTools,
-)
-from metagpt.logs import logger
-from metagpt.schema import Message, Plan, Task
-from metagpt.strategy.planner import STRUCTURAL_CONTEXT
-
-
-@pytest.mark.skip
-@pytest.mark.asyncio
-async def test_write_code_by_list_plan():
- write_code = WriteCodeWithoutTools()
- execute_code = ExecuteNbCode()
- messages = []
- plan = ["随机生成一个pandas DataFrame时间序列", "绘制这个时间序列的直方图", "回顾已完成的任务", "求均值", "总结"]
- for task in plan:
- print(f"\n任务: {task}\n\n")
- messages.append(Message(task, role="assistant"))
- code = await write_code.run(messages)
- if task.startswith(("回顾", "总结")):
- assert code["language"] == "markdown"
- else:
- assert code["language"] == "python"
- messages.append(Message(code["code"], role="assistant"))
- assert len(code) > 0
- output, _ = await execute_code.run(**code)
- print(f"\n[Output]: 任务{task}的执行结果是: \n{output}\n")
- messages.append(output)
-
-
-@pytest.mark.asyncio
-async def test_tool_recommendation():
- task = "clean and preprocess the data"
- available_tools = {
- "FillMissingValue": "Filling missing values",
- "SplitBins": "Bin continuous data into intervals and return the bin identifier encoded as an integer value",
- }
- write_code = WriteCodeWithTools()
- tools = await write_code._recommend_tool(task, available_tools)
-
- assert len(tools) == 1
- assert "FillMissingValue" in tools
-
-
-@pytest.mark.asyncio
-async def test_write_code_with_tools():
- write_code = WriteCodeWithTools()
-
- requirement = "构造数据集并进行数据清洗"
- task_map = {
- "1": Task(
- task_id="1",
- instruction="随机生成一个pandas DataFrame数据集",
- task_type="other",
- dependent_task_ids=[],
- code="""
- import pandas as pd
- df = pd.DataFrame({
- 'a': [1, 2, 3, 4, 5],
- 'b': [1.1, 2.2, 3.3, 4.4, np.nan],
- 'c': ['aa', 'bb', 'cc', 'dd', 'ee'],
- 'd': [1, 2, 3, 4, 5]
- })
- """,
- is_finished=True,
- ),
- "2": Task(
- task_id="2",
- instruction="对数据集进行数据清洗",
- task_type="data_preprocess",
- dependent_task_ids=["1"],
- ),
- }
- plan = Plan(
- goal="构造数据集并进行数据清洗",
- tasks=list(task_map.values()),
- task_map=task_map,
- current_task_id="2",
- )
-
- context = STRUCTURAL_CONTEXT.format(
- user_requirement=requirement,
- context=plan.context,
- tasks=list(task_map.values()),
- current_task=plan.current_task.model_dump_json(),
- )
- context_msg = [Message(content=context, role="user")]
-
- code = await write_code.run(context_msg, plan)
- code = code["code"]
- assert len(code) > 0
- print(code)
-
-
-@pytest.mark.asyncio
-async def test_write_code_to_correct_error():
- structural_context = """
- ## User Requirement
- read a dataset test.csv and print its head
- ## Current Plan
- [
- {
- "task_id": "1",
- "dependent_task_ids": [],
- "instruction": "import pandas and load the dataset from 'test.csv'.",
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- },
- {
- "task_id": "2",
- "dependent_task_ids": [
- "1"
- ],
- "instruction": "Print the head of the dataset to display the first few rows.",
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- }
- ]
- ## Current Task
- {"task_id": "1", "dependent_task_ids": [], "instruction": "import pandas and load the dataset from 'test.csv'.", "task_type": "", "code": "", "result": "", "is_finished": false}
- """
- wrong_code = """import pandas as pd\ndata = pd.read_excel('test.csv')\ndata""" # use read_excel to read a csv
- error = """
- Traceback (most recent call last):
- File "", line 2, in
- File "/Users/gary/miniconda3/envs/py39_scratch/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 478, in read_excel
- io = ExcelFile(io, storage_options=storage_options, engine=engine)
- File "/Users/gary/miniconda3/envs/py39_scratch/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1500, in __init__
- raise ValueError(
- ValueError: Excel file format cannot be determined, you must specify an engine manually.
- """
- context = [
- Message(content=structural_context, role="user"),
- Message(content=wrong_code, role="assistant"),
- Message(content=error, role="user"),
- ]
- new_code = await WriteCodeWithoutTools().run(context=context)
- new_code = new_code["code"]
- print(new_code)
- assert "read_csv" in new_code # should correct read_excel to read_csv
-
-
-@pytest.mark.asyncio
-async def test_write_code_reuse_code_simple():
- structural_context = """
- ## User Requirement
- read a dataset test.csv and print its head
- ## Current Plan
- [
- {
- "task_id": "1",
- "dependent_task_ids": [],
- "instruction": "import pandas and load the dataset from 'test.csv'.",
- "task_type": "",
- "code": "import pandas as pd\ndata = pd.read_csv('test.csv')",
- "result": "",
- "is_finished": true
- },
- {
- "task_id": "2",
- "dependent_task_ids": [
- "1"
- ],
- "instruction": "Print the head of the dataset to display the first few rows.",
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- }
- ]
- ## Current Task
- {"task_id": "2", "dependent_task_ids": ["1"], "instruction": "Print the head of the dataset to display the first few rows.", "task_type": "", "code": "", "result": "", "is_finished": false}
- """
- context = [
- Message(content=structural_context, role="user"),
- ]
- code = await WriteCodeWithoutTools().run(context=context)
- code = code["code"]
- print(code)
- assert "pandas" not in code and "read_csv" not in code # should reuse import and read statement from previous one
-
-
-@pytest.mark.skip
-@pytest.mark.asyncio
-async def test_write_code_reuse_code_long():
- """test code reuse for long context"""
-
- structural_context = """
- ## User Requirement
- Run data analysis on sklearn Iris dataset, include a plot
- ## Current Plan
- [
- {
- "task_id": "1",
- "dependent_task_ids": [],
- "instruction": "Load the Iris dataset from sklearn.",
- "task_type": "",
- "code": "from sklearn.datasets import load_iris\niris_data = load_iris()\niris_data['data'][0:5], iris_data['target'][0:5]",
- "result": "(array([[5.1, 3.5, 1.4, 0.2],\n [4.9, 3. , 1.4, 0.2],\n [4.7, 3.2, 1.3, 0.2],\n [4.6, 3.1, 1.5, 0.2],\n [5. , 3.6, 1.4, 0.2]]),\n array([0, 0, 0, 0, 0]))",
- "is_finished": true
- },
- {
- "task_id": "2",
- "dependent_task_ids": [
- "1"
- ],
- "instruction": "Perform exploratory data analysis on the Iris dataset.",
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- },
- {
- "task_id": "3",
- "dependent_task_ids": [
- "2"
- ],
- "instruction": "Create a plot visualizing the Iris dataset features.",
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- }
- ]
- ## Current Task
- {"task_id": "2", "dependent_task_ids": ["1"], "instruction": "Perform exploratory data analysis on the Iris dataset.", "task_type": "", "code": "", "result": "", "is_finished": false}
- """
- context = [
- Message(content=structural_context, role="user"),
- ]
- trials_num = 5
- trials = [WriteCodeWithoutTools().run(context=context, temperature=0.0) for _ in range(trials_num)]
- trial_results = await asyncio.gather(*trials)
- print(*trial_results, sep="\n\n***\n\n")
- success = [
- "load_iris" not in result["code"] and "iris_data" in result["code"] for result in trial_results
- ] # should reuse iris_data from previous tasks
- success_rate = sum(success) / trials_num
- logger.info(f"success rate: {success_rate :.2f}")
- assert success_rate >= 0.8
-
-
-@pytest.mark.skip
-@pytest.mark.asyncio
-async def test_write_code_reuse_code_long_for_wine():
- """test code reuse for long context"""
-
- structural_context = """
- ## User Requirement
- Run data analysis on sklearn Wisconsin Breast Cancer dataset, include a plot, train a model to predict targets (20% as validation), and show validation accuracy
- ## Current Plan
- [
- {
- "task_id": "1",
- "dependent_task_ids": [],
- "instruction": "Load the sklearn Wine recognition dataset and perform exploratory data analysis."
- "task_type": "",
- "code": "from sklearn.datasets import load_wine\n# Load the Wine recognition dataset\nwine_data = load_wine()\n# Perform exploratory data analysis\nwine_data.keys()",
- "result": "Truncated to show only the last 1000 characters\ndict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names'])",
- "is_finished": true
- },
- {
- "task_id": "2",
- "dependent_task_ids": ["1"],
- "instruction": "Create a plot to visualize some aspect of the wine dataset."
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- },
- {
- "task_id": "3",
- "dependent_task_ids": ["1"],
- "instruction": "Split the dataset into training and validation sets with a 20% validation size.",
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- },
- {
- "task_id": "4",
- "dependent_task_ids": ["3"],
- "instruction": "Train a model on the training set to predict wine class.",
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- },
- {
- "task_id": "5",
- "dependent_task_ids": ["4"],
- "instruction": "Evaluate the model on the validation set and report the accuracy.",
- "task_type": "",
- "code": "",
- "result": "",
- "is_finished": false
- }
- ]
- ## Current Task
- {"task_id": "2", "dependent_task_ids": ["1"], "instruction": "Create a plot to visualize some aspect of the Wine dataset.", "task_type": "", "code": "", "result": "", "is_finished": false}
- """
- context = [
- Message(content=structural_context, role="user"),
- ]
- trials_num = 5
- trials = [WriteCodeWithoutTools().run(context=context, temperature=0.0) for _ in range(trials_num)]
- trial_results = await asyncio.gather(*trials)
- print(*trial_results, sep="\n\n***\n\n")
- success = [
- "load_wine" not in result["code"] and "wine_data" in result["code"] for result in trial_results
- ] # should reuse iris_data from previous tasks
- success_rate = sum(success) / trials_num
- logger.info(f"success rate: {success_rate :.2f}")
- assert success_rate >= 0.8
diff --git a/tests/metagpt/actions/ci/test_ask_review.py b/tests/metagpt/actions/di/test_ask_review.py
similarity index 84%
rename from tests/metagpt/actions/ci/test_ask_review.py
rename to tests/metagpt/actions/di/test_ask_review.py
index 4f02fe10b..6bb1accf5 100644
--- a/tests/metagpt/actions/ci/test_ask_review.py
+++ b/tests/metagpt/actions/di/test_ask_review.py
@@ -1,6 +1,6 @@
import pytest
-from metagpt.actions.ci.ask_review import AskReview
+from metagpt.actions.di.ask_review import AskReview
@pytest.mark.asyncio
diff --git a/tests/metagpt/actions/ci/test_execute_nb_code.py b/tests/metagpt/actions/di/test_execute_nb_code.py
similarity index 65%
rename from tests/metagpt/actions/ci/test_execute_nb_code.py
rename to tests/metagpt/actions/di/test_execute_nb_code.py
index 72a85dd08..b206046d7 100644
--- a/tests/metagpt/actions/ci/test_execute_nb_code.py
+++ b/tests/metagpt/actions/di/test_execute_nb_code.py
@@ -1,6 +1,6 @@
import pytest
-from metagpt.actions.ci.execute_nb_code import ExecuteNbCode, truncate
+from metagpt.actions.di.execute_nb_code import ExecuteNbCode
@pytest.mark.asyncio
@@ -8,6 +8,7 @@ async def test_code_running():
executor = ExecuteNbCode()
output, is_success = await executor.run("print('hello world!')")
assert is_success
+ await executor.terminate()
@pytest.mark.asyncio
@@ -17,6 +18,7 @@ async def test_split_code_running():
_ = await executor.run("z=x+y")
output, is_success = await executor.run("assert z==3")
assert is_success
+ await executor.terminate()
@pytest.mark.asyncio
@@ -24,6 +26,7 @@ async def test_execute_error():
executor = ExecuteNbCode()
output, is_success = await executor.run("z=1/0")
assert not is_success
+ await executor.terminate()
PLOT_CODE = """
@@ -52,21 +55,7 @@ async def test_plotting_code():
executor = ExecuteNbCode()
output, is_success = await executor.run(PLOT_CODE)
assert is_success
-
-
-def test_truncate():
- # 代码执行成功
- output, is_success = truncate("hello world", 5, True)
- assert "Truncated to show only first 5 characters\nhello" in output
- assert is_success
- # 代码执行失败
- output, is_success = truncate("hello world", 5, False)
- assert "Truncated to show only last 5 characters\nworld" in output
- assert not is_success
- # 异步
- output, is_success = truncate("1 to test terminate under continuous run
+async def test_terminate(k):
+ for _ in range(k):
+ executor = ExecuteNbCode()
+ await executor.run(code='print("This is a code!")', language="python")
+ is_kernel_alive = await executor.nb_client.km.is_alive()
+ assert is_kernel_alive
+ await executor.terminate()
+ assert executor.nb_client.km is None
+ assert executor.nb_client.kc is None
@pytest.mark.asyncio
@@ -114,3 +107,22 @@ async def test_reset():
assert is_kernel_alive
await executor.reset()
assert executor.nb_client.km is None
+ await executor.terminate()
+
+
+@pytest.mark.asyncio
+async def test_parse_outputs():
+ executor = ExecuteNbCode()
+ code = """
+ import pandas as pd
+ df = pd.DataFrame({'ID': [1,2,3], 'NAME': ['a', 'b', 'c']})
+ print(df.columns)
+ print(f"columns num:{len(df.columns)}")
+ print(df['DUMMPY_ID'])
+ """
+ output, is_success = await executor.run(code)
+ assert not is_success
+ assert "Index(['ID', 'NAME'], dtype='object')" in output
+ assert "KeyError: 'DUMMPY_ID'" in output
+ assert "columns num:2" in output
+ await executor.terminate()
diff --git a/tests/metagpt/actions/di/test_write_analysis_code.py b/tests/metagpt/actions/di/test_write_analysis_code.py
new file mode 100644
index 000000000..2996f31f7
--- /dev/null
+++ b/tests/metagpt/actions/di/test_write_analysis_code.py
@@ -0,0 +1,79 @@
+import pytest
+
+from metagpt.actions.di.write_analysis_code import WriteAnalysisCode
+from metagpt.schema import Message
+
+
+@pytest.mark.asyncio
+async def test_write_code_with_plan():
+ write_code = WriteAnalysisCode()
+
+ user_requirement = "Run data analysis on sklearn Iris dataset, include a plot"
+ plan_status = "\n## Finished Tasks\n### code\n```python\n\n```\n\n### execution result\n\n\n## Current Task\nLoad the sklearn Iris dataset and perform exploratory data analysis\n\n## Task Guidance\nWrite complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.\nSpecifically, \nThe current task is about exploratory data analysis, please note the following:\n- Distinguish column types with `select_dtypes` for tailored analysis and visualization, such as correlation.\n- Remember to `import numpy as np` before using Numpy functions.\n\n"
+
+ code = await write_code.run(user_requirement=user_requirement, plan_status=plan_status)
+ assert len(code) > 0
+ assert "sklearn" in code
+
+
+@pytest.mark.asyncio
+async def test_write_code_with_tools():
+ write_code = WriteAnalysisCode()
+
+ user_requirement = "Preprocess sklearn Wine recognition dataset and train a model to predict wine class (20% as validation), and show validation accuracy."
+ tool_info = """
+ ## Capabilities
+ - You can utilize pre-defined tools in any code lines from 'Available Tools' in the form of Python class or function.
+ - You can freely combine the use of any other public packages, like sklearn, numpy, pandas, etc..
+
+ ## Available Tools:
+ Each tool is described in JSON format. When you call a tool, import the tool from its path first.
+ {'FillMissingValue': {'type': 'class', 'description': 'Completing missing values with simple strategies.', 'methods': {'__init__': {'type': 'function', 'description': 'Initialize self. ', 'signature': '(self, features: \'list\', strategy: "Literal[\'mean\', \'median\', \'most_frequent\', \'constant\']" = \'mean\', fill_value=None)', 'parameters': 'Args: features (list): Columns to be processed. strategy (Literal["mean", "median", "most_frequent", "constant"], optional): The imputation strategy, notice \'mean\' and \'median\' can only be used for numeric features. Defaults to \'mean\'. fill_value (int, optional): Fill_value is used to replace all occurrences of missing_values. Defaults to None.'}, 'fit': {'type': 'function', 'description': 'Fit a model to be used in subsequent transform. ', 'signature': "(self, df: 'pd.DataFrame')", 'parameters': 'Args: df (pd.DataFrame): The input DataFrame.'}, 'fit_transform': {'type': 'function', 'description': 'Fit and transform the input DataFrame. ', 'signature': "(self, df: 'pd.DataFrame') -> 'pd.DataFrame'", 'parameters': 'Args: df (pd.DataFrame): The input DataFrame. Returns: pd.DataFrame: The transformed DataFrame.'}, 'transform': {'type': 'function', 'description': 'Transform the input DataFrame with the fitted model. ', 'signature': "(self, df: 'pd.DataFrame') -> 'pd.DataFrame'", 'parameters': 'Args: df (pd.DataFrame): The input DataFrame. Returns: pd.DataFrame: The transformed DataFrame.'}}, 'tool_path': 'metagpt/tools/libs/data_preprocess.py'}
+ """
+
+ code = await write_code.run(user_requirement=user_requirement, tool_info=tool_info)
+ assert len(code) > 0
+ assert "metagpt.tools.libs" in code
+
+
+@pytest.mark.asyncio
+async def test_debug_with_reflection():
+ user_requirement = "read a dataset test.csv and print its head"
+
+ plan_status = """
+ ## Finished Tasks
+ ### code
+ ```python
+ ```
+
+ ### execution result
+
+ ## Current Task
+ import pandas and load the dataset from 'test.csv'.
+
+ ## Task Guidance
+ Write complete code for 'Current Task'. And avoid duplicating code from 'Finished Tasks', such as repeated import of packages, reading data, etc.
+ Specifically,
+ """
+
+ wrong_code = """import pandas as pd\ndata = pd.read_excel('test.csv')\ndata""" # use read_excel to read a csv
+ error = """
+ Traceback (most recent call last):
+ File "", line 2, in
+ File "/Users/gary/miniconda3/envs/py39_scratch/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 478, in read_excel
+ io = ExcelFile(io, storage_options=storage_options, engine=engine)
+ File "/Users/gary/miniconda3/envs/py39_scratch/lib/python3.9/site-packages/pandas/io/excel/_base.py", line 1500, in __init__
+ raise ValueError(
+ ValueError: Excel file format cannot be determined, you must specify an engine manually.
+ """
+ working_memory = [
+ Message(content=wrong_code, role="assistant"),
+ Message(content=error, role="user"),
+ ]
+ new_code = await WriteAnalysisCode().run(
+ user_requirement=user_requirement,
+ plan_status=plan_status,
+ working_memory=working_memory,
+ use_reflection=True,
+ )
+ assert "read_csv" in new_code # should correct read_excel to read_csv
diff --git a/tests/metagpt/actions/ci/test_write_plan.py b/tests/metagpt/actions/di/test_write_plan.py
similarity index 68%
rename from tests/metagpt/actions/ci/test_write_plan.py
rename to tests/metagpt/actions/di/test_write_plan.py
index 3eb80ca3e..cad0c8a71 100644
--- a/tests/metagpt/actions/ci/test_write_plan.py
+++ b/tests/metagpt/actions/di/test_write_plan.py
@@ -1,6 +1,6 @@
import pytest
-from metagpt.actions.ci.write_plan import (
+from metagpt.actions.di.write_plan import (
Plan,
Task,
WritePlan,
@@ -23,12 +23,10 @@ def test_precheck_update_plan_from_rsp():
@pytest.mark.asyncio
-@pytest.mark.parametrize("use_tools", [(False), (True)])
-async def test_write_plan(use_tools):
+async def test_write_plan():
rsp = await WritePlan().run(
- context=[Message("run analysis on sklearn iris dataset", role="user")], use_tools=use_tools
+ context=[Message("Run data analysis on sklearn Iris dataset, include a plot", role="user")]
)
assert "task_id" in rsp
assert "instruction" in rsp
- assert "json" not in rsp # the output should be the content inside ```json ```
diff --git a/tests/metagpt/actions/mock_json.py b/tests/metagpt/actions/mock_json.py
index 875d74d3c..2b354ca6f 100644
--- a/tests/metagpt/actions/mock_json.py
+++ b/tests/metagpt/actions/mock_json.py
@@ -37,7 +37,7 @@ DESIGN = {
}
-TASKS = {
+TASK = {
"Required Python packages": ["pygame==2.0.1"],
"Required Other language third-party packages": ["No third-party dependencies required"],
"Logic Analysis": [
diff --git a/tests/metagpt/actions/test_design_api.py b/tests/metagpt/actions/test_design_api.py
index 7d3efa7ff..9924a2e84 100644
--- a/tests/metagpt/actions/test_design_api.py
+++ b/tests/metagpt/actions/test_design_api.py
@@ -9,8 +9,10 @@
import pytest
from metagpt.actions.design_api import WriteDesign
+from metagpt.llm import LLM
from metagpt.logs import logger
from metagpt.schema import Message
+from tests.data.incremental_dev_project.mock import DESIGN_SAMPLE, REFINED_PRD_JSON
@pytest.mark.asyncio
@@ -25,3 +27,16 @@ async def test_design_api(context):
logger.info(result)
assert result
+
+
+@pytest.mark.asyncio
+async def test_refined_design_api(context):
+ await context.repo.docs.prd.save(filename="1.txt", content=str(REFINED_PRD_JSON))
+ await context.repo.docs.system_design.save(filename="1.txt", content=DESIGN_SAMPLE)
+
+ design_api = WriteDesign(context=context, llm=LLM())
+
+ result = await design_api.run(Message(content="", instruct_content=None))
+ logger.info(result)
+
+ assert result
diff --git a/tests/metagpt/actions/test_project_management.py b/tests/metagpt/actions/test_project_management.py
index f3bb405ca..5d0d11efb 100644
--- a/tests/metagpt/actions/test_project_management.py
+++ b/tests/metagpt/actions/test_project_management.py
@@ -9,13 +9,19 @@
import pytest
from metagpt.actions.project_management import WriteTasks
+from metagpt.llm import LLM
from metagpt.logs import logger
from metagpt.schema import Message
+from tests.data.incremental_dev_project.mock import (
+ REFINED_DESIGN_JSON,
+ REFINED_PRD_JSON,
+ TASK_SAMPLE,
+)
from tests.metagpt.actions.mock_json import DESIGN, PRD
@pytest.mark.asyncio
-async def test_design_api(context):
+async def test_task(context):
await context.repo.docs.prd.save("1.txt", content=str(PRD))
await context.repo.docs.system_design.save("1.txt", content=str(DESIGN))
logger.info(context.git_repo)
@@ -26,3 +32,19 @@ async def test_design_api(context):
logger.info(result)
assert result
+
+
+@pytest.mark.asyncio
+async def test_refined_task(context):
+ await context.repo.docs.prd.save("2.txt", content=str(REFINED_PRD_JSON))
+ await context.repo.docs.system_design.save("2.txt", content=str(REFINED_DESIGN_JSON))
+ await context.repo.docs.task.save("2.txt", content=TASK_SAMPLE)
+
+ logger.info(context.git_repo)
+
+ action = WriteTasks(context=context, llm=LLM())
+
+ result = await action.run(Message(content="", instruct_content=None))
+ logger.info(result)
+
+ assert result
diff --git a/tests/metagpt/actions/test_project_management_an.py b/tests/metagpt/actions/test_project_management_an.py
index ddbb56569..5a65e50c9 100644
--- a/tests/metagpt/actions/test_project_management_an.py
+++ b/tests/metagpt/actions/test_project_management_an.py
@@ -10,13 +10,14 @@ from openai._models import BaseModel
from metagpt.actions.action_node import ActionNode, dict_to_markdown
from metagpt.actions.project_management import NEW_REQ_TEMPLATE
-from metagpt.actions.project_management_an import REFINED_PM_NODE
+from metagpt.actions.project_management_an import PM_NODE, REFINED_PM_NODE
from metagpt.llm import LLM
from tests.data.incremental_dev_project.mock import (
REFINED_DESIGN_JSON,
- REFINED_TASKS_JSON,
- TASKS_SAMPLE,
+ REFINED_TASK_JSON,
+ TASK_SAMPLE,
)
+from tests.metagpt.actions.mock_json import TASK
@pytest.fixture()
@@ -24,20 +25,40 @@ def llm():
return LLM()
-def mock_refined_tasks_json():
- return REFINED_TASKS_JSON
+def mock_refined_task_json():
+ return REFINED_TASK_JSON
+
+
+def mock_task_json():
+ return TASK
@pytest.mark.asyncio
async def test_project_management_an(mocker):
+ root = ActionNode.from_children(
+ "ProjectManagement", [ActionNode(key="", expected_type=str, instruction="", example="")]
+ )
+ root.instruct_content = BaseModel()
+ root.instruct_content.model_dump = mock_task_json
+ mocker.patch("metagpt.actions.project_management_an.PM_NODE.fill", return_value=root)
+
+ node = await PM_NODE.fill(dict_to_markdown(REFINED_DESIGN_JSON), llm)
+
+ assert "Logic Analysis" in node.instruct_content.model_dump()
+ assert "Task list" in node.instruct_content.model_dump()
+ assert "Shared Knowledge" in node.instruct_content.model_dump()
+
+
+@pytest.mark.asyncio
+async def test_project_management_an_inc(mocker):
root = ActionNode.from_children(
"RefinedProjectManagement", [ActionNode(key="", expected_type=str, instruction="", example="")]
)
root.instruct_content = BaseModel()
- root.instruct_content.model_dump = mock_refined_tasks_json
+ root.instruct_content.model_dump = mock_refined_task_json
mocker.patch("metagpt.actions.project_management_an.REFINED_PM_NODE.fill", return_value=root)
- prompt = NEW_REQ_TEMPLATE.format(old_task=TASKS_SAMPLE, context=dict_to_markdown(REFINED_DESIGN_JSON))
+ prompt = NEW_REQ_TEMPLATE.format(old_task=TASK_SAMPLE, context=dict_to_markdown(REFINED_DESIGN_JSON))
node = await REFINED_PM_NODE.fill(prompt, llm)
assert "Refined Logic Analysis" in node.instruct_content.model_dump()
diff --git a/tests/metagpt/actions/test_rebuild_class_view.py b/tests/metagpt/actions/test_rebuild_class_view.py
index 403109cc0..3731cd598 100644
--- a/tests/metagpt/actions/test_rebuild_class_view.py
+++ b/tests/metagpt/actions/test_rebuild_class_view.py
@@ -23,6 +23,8 @@ async def test_rebuild(context):
context=context,
)
await action.run()
+ rows = await action.graph_db.select()
+ assert rows
assert context.repo.docs.graph_repo.changed_files
@@ -45,6 +47,12 @@ def test_align_path(path, direction, diff, want):
("/Users/x/github/MetaGPT/metagpt", "/Users/x/github/MetaGPT/metagpt", "=", "."),
("/Users/x/github/MetaGPT", "/Users/x/github/MetaGPT/metagpt", "-", "metagpt"),
("/Users/x/github/MetaGPT/metagpt", "/Users/x/github/MetaGPT", "+", "metagpt"),
+ (
+ "/Users/x/github/MetaGPT-env/lib/python3.9/site-packages/moviepy",
+ "/Users/x/github/MetaGPT-env/lib/python3.9/site-packages/",
+ "+",
+ "moviepy",
+ ),
],
)
def test_diff_path(path_root, package_root, want_direction, want_diff):
diff --git a/tests/metagpt/actions/test_rebuild_sequence_view.py b/tests/metagpt/actions/test_rebuild_sequence_view.py
index e0e65c3cc..0e10e3776 100644
--- a/tests/metagpt/actions/test_rebuild_sequence_view.py
+++ b/tests/metagpt/actions/test_rebuild_sequence_view.py
@@ -4,6 +4,7 @@
@Time : 2024/1/4
@Author : mashenquan
@File : test_rebuild_sequence_view.py
+@Desc : Unit tests for reconstructing the sequence diagram from a source code project.
"""
from pathlib import Path
@@ -14,25 +15,40 @@ from metagpt.const import GRAPH_REPO_FILE_REPO
from metagpt.llm import LLM
from metagpt.utils.common import aread
from metagpt.utils.git_repository import ChangeType
+from metagpt.utils.graph_repository import SPO
@pytest.mark.asyncio
-@pytest.mark.skip
-async def test_rebuild(context):
+async def test_rebuild(context, mocker):
# Mock
- data = await aread(filename=Path(__file__).parent / "../../data/graph_db/networkx.json")
+ data = await aread(filename=Path(__file__).parent / "../../data/graph_db/networkx.class_view.json")
graph_db_filename = Path(context.repo.workdir.name).with_suffix(".json")
await context.repo.docs.graph_repo.save(filename=str(graph_db_filename), content=data)
context.git_repo.add_change({f"{GRAPH_REPO_FILE_REPO}/{graph_db_filename}": ChangeType.UNTRACTED})
context.git_repo.commit("commit1")
+ # mock_spo = SPO(
+ # subject="metagpt/startup.py:__name__:__main__",
+ # predicate="has_page_info",
+ # object_='{"lineno":78,"end_lineno":79,"type_name":"ast.If","tokens":["__name__","__main__"],"properties":{}}',
+ # )
+ mock_spo = SPO(
+ subject="metagpt/management/skill_manager.py:__name__:__main__",
+ predicate="has_page_info",
+ object_='{"lineno":113,"end_lineno":116,"type_name":"ast.If","tokens":["__name__","__main__"],"properties":{}}',
+ )
+ mocker.patch.object(RebuildSequenceView, "_search_main_entry", return_value=[mock_spo])
action = RebuildSequenceView(
name="RedBean",
- i_context=str(Path(__file__).parent.parent.parent.parent / "metagpt"),
+ i_context=str(
+ Path(__file__).parent.parent.parent.parent / "metagpt/management/skill_manager.py:__name__:__main__"
+ ),
llm=LLM(),
context=context,
)
await action.run()
+ rows = await action.graph_db.select()
+ assert rows
assert context.repo.docs.graph_repo.changed_files
diff --git a/tests/metagpt/actions/test_summarize_code.py b/tests/metagpt/actions/test_summarize_code.py
index a404047c1..89ddab7bc 100644
--- a/tests/metagpt/actions/test_summarize_code.py
+++ b/tests/metagpt/actions/test_summarize_code.py
@@ -6,14 +6,13 @@
@File : test_summarize_code.py
@Modifiled By: mashenquan, 2023-12-6. Unit test for summarize_code.py
"""
-import uuid
-from pathlib import Path
import pytest
from metagpt.actions.summarize_code import SummarizeCode
from metagpt.logs import logger
from metagpt.schema import CodeSummarizeContext
+from tests.mock.mock_llm import MockLLM
DESIGN_CONTENT = """
{"Implementation approach": "To develop this snake game, we will use the Python language and choose the Pygame library. Pygame is an open-source Python module collection specifically designed for writing video games. It provides functionalities such as displaying images and playing sounds, making it suitable for creating intuitive and responsive user interfaces. We will ensure efficient game logic to prevent any delays during gameplay. The scoring system will be simple, with the snake gaining points for each food it eats. We will use Pygame's event handling system to implement pause and resume functionality, as well as high-score tracking. The difficulty will increase by speeding up the snake's movement. In the initial version, we will focus on single-player mode and consider adding multiplayer mode and customizable skins in future updates. Based on the new requirement, we will also add a moving obstacle that appears randomly. If the snake eats this obstacle, the game will end. If the snake does not eat the obstacle, it will disappear after 5 seconds. For this, we need to add mechanisms for obstacle generation, movement, and disappearance in the game logic.", "Project_name": "snake_game", "File list": ["main.py", "game.py", "snake.py", "food.py", "obstacle.py", "scoreboard.py", "constants.py", "assets/styles.css", "assets/index.html"], "Data structures and interfaces": "```mermaid\n classDiagram\n class Game{\n +int score\n +int speed\n +bool game_over\n +bool paused\n +Snake snake\n +Food food\n +Obstacle obstacle\n +Scoreboard scoreboard\n +start_game() void\n +pause_game() void\n +resume_game() void\n +end_game() void\n +increase_difficulty() void\n +update() void\n +render() void\n Game()\n }\n class Snake{\n +list body_parts\n +str direction\n +bool grow\n +move() void\n +grow() void\n +check_collision() bool\n Snake()\n }\n class Food{\n +tuple position\n +spawn() void\n Food()\n }\n class Obstacle{\n +tuple position\n +int lifetime\n +bool active\n +spawn() void\n +move() void\n +check_collision() bool\n +disappear() void\n Obstacle()\n }\n class Scoreboard{\n +int high_score\n +update_score(int) void\n +reset_score() void\n +load_high_score() void\n +save_high_score() void\n Scoreboard()\n }\n class Constants{\n }\n Game \"1\" -- \"1\" Snake: has\n Game \"1\" -- \"1\" Food: has\n Game \"1\" -- \"1\" Obstacle: has\n Game \"1\" -- \"1\" Scoreboard: has\n ```", "Program call flow": "```sequenceDiagram\n participant M as Main\n participant G as Game\n participant S as Snake\n participant F as Food\n participant O as Obstacle\n participant SB as Scoreboard\n M->>G: start_game()\n loop game loop\n G->>S: move()\n G->>S: check_collision()\n G->>F: spawn()\n G->>O: spawn()\n G->>O: move()\n G->>O: check_collision()\n G->>O: disappear()\n G->>SB: update_score(score)\n G->>G: update()\n G->>G: render()\n alt if paused\n M->>G: pause_game()\n M->>G: resume_game()\n end\n alt if game_over\n G->>M: end_game()\n end\n end\n```", "Anything UNCLEAR": "There is no need for further clarification as the requirements are already clear."}
@@ -175,12 +174,87 @@ class Snake:
"""
+mock_rsp = """
+```mermaid
+classDiagram
+ class Game{
+ +int score
+ +int level
+ +Snake snake
+ +Food food
+ +start_game() void
+ +initialize_game() void
+ +game_loop() void
+ +update() void
+ +draw() void
+ +handle_events() void
+ +check_collision() void
+ +increase_score() void
+ +increase_level() void
+ +game_over() void
+ Game()
+ }
+ class Snake{
+ +list body
+ +tuple direction
+ +move() void
+ +change_direction(direction: str) void
+ +grow() void
+ +get_head() tuple
+ +get_body() list
+ Snake()
+ }
+ class Food{
+ +tuple position
+ +generate() void
+ +get_position() tuple
+ Food()
+ }
+ Game "1" -- "1" Snake: has
+ Game "1" -- "1" Food: has
+```
+
+```sequenceDiagram
+participant M as Main
+participant G as Game
+participant S as Snake
+participant F as Food
+M->>G: start_game()
+G->>G: initialize_game()
+G->>G: game_loop()
+G->>S: move()
+G->>S: change_direction()
+G->>S: grow()
+G->>F: generate()
+S->>S: move()
+S->>S: change_direction()
+S->>S: grow()
+F->>F: generate()
+```
+
+## Summary
+The code consists of the main game logic, including the Game, Snake, and Food classes. The game loop is responsible for updating and drawing the game elements, handling events, checking collisions, and managing the game state. The Snake class handles the movement, growth, and direction changes of the snake, while the Food class is responsible for generating and tracking the position of food items.
+
+## TODOs
+- Modify 'game.py' to add the implementation of obstacle handling and interaction with the game loop.
+- Implement 'obstacle.py' to include the methods for spawning, moving, and disappearing of obstacles, as well as collision detection with the snake.
+- Update 'main.py' to initialize the obstacle and incorporate it into the game loop.
+- Update the mermaid call flow diagram to include the interaction with the obstacle.
+
+```python
+{
+ "files_to_modify": {
+ "game.py": "Add obstacle handling and interaction with the game loop",
+ "obstacle.py": "Implement obstacle class with necessary methods",
+ "main.py": "Initialize the obstacle and incorporate it into the game loop"
+ }
+}
+```
+"""
+
@pytest.mark.asyncio
-async def test_summarize_code(context):
- git_dir = Path(__file__).parent / f"unittest/{uuid.uuid4().hex}"
- git_dir.mkdir(parents=True, exist_ok=True)
-
+async def test_summarize_code(context, mocker):
context.src_workspace = context.git_repo.workdir / "src"
await context.repo.docs.system_design.save(filename="1.json", content=DESIGN_CONTENT)
await context.repo.docs.task.save(filename="1.json", content=TASK_CONTENT)
@@ -189,6 +263,7 @@ async def test_summarize_code(context):
await context.repo.srcs.save(filename="game.py", content=GAME_PY)
await context.repo.srcs.save(filename="main.py", content=MAIN_PY)
await context.repo.srcs.save(filename="snake.py", content=SNAKE_PY)
+ mocker.patch.object(MockLLM, "_mock_rsp", return_value=mock_rsp)
all_files = context.repo.srcs.all_files
summarization_context = CodeSummarizeContext(
diff --git a/tests/metagpt/actions/test_write_code.py b/tests/metagpt/actions/test_write_code.py
index ee05e0f7d..1709e1f5b 100644
--- a/tests/metagpt/actions/test_write_code.py
+++ b/tests/metagpt/actions/test_write_code.py
@@ -6,7 +6,7 @@
@File : test_write_code.py
@Modifiled By: mashenquan, 2023-12-6. According to RFC 135
"""
-
+import json
from pathlib import Path
import pytest
@@ -14,10 +14,27 @@ import pytest
from metagpt.actions.write_code import WriteCode
from metagpt.logs import logger
from metagpt.schema import CodingContext, Document
-from metagpt.utils.common import aread
+from metagpt.utils.common import CodeParser, aread
+from tests.data.incremental_dev_project.mock import (
+ CODE_PLAN_AND_CHANGE_SAMPLE,
+ REFINED_CODE_INPUT_SAMPLE,
+ REFINED_DESIGN_JSON,
+ REFINED_TASK_JSON,
+)
from tests.metagpt.actions.mock_markdown import TASKS_2, WRITE_CODE_PROMPT_SAMPLE
+def setup_inc_workdir(context, inc: bool = False):
+ """setup incremental workdir for testing"""
+ context.src_workspace = context.git_repo.workdir / "src"
+ if inc:
+ context.config.inc = inc
+ context.repo.old_workspace = context.repo.git_repo.workdir / "old"
+ context.config.project_path = "old"
+
+ return context
+
+
@pytest.mark.asyncio
async def test_write_code(context):
# Prerequisites
@@ -81,5 +98,66 @@ async def test_write_code_deps(context):
assert rsp.code_doc.content
+@pytest.mark.asyncio
+async def test_write_refined_code(context, git_dir):
+ # Prerequisites
+ context = setup_inc_workdir(context, inc=True)
+ await context.repo.docs.system_design.save(filename="1.json", content=json.dumps(REFINED_DESIGN_JSON))
+ await context.repo.docs.task.save(filename="1.json", content=json.dumps(REFINED_TASK_JSON))
+ await context.repo.docs.code_plan_and_change.save(
+ filename="1.json", content=json.dumps(CODE_PLAN_AND_CHANGE_SAMPLE)
+ )
+
+ # old_workspace contains the legacy code
+ await context.repo.with_src_path(context.repo.old_workspace).srcs.save(
+ filename="game.py", content=CodeParser.parse_code(block="", text=REFINED_CODE_INPUT_SAMPLE)
+ )
+
+ ccontext = CodingContext(
+ filename="game.py",
+ design_doc=await context.repo.docs.system_design.get(filename="1.json"),
+ task_doc=await context.repo.docs.task.get(filename="1.json"),
+ code_plan_and_change_doc=await context.repo.docs.code_plan_and_change.get(filename="1.json"),
+ code_doc=Document(filename="game.py", content="", root_path="src"),
+ )
+ coding_doc = Document(root_path="src", filename="game.py", content=ccontext.json())
+
+ action = WriteCode(i_context=coding_doc, context=context)
+ rsp = await action.run()
+ assert rsp
+ assert rsp.code_doc.content
+
+
+@pytest.mark.asyncio
+async def test_get_codes(context):
+ # Prerequisites
+ context = setup_inc_workdir(context, inc=True)
+ for filename in ["game.py", "ui.py"]:
+ await context.repo.with_src_path(context.src_workspace).srcs.save(
+ filename=filename, content=f"# {filename}\nnew code ..."
+ )
+ await context.repo.with_src_path(context.repo.old_workspace).srcs.save(
+ filename=filename, content=f"# {filename}\nlegacy code ..."
+ )
+
+ await context.repo.with_src_path(context.repo.old_workspace).srcs.save(
+ filename="gui.py", content="# gui.py\nlegacy code ..."
+ )
+ await context.repo.with_src_path(context.repo.old_workspace).srcs.save(
+ filename="main.py", content='# main.py\nif __name__ == "__main__":\n main()'
+ )
+ task_doc = Document(filename="1.json", content=json.dumps(REFINED_TASK_JSON))
+
+ context.repo = context.repo.with_src_path(context.src_workspace)
+ # Ready to write gui.py
+ codes = await WriteCode.get_codes(task_doc=task_doc, exclude="gui.py", project_repo=context.repo)
+ codes_inc = await WriteCode.get_codes(task_doc=task_doc, exclude="gui.py", project_repo=context.repo, use_inc=True)
+
+ logger.info(codes)
+ logger.info(codes_inc)
+ assert codes
+ assert codes_inc
+
+
if __name__ == "__main__":
pytest.main([__file__, "-s"])
diff --git a/tests/metagpt/actions/test_write_code_plan_and_change_an.py b/tests/metagpt/actions/test_write_code_plan_and_change_an.py
index 9cd51398f..5c262b4b7 100644
--- a/tests/metagpt/actions/test_write_code_plan_and_change_an.py
+++ b/tests/metagpt/actions/test_write_code_plan_and_change_an.py
@@ -5,6 +5,8 @@
@Author : mannaandpoem
@File : test_write_code_plan_and_change_an.py
"""
+import json
+
import pytest
from openai._models import BaseModel
@@ -14,15 +16,21 @@ from metagpt.actions.write_code_plan_and_change_an import (
REFINED_TEMPLATE,
WriteCodePlanAndChange,
)
+from metagpt.logs import logger
from metagpt.schema import CodePlanAndChangeContext
+from metagpt.utils.common import CodeParser
from tests.data.incremental_dev_project.mock import (
CODE_PLAN_AND_CHANGE_SAMPLE,
DESIGN_SAMPLE,
NEW_REQUIREMENT_SAMPLE,
REFINED_CODE_INPUT_SAMPLE,
REFINED_CODE_SAMPLE,
- TASKS_SAMPLE,
+ REFINED_DESIGN_JSON,
+ REFINED_PRD_JSON,
+ REFINED_TASK_JSON,
+ TASK_SAMPLE,
)
+from tests.metagpt.actions.test_write_code import setup_inc_workdir
def mock_code_plan_and_change():
@@ -30,27 +38,35 @@ def mock_code_plan_and_change():
@pytest.mark.asyncio
-async def test_write_code_plan_and_change_an(mocker):
+async def test_write_code_plan_and_change_an(mocker, context, git_dir):
+ context = setup_inc_workdir(context, inc=True)
+ await context.repo.docs.prd.save(filename="2.json", content=json.dumps(REFINED_PRD_JSON))
+ await context.repo.docs.system_design.save(filename="2.json", content=json.dumps(REFINED_DESIGN_JSON))
+ await context.repo.docs.task.save(filename="2.json", content=json.dumps(REFINED_TASK_JSON))
+
+ await context.repo.with_src_path(context.repo.old_workspace).srcs.save(
+ filename="game.py", content=CodeParser.parse_code(block="", text=REFINED_CODE_INPUT_SAMPLE)
+ )
+
root = ActionNode.from_children(
"WriteCodePlanAndChange", [ActionNode(key="", expected_type=str, instruction="", example="")]
)
root.instruct_content = BaseModel()
root.instruct_content.model_dump = mock_code_plan_and_change
- mocker.patch("metagpt.actions.write_code_plan_and_change_an.WriteCodePlanAndChange.run", return_value=root)
-
- requirement = "New requirement"
- prd_filename = "prd.md"
- design_filename = "design.md"
- task_filename = "task.md"
- code_plan_and_change_context = CodePlanAndChangeContext(
- requirement=requirement,
- prd_filename=prd_filename,
- design_filename=design_filename,
- task_filename=task_filename,
+ mocker.patch(
+ "metagpt.actions.write_code_plan_and_change_an.WRITE_CODE_PLAN_AND_CHANGE_NODE.fill", return_value=root
)
- node = await WriteCodePlanAndChange(i_context=code_plan_and_change_context).run()
- assert "Code Plan And Change" in node.instruct_content.model_dump()
+ code_plan_and_change_context = CodePlanAndChangeContext(
+ requirement="New requirement",
+ prd_filename="2.json",
+ design_filename="2.json",
+ task_filename="2.json",
+ )
+ node = await WriteCodePlanAndChange(i_context=code_plan_and_change_context, context=context).run()
+
+ assert "Development Plan" in node.instruct_content.model_dump()
+ assert "Incremental Change" in node.instruct_content.model_dump()
@pytest.mark.asyncio
@@ -60,7 +76,7 @@ async def test_refine_code(mocker):
user_requirement=NEW_REQUIREMENT_SAMPLE,
code_plan_and_change=CODE_PLAN_AND_CHANGE_SAMPLE,
design=DESIGN_SAMPLE,
- task=TASKS_SAMPLE,
+ task=TASK_SAMPLE,
code=REFINED_CODE_INPUT_SAMPLE,
logs="",
feedback="",
@@ -69,3 +85,25 @@ async def test_refine_code(mocker):
)
code = await WriteCode().write_code(prompt=prompt)
assert "def" in code
+
+
+@pytest.mark.asyncio
+async def test_get_old_code(context, git_dir):
+ context = setup_inc_workdir(context, inc=True)
+ await context.repo.with_src_path(context.repo.old_workspace).srcs.save(
+ filename="game.py", content=REFINED_CODE_INPUT_SAMPLE
+ )
+
+ code_plan_and_change_context = CodePlanAndChangeContext(
+ requirement="New requirement",
+ prd_filename="1.json",
+ design_filename="1.json",
+ task_filename="1.json",
+ )
+ action = WriteCodePlanAndChange(context=context, i_context=code_plan_and_change_context)
+
+ old_codes = await action.get_old_codes()
+ logger.info(old_codes)
+
+ assert "def" in old_codes
+ assert "class" in old_codes
diff --git a/tests/metagpt/actions/test_write_code_review.py b/tests/metagpt/actions/test_write_code_review.py
index a08dd07bc..047d5e6ca 100644
--- a/tests/metagpt/actions/test_write_code_review.py
+++ b/tests/metagpt/actions/test_write_code_review.py
@@ -32,5 +32,28 @@ def add(a, b):
print(f"输出内容: {captured.out}")
+@pytest.mark.asyncio
+async def test_write_code_review_inc(capfd, context):
+ context.src_workspace = context.repo.workdir / "srcs"
+ context.config.inc = True
+ code = """
+ def add(a, b):
+ return a +
+ """
+ code_plan_and_change = """
+ def add(a, b):
+- return a +
++ return a + b
+ """
+ coding_context = CodingContext(
+ filename="math.py",
+ design_doc=Document(content="编写一个从a加b的函数,返回a+b"),
+ code_doc=Document(content=code),
+ code_plan_and_change_doc=Document(content=code_plan_and_change),
+ )
+
+ await WriteCodeReview(i_context=coding_context, context=context).run()
+
+
if __name__ == "__main__":
pytest.main([__file__, "-s"])
diff --git a/tests/metagpt/actions/test_write_prd.py b/tests/metagpt/actions/test_write_prd.py
index 31d20018e..43aa336b7 100644
--- a/tests/metagpt/actions/test_write_prd.py
+++ b/tests/metagpt/actions/test_write_prd.py
@@ -6,6 +6,7 @@
@File : test_write_prd.py
@Modified By: mashenquan, 2023-11-1. According to Chapter 2.2.1 and 2.2.2 of RFC 116, replace `handle` with `run`.
"""
+
import pytest
from metagpt.actions import UserRequirement, WritePRD
@@ -15,6 +16,8 @@ from metagpt.roles.product_manager import ProductManager
from metagpt.roles.role import RoleReactMode
from metagpt.schema import Message
from metagpt.utils.common import any_to_str
+from tests.data.incremental_dev_project.mock import NEW_REQUIREMENT_SAMPLE, PRD_SAMPLE
+from tests.metagpt.actions.test_write_code import setup_inc_workdir
@pytest.mark.asyncio
@@ -34,5 +37,41 @@ async def test_write_prd(new_filename, context):
assert product_manager.context.repo.docs.prd.changed_files
+@pytest.mark.asyncio
+async def test_write_prd_inc(new_filename, context, git_dir):
+ context = setup_inc_workdir(context, inc=True)
+ await context.repo.docs.prd.save("1.txt", PRD_SAMPLE)
+ await context.repo.docs.save(filename=REQUIREMENT_FILENAME, content=NEW_REQUIREMENT_SAMPLE)
+
+ action = WritePRD(context=context)
+ prd = await action.run(Message(content=NEW_REQUIREMENT_SAMPLE, instruct_content=None))
+ logger.info(NEW_REQUIREMENT_SAMPLE)
+ logger.info(prd)
+
+ # Assert the prd is not None or empty
+ assert prd is not None
+ assert prd.content != ""
+ assert "Refined Requirements" in prd.content
+
+
+@pytest.mark.asyncio
+async def test_fix_debug(new_filename, context, git_dir):
+ context.src_workspace = context.git_repo.workdir / context.git_repo.workdir.name
+
+ await context.repo.with_src_path(context.src_workspace).srcs.save(
+ filename="main.py", content='if __name__ == "__main__":\nmain()'
+ )
+ requirements = "Please fix the bug in the code."
+ await context.repo.docs.save(filename=REQUIREMENT_FILENAME, content=requirements)
+ action = WritePRD(context=context)
+
+ prd = await action.run(Message(content=requirements, instruct_content=None))
+ logger.info(prd)
+
+ # Assert the prd is not None or empty
+ assert prd is not None
+ assert prd.content != ""
+
+
if __name__ == "__main__":
pytest.main([__file__, "-s"])
diff --git a/tests/metagpt/document_store/test_chromadb_store.py b/tests/metagpt/document_store/test_chromadb_store.py
index fd115dcdd..70b30d814 100644
--- a/tests/metagpt/document_store/test_chromadb_store.py
+++ b/tests/metagpt/document_store/test_chromadb_store.py
@@ -12,7 +12,7 @@ from metagpt.document_store.chromadb_store import ChromaStore
def test_chroma_store():
"""FIXME:chroma使用感觉很诡异,一用Python就挂,测试用例里也是"""
# 创建 ChromaStore 实例,使用 'sample_collection' 集合
- document_store = ChromaStore("sample_collection_1")
+ document_store = ChromaStore("sample_collection_1", get_or_create=True)
# 使用 write 方法添加多个文档
document_store.write(
diff --git a/tests/metagpt/document_store/test_faiss_store.py b/tests/metagpt/document_store/test_faiss_store.py
index 7e2979bd4..a93b5f145 100644
--- a/tests/metagpt/document_store/test_faiss_store.py
+++ b/tests/metagpt/document_store/test_faiss_store.py
@@ -6,6 +6,7 @@
@File : test_faiss_store.py
"""
+import numpy as np
import pytest
from metagpt.const import EXAMPLE_PATH
@@ -14,9 +15,24 @@ from metagpt.logs import logger
from metagpt.roles import Sales
+def mock_openai_embed_documents(self, texts: list[str], show_progress: bool = False) -> list[list[float]]:
+ num = len(texts)
+ embeds = np.random.randint(1, 100, size=(num, 1536)) # 1536: openai embedding dim
+ embeds = (embeds - embeds.mean(axis=0)) / embeds.std(axis=0)
+ return embeds.tolist()
+
+
+def mock_openai_embed_document(self, text: str) -> list[float]:
+ embeds = mock_openai_embed_documents(self, [text])
+ return embeds[0]
+
+
@pytest.mark.asyncio
-async def test_search_json():
- store = FaissStore(EXAMPLE_PATH / "example.json")
+async def test_search_json(mocker):
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embeddings", mock_openai_embed_documents)
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embedding", mock_openai_embed_document)
+
+ store = FaissStore(EXAMPLE_PATH / "data/search_kb/example.json")
role = Sales(profile="Sales", store=store)
query = "Which facial cleanser is good for oily skin?"
result = await role.run(query)
@@ -24,8 +40,11 @@ async def test_search_json():
@pytest.mark.asyncio
-async def test_search_xlsx():
- store = FaissStore(EXAMPLE_PATH / "example.xlsx")
+async def test_search_xlsx(mocker):
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embeddings", mock_openai_embed_documents)
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embedding", mock_openai_embed_document)
+
+ store = FaissStore(EXAMPLE_PATH / "data/search_kb/example.xlsx", meta_col="Answer", content_col="Question")
role = Sales(profile="Sales", store=store)
query = "Which facial cleanser is good for oily skin?"
result = await role.run(query)
@@ -33,8 +52,11 @@ async def test_search_xlsx():
@pytest.mark.asyncio
-async def test_write():
- store = FaissStore(EXAMPLE_PATH / "example.xlsx", meta_col="Answer", content_col="Question")
+async def test_write(mocker):
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embeddings", mock_openai_embed_documents)
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embedding", mock_openai_embed_document)
+
+ store = FaissStore(EXAMPLE_PATH / "data/search_kb/example.xlsx", meta_col="Answer", content_col="Question")
_faiss_store = store.write()
- assert _faiss_store.docstore
- assert _faiss_store.index
+ assert _faiss_store.storage_context.docstore
+ assert _faiss_store.storage_context.vector_store.client
diff --git a/tests/metagpt/environment/mincraft_env/test_mincraft_ext_env.py b/tests/metagpt/environment/mincraft_env/test_mincraft_ext_env.py
deleted file mode 100644
index ad3376141..000000000
--- a/tests/metagpt/environment/mincraft_env/test_mincraft_ext_env.py
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# @Desc : the unittest of MincraftExtEnv
-
-
-from metagpt.environment.mincraft_env.const import MC_CKPT_DIR
-from metagpt.environment.mincraft_env.mincraft_ext_env import MincraftExtEnv
-
-
-def test_mincraft_ext_env():
- ext_env = MincraftExtEnv()
- assert ext_env.server, f"{ext_env.server_host}:{ext_env.server_port}"
- assert MC_CKPT_DIR.joinpath("skill/code").exists()
- assert ext_env.warm_up.get("optional_inventory_items") == 7
diff --git a/tests/metagpt/environment/mincraft_env/__init__.py b/tests/metagpt/environment/minecraft_env/__init__.py
similarity index 100%
rename from tests/metagpt/environment/mincraft_env/__init__.py
rename to tests/metagpt/environment/minecraft_env/__init__.py
diff --git a/tests/metagpt/environment/minecraft_env/test_minecraft_ext_env.py b/tests/metagpt/environment/minecraft_env/test_minecraft_ext_env.py
new file mode 100644
index 000000000..ed08b719f
--- /dev/null
+++ b/tests/metagpt/environment/minecraft_env/test_minecraft_ext_env.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @Desc : the unittest of MinecraftExtEnv
+
+
+from metagpt.environment.minecraft_env.const import MC_CKPT_DIR
+from metagpt.environment.minecraft_env.minecraft_ext_env import MinecraftExtEnv
+
+
+def test_minecraft_ext_env():
+ ext_env = MinecraftExtEnv()
+ assert ext_env.server, f"{ext_env.server_host}:{ext_env.server_port}"
+ assert MC_CKPT_DIR.joinpath("skill/code").exists()
+ assert ext_env.warm_up.get("optional_inventory_items") == 7
diff --git a/tests/metagpt/memory/mock_text_embed.py b/tests/metagpt/memory/mock_text_embed.py
new file mode 100644
index 000000000..2f3ffc434
--- /dev/null
+++ b/tests/metagpt/memory/mock_text_embed.py
@@ -0,0 +1,42 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @Desc :
+
+import numpy as np
+
+dim = 1536 # openai embedding dim
+embed_zeros_arrr = np.zeros(shape=[1, dim]).tolist()
+embed_ones_arrr = np.ones(shape=[1, dim]).tolist()
+
+text_embed_arr = [
+ {"text": "Write a cli snake game", "embed": embed_zeros_arrr}, # mock data, same as below
+ {"text": "Write a game of cli snake", "embed": embed_zeros_arrr},
+ {"text": "Write a 2048 web game", "embed": embed_ones_arrr},
+ {"text": "Write a Battle City", "embed": embed_ones_arrr},
+ {
+ "text": "The user has requested the creation of a command-line interface (CLI) snake game",
+ "embed": embed_zeros_arrr,
+ },
+ {"text": "The request is command-line interface (CLI) snake game", "embed": embed_zeros_arrr},
+ {
+ "text": "Incorporate basic features of a snake game such as scoring and increasing difficulty",
+ "embed": embed_ones_arrr,
+ },
+]
+
+text_idx_dict = {item["text"]: idx for idx, item in enumerate(text_embed_arr)}
+
+
+def mock_openai_embed_documents(self, texts: list[str], show_progress: bool = False) -> list[list[float]]:
+ idx = text_idx_dict.get(texts[0])
+ embed = text_embed_arr[idx].get("embed")
+ return embed
+
+
+def mock_openai_embed_document(self, text: str) -> list[float]:
+ embeds = mock_openai_embed_documents(self, [text])
+ return embeds[0]
+
+
+async def mock_openai_aembed_document(self, text: str) -> list[float]:
+ return mock_openai_embed_document(self, text)
diff --git a/tests/metagpt/memory/test_longterm_memory.py b/tests/metagpt/memory/test_longterm_memory.py
index 5c71ddd13..990017fee 100644
--- a/tests/metagpt/memory/test_longterm_memory.py
+++ b/tests/metagpt/memory/test_longterm_memory.py
@@ -4,20 +4,29 @@
@Desc : unittest of `metagpt/memory/longterm_memory.py`
"""
-import os
import pytest
from metagpt.actions import UserRequirement
-from metagpt.config2 import config
from metagpt.memory.longterm_memory import LongTermMemory
from metagpt.roles.role import RoleContext
from metagpt.schema import Message
-
-os.environ.setdefault("OPENAI_API_KEY", config.get_openai_llm().api_key)
+from tests.metagpt.memory.mock_text_embed import (
+ mock_openai_aembed_document,
+ mock_openai_embed_document,
+ mock_openai_embed_documents,
+ text_embed_arr,
+)
-def test_ltm_search():
+@pytest.mark.asyncio
+async def test_ltm_search(mocker):
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embeddings", mock_openai_embed_documents)
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embedding", mock_openai_embed_document)
+ mocker.patch(
+ "llama_index.embeddings.openai.base.OpenAIEmbedding._aget_query_embedding", mock_openai_aembed_document
+ )
+
role_id = "UTUserLtm(Product Manager)"
from metagpt.environment import Environment
@@ -27,41 +36,26 @@ def test_ltm_search():
ltm = LongTermMemory()
ltm.recover_memory(role_id, rc)
- idea = "Write a cli snake game"
+ idea = text_embed_arr[0].get("text", "Write a cli snake game")
message = Message(role="User", content=idea, cause_by=UserRequirement)
- news = ltm.find_news([message])
+ news = await ltm.find_news([message])
assert len(news) == 1
ltm.add(message)
- sim_idea = "Write a game of cli snake"
+ sim_idea = text_embed_arr[1].get("text", "Write a game of cli snake")
sim_message = Message(role="User", content=sim_idea, cause_by=UserRequirement)
- news = ltm.find_news([sim_message])
+ news = await ltm.find_news([sim_message])
assert len(news) == 0
ltm.add(sim_message)
- new_idea = "Write a 2048 web game"
+ new_idea = text_embed_arr[2].get("text", "Write a 2048 web game")
new_message = Message(role="User", content=new_idea, cause_by=UserRequirement)
- news = ltm.find_news([new_message])
+ news = await ltm.find_news([new_message])
assert len(news) == 1
ltm.add(new_message)
- # restore from local index
- ltm_new = LongTermMemory()
- ltm_new.recover_memory(role_id, rc)
- news = ltm_new.find_news([message])
- assert len(news) == 0
-
- ltm_new.recover_memory(role_id, rc)
- news = ltm_new.find_news([sim_message])
- assert len(news) == 0
-
- new_idea = "Write a Battle City"
- new_message = Message(role="User", content=new_idea, cause_by=UserRequirement)
- news = ltm_new.find_news([new_message])
- assert len(news) == 1
-
- ltm_new.clear()
+ ltm.clear()
if __name__ == "__main__":
diff --git a/tests/metagpt/memory/test_memory_storage.py b/tests/metagpt/memory/test_memory_storage.py
index e82a82fc8..09671aaab 100644
--- a/tests/metagpt/memory/test_memory_storage.py
+++ b/tests/metagpt/memory/test_memory_storage.py
@@ -4,56 +4,75 @@
@Desc : the unittests of metagpt/memory/memory_storage.py
"""
-import os
import shutil
from pathlib import Path
from typing import List
+import pytest
+
from metagpt.actions import UserRequirement, WritePRD
from metagpt.actions.action_node import ActionNode
-from metagpt.config2 import config
from metagpt.const import DATA_PATH
from metagpt.memory.memory_storage import MemoryStorage
from metagpt.schema import Message
-
-os.environ.setdefault("OPENAI_API_KEY", config.get_openai_llm().api_key)
+from tests.metagpt.memory.mock_text_embed import (
+ mock_openai_aembed_document,
+ mock_openai_embed_document,
+ mock_openai_embed_documents,
+ text_embed_arr,
+)
-def test_idea_message():
- idea = "Write a cli snake game"
+@pytest.mark.asyncio
+async def test_idea_message(mocker):
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embeddings", mock_openai_embed_documents)
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embedding", mock_openai_embed_document)
+ mocker.patch(
+ "llama_index.embeddings.openai.base.OpenAIEmbedding._aget_query_embedding", mock_openai_aembed_document
+ )
+
+ idea = text_embed_arr[0].get("text", "Write a cli snake game")
role_id = "UTUser1(Product Manager)"
message = Message(role="User", content=idea, cause_by=UserRequirement)
shutil.rmtree(Path(DATA_PATH / f"role_mem/{role_id}/"), ignore_errors=True)
memory_storage: MemoryStorage = MemoryStorage()
- messages = memory_storage.recover_memory(role_id)
- assert len(messages) == 0
+ memory_storage.recover_memory(role_id)
memory_storage.add(message)
assert memory_storage.is_initialized is True
- sim_idea = "Write a game of cli snake"
+ sim_idea = text_embed_arr[1].get("text", "Write a game of cli snake")
sim_message = Message(role="User", content=sim_idea, cause_by=UserRequirement)
- new_messages = memory_storage.search_dissimilar(sim_message)
- assert len(new_messages) == 0 # similar, return []
+ new_messages = await memory_storage.search_similar(sim_message)
+ assert len(new_messages) == 1 # similar, return []
- new_idea = "Write a 2048 web game"
+ new_idea = text_embed_arr[2].get("text", "Write a 2048 web game")
new_message = Message(role="User", content=new_idea, cause_by=UserRequirement)
- new_messages = memory_storage.search_dissimilar(new_message)
- assert new_messages[0].content == message.content
+ new_messages = await memory_storage.search_similar(new_message)
+ assert len(new_messages) == 0
memory_storage.clean()
assert memory_storage.is_initialized is False
-def test_actionout_message():
+@pytest.mark.asyncio
+async def test_actionout_message(mocker):
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embeddings", mock_openai_embed_documents)
+ mocker.patch("llama_index.embeddings.openai.base.OpenAIEmbedding._get_text_embedding", mock_openai_embed_document)
+ mocker.patch(
+ "llama_index.embeddings.openai.base.OpenAIEmbedding._aget_query_embedding", mock_openai_aembed_document
+ )
+
out_mapping = {"field1": (str, ...), "field2": (List[str], ...)}
out_data = {"field1": "field1 value", "field2": ["field2 value1", "field2 value2"]}
ic_obj = ActionNode.create_model_class("prd", out_mapping)
role_id = "UTUser2(Architect)"
- content = "The user has requested the creation of a command-line interface (CLI) snake game"
+ content = text_embed_arr[4].get(
+ "text", "The user has requested the creation of a command-line interface (CLI) snake game"
+ )
message = Message(
content=content, instruct_content=ic_obj(**out_data), role="user", cause_by=WritePRD
) # WritePRD as test action
@@ -61,21 +80,22 @@ def test_actionout_message():
shutil.rmtree(Path(DATA_PATH / f"role_mem/{role_id}/"), ignore_errors=True)
memory_storage: MemoryStorage = MemoryStorage()
- messages = memory_storage.recover_memory(role_id)
- assert len(messages) == 0
+ memory_storage.recover_memory(role_id)
memory_storage.add(message)
assert memory_storage.is_initialized is True
- sim_conent = "The request is command-line interface (CLI) snake game"
+ sim_conent = text_embed_arr[5].get("text", "The request is command-line interface (CLI) snake game")
sim_message = Message(content=sim_conent, instruct_content=ic_obj(**out_data), role="user", cause_by=WritePRD)
- new_messages = memory_storage.search_dissimilar(sim_message)
- assert len(new_messages) == 0 # similar, return []
+ new_messages = await memory_storage.search_similar(sim_message)
+ assert len(new_messages) == 1 # similar, return []
- new_conent = "Incorporate basic features of a snake game such as scoring and increasing difficulty"
+ new_conent = text_embed_arr[6].get(
+ "text", "Incorporate basic features of a snake game such as scoring and increasing difficulty"
+ )
new_message = Message(content=new_conent, instruct_content=ic_obj(**out_data), role="user", cause_by=WritePRD)
- new_messages = memory_storage.search_dissimilar(new_message)
- assert new_messages[0].content == message.content
+ new_messages = await memory_storage.search_similar(new_message)
+ assert len(new_messages) == 0
memory_storage.clean()
assert memory_storage.is_initialized is False
diff --git a/tests/metagpt/provider/mock_llm_config.py b/tests/metagpt/provider/mock_llm_config.py
index e2f626a6a..0c56cc8ea 100644
--- a/tests/metagpt/provider/mock_llm_config.py
+++ b/tests/metagpt/provider/mock_llm_config.py
@@ -42,3 +42,21 @@ mock_llm_config_zhipu = LLMConfig(
model="mock_zhipu_model",
proxy="http://localhost:8080",
)
+
+
+mock_llm_config_spark = LLMConfig(
+ api_type="spark",
+ app_id="xxx",
+ api_key="xxx",
+ api_secret="xxx",
+ domain="generalv2",
+ base_url="wss://spark-api.xf-yun.com/v3.1/chat",
+)
+
+mock_llm_config_qianfan = LLMConfig(api_type="qianfan", access_key="xxx", secret_key="xxx", model="ERNIE-Bot-turbo")
+
+mock_llm_config_dashscope = LLMConfig(api_type="dashscope", api_key="xxx", model="qwen-max")
+
+mock_llm_config_anthropic = LLMConfig(
+ api_type="anthropic", api_key="xxx", base_url="https://api.anthropic.com", model="claude-3-opus-20240229"
+)
diff --git a/tests/metagpt/provider/req_resp_const.py b/tests/metagpt/provider/req_resp_const.py
new file mode 100644
index 000000000..7e4c1a49c
--- /dev/null
+++ b/tests/metagpt/provider/req_resp_const.py
@@ -0,0 +1,185 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @Desc : default request & response data for provider unittest
+
+
+from anthropic.types import (
+ ContentBlock,
+ ContentBlockDeltaEvent,
+ Message,
+ MessageStartEvent,
+ TextDelta,
+)
+from anthropic.types import Usage as AnthropicUsage
+from dashscope.api_entities.dashscope_response import (
+ DashScopeAPIResponse,
+ GenerationOutput,
+ GenerationResponse,
+ GenerationUsage,
+)
+from openai.types.chat.chat_completion import (
+ ChatCompletion,
+ ChatCompletionMessage,
+ Choice,
+)
+from openai.types.chat.chat_completion_chunk import ChatCompletionChunk
+from openai.types.chat.chat_completion_chunk import Choice as AChoice
+from openai.types.chat.chat_completion_chunk import ChoiceDelta
+from openai.types.completion_usage import CompletionUsage
+from qianfan.resources.typing import QfResponse
+
+from metagpt.provider.base_llm import BaseLLM
+
+prompt = "who are you?"
+messages = [{"role": "user", "content": prompt}]
+
+resp_cont_tmpl = "I'm {name}"
+default_resp_cont = resp_cont_tmpl.format(name="GPT")
+
+
+# part of whole ChatCompletion of openai like structure
+def get_part_chat_completion(name: str) -> dict:
+ part_chat_completion = {
+ "choices": [
+ {
+ "index": 0,
+ "message": {
+ "role": "assistant",
+ "content": resp_cont_tmpl.format(name=name),
+ },
+ "finish_reason": "stop",
+ }
+ ],
+ "usage": {"completion_tokens": 22, "prompt_tokens": 19, "total_tokens": 41},
+ }
+ return part_chat_completion
+
+
+def get_openai_chat_completion(name: str) -> ChatCompletion:
+ openai_chat_completion = ChatCompletion(
+ id="cmpl-a6652c1bb181caae8dd19ad8",
+ model="xx/xxx",
+ object="chat.completion",
+ created=1703300855,
+ choices=[
+ Choice(
+ finish_reason="stop",
+ index=0,
+ message=ChatCompletionMessage(role="assistant", content=resp_cont_tmpl.format(name=name)),
+ logprobs=None,
+ )
+ ],
+ usage=CompletionUsage(completion_tokens=110, prompt_tokens=92, total_tokens=202),
+ )
+ return openai_chat_completion
+
+
+def get_openai_chat_completion_chunk(name: str, usage_as_dict: bool = False) -> ChatCompletionChunk:
+ usage = CompletionUsage(completion_tokens=110, prompt_tokens=92, total_tokens=202)
+ usage = usage if not usage_as_dict else usage.model_dump()
+ openai_chat_completion_chunk = ChatCompletionChunk(
+ id="cmpl-a6652c1bb181caae8dd19ad8",
+ model="xx/xxx",
+ object="chat.completion.chunk",
+ created=1703300855,
+ choices=[
+ AChoice(
+ delta=ChoiceDelta(role="assistant", content=resp_cont_tmpl.format(name=name)),
+ finish_reason="stop",
+ index=0,
+ logprobs=None,
+ )
+ ],
+ usage=usage,
+ )
+ return openai_chat_completion_chunk
+
+
+# For gemini
+gemini_messages = [{"role": "user", "parts": prompt}]
+
+
+# For QianFan
+qf_jsonbody_dict = {
+ "id": "as-4v1h587fyv",
+ "object": "chat.completion",
+ "created": 1695021339,
+ "result": "",
+ "is_truncated": False,
+ "need_clear_history": False,
+ "usage": {"prompt_tokens": 7, "completion_tokens": 15, "total_tokens": 22},
+}
+
+
+def get_qianfan_response(name: str) -> QfResponse:
+ qf_jsonbody_dict["result"] = resp_cont_tmpl.format(name=name)
+ return QfResponse(code=200, body=qf_jsonbody_dict)
+
+
+# For DashScope
+def get_dashscope_response(name: str) -> GenerationResponse:
+ return GenerationResponse.from_api_response(
+ DashScopeAPIResponse(
+ status_code=200,
+ output=GenerationOutput(
+ **{
+ "text": "",
+ "finish_reason": "",
+ "choices": [
+ {
+ "finish_reason": "stop",
+ "message": {"role": "assistant", "content": resp_cont_tmpl.format(name=name)},
+ }
+ ],
+ }
+ ),
+ usage=GenerationUsage(**{"input_tokens": 12, "output_tokens": 98, "total_tokens": 110}),
+ )
+ )
+
+
+# For Anthropic
+def get_anthropic_response(name: str, stream: bool = False) -> Message:
+ if stream:
+ return [
+ MessageStartEvent(
+ message=Message(
+ id="xxx",
+ model=name,
+ role="assistant",
+ type="message",
+ content=[ContentBlock(text="", type="text")],
+ usage=AnthropicUsage(input_tokens=10, output_tokens=10),
+ ),
+ type="message_start",
+ ),
+ ContentBlockDeltaEvent(
+ index=0,
+ delta=TextDelta(text=resp_cont_tmpl.format(name=name), type="text_delta"),
+ type="content_block_delta",
+ ),
+ ]
+ else:
+ return Message(
+ id="xxx",
+ model=name,
+ role="assistant",
+ type="message",
+ content=[ContentBlock(text=resp_cont_tmpl.format(name=name), type="text")],
+ usage=AnthropicUsage(input_tokens=10, output_tokens=10),
+ )
+
+
+# For llm general chat functions call
+async def llm_general_chat_funcs_test(llm: BaseLLM, prompt: str, messages: list[dict], resp_cont: str):
+ resp = await llm.aask(prompt, stream=False)
+ assert resp == resp_cont
+
+ resp = await llm.aask(prompt)
+ assert resp == resp_cont
+
+ resp = await llm.acompletion_text(messages, stream=False)
+ assert resp == resp_cont
+
+ resp = await llm.acompletion_text(messages, stream=True)
+ assert resp == resp_cont
diff --git a/tests/metagpt/provider/test_anthropic_api.py b/tests/metagpt/provider/test_anthropic_api.py
index 6962ab064..b8a3fe289 100644
--- a/tests/metagpt/provider/test_anthropic_api.py
+++ b/tests/metagpt/provider/test_anthropic_api.py
@@ -2,31 +2,45 @@
# -*- coding: utf-8 -*-
# @Desc : the unittest of Claude2
-
import pytest
from anthropic.resources.completions import Completion
-from metagpt.provider.anthropic_api import Claude2
-from tests.metagpt.provider.mock_llm_config import mock_llm_config
+from metagpt.provider.anthropic_api import AnthropicLLM
+from tests.metagpt.provider.mock_llm_config import mock_llm_config_anthropic
+from tests.metagpt.provider.req_resp_const import (
+ get_anthropic_response,
+ llm_general_chat_funcs_test,
+ messages,
+ prompt,
+ resp_cont_tmpl,
+)
-prompt = "who are you"
-resp = "I'am Claude2"
+name = "claude-3-opus-20240229"
+resp_cont = resp_cont_tmpl.format(name=name)
-def mock_anthropic_completions_create(self, model: str, prompt: str, max_tokens_to_sample: int) -> Completion:
- return Completion(id="xx", completion=resp, model="claude-2", stop_reason="stop_sequence", type="completion")
+async def mock_anthropic_messages_create(
+ self, messages: list[dict], model: str, stream: bool = True, max_tokens: int = None, system: str = None
+) -> Completion:
+ if stream:
+ async def aresp_iterator():
+ resps = get_anthropic_response(name, stream=True)
+ for resp in resps:
+ yield resp
-async def mock_anthropic_acompletions_create(self, model: str, prompt: str, max_tokens_to_sample: int) -> Completion:
- return Completion(id="xx", completion=resp, model="claude-2", stop_reason="stop_sequence", type="completion")
-
-
-def test_claude2_ask(mocker):
- mocker.patch("anthropic.resources.completions.Completions.create", mock_anthropic_completions_create)
- assert resp == Claude2(mock_llm_config).ask(prompt)
+ return aresp_iterator()
+ else:
+ return get_anthropic_response(name)
@pytest.mark.asyncio
-async def test_claude2_aask(mocker):
- mocker.patch("anthropic.resources.completions.AsyncCompletions.create", mock_anthropic_acompletions_create)
- assert resp == await Claude2(mock_llm_config).aask(prompt)
+async def test_anthropic_acompletion(mocker):
+ mocker.patch("anthropic.resources.messages.AsyncMessages.create", mock_anthropic_messages_create)
+
+ anthropic_llm = AnthropicLLM(mock_llm_config_anthropic)
+
+ resp = await anthropic_llm.acompletion(messages)
+ assert resp.content[0].text == resp_cont
+
+ await llm_general_chat_funcs_test(anthropic_llm, prompt, messages, resp_cont)
diff --git a/tests/metagpt/provider/test_base_llm.py b/tests/metagpt/provider/test_base_llm.py
index cc781f78a..bff8dbde4 100644
--- a/tests/metagpt/provider/test_base_llm.py
+++ b/tests/metagpt/provider/test_base_llm.py
@@ -11,21 +11,13 @@ import pytest
from metagpt.configs.llm_config import LLMConfig
from metagpt.provider.base_llm import BaseLLM
from metagpt.schema import Message
+from tests.metagpt.provider.req_resp_const import (
+ default_resp_cont,
+ get_part_chat_completion,
+ prompt,
+)
-default_chat_resp = {
- "choices": [
- {
- "index": 0,
- "message": {
- "role": "assistant",
- "content": "I'am GPT",
- },
- "finish_reason": "stop",
- }
- ]
-}
-prompt_msg = "who are you"
-resp_content = default_chat_resp["choices"][0]["message"]["content"]
+name = "GPT"
class MockBaseLLM(BaseLLM):
@@ -33,16 +25,19 @@ class MockBaseLLM(BaseLLM):
pass
def completion(self, messages: list[dict], timeout=3):
- return default_chat_resp
+ return get_part_chat_completion(name)
+
+ async def _achat_completion(self, messages: list[dict], timeout=3):
+ pass
async def acompletion(self, messages: list[dict], timeout=3):
- return default_chat_resp
+ return get_part_chat_completion(name)
+
+ async def _achat_completion_stream(self, messages: list[dict], timeout: int = 3) -> str:
+ pass
async def acompletion_text(self, messages: list[dict], stream=False, timeout=3) -> str:
- return resp_content
-
- async def close(self):
- return default_chat_resp
+ return default_resp_cont
def test_base_llm():
@@ -86,25 +81,25 @@ def test_base_llm():
choice_text = base_llm.get_choice_text(openai_funccall_resp)
assert choice_text == openai_funccall_resp["choices"][0]["message"]["content"]
- # resp = base_llm.ask(prompt_msg)
- # assert resp == resp_content
+ # resp = base_llm.ask(prompt)
+ # assert resp == default_resp_cont
- # resp = base_llm.ask_batch([prompt_msg])
- # assert resp == resp_content
+ # resp = base_llm.ask_batch([prompt])
+ # assert resp == default_resp_cont
- # resp = base_llm.ask_code([prompt_msg])
- # assert resp == resp_content
+ # resp = base_llm.ask_code([prompt])
+ # assert resp == default_resp_cont
@pytest.mark.asyncio
async def test_async_base_llm():
base_llm = MockBaseLLM()
- resp = await base_llm.aask(prompt_msg)
- assert resp == resp_content
+ resp = await base_llm.aask(prompt)
+ assert resp == default_resp_cont
- resp = await base_llm.aask_batch([prompt_msg])
- assert resp == resp_content
+ resp = await base_llm.aask_batch([prompt])
+ assert resp == default_resp_cont
- # resp = await base_llm.aask_code([prompt_msg])
- # assert resp == resp_content
+ # resp = await base_llm.aask_code([prompt])
+ # assert resp == default_resp_cont
diff --git a/tests/metagpt/provider/test_dashscope_api.py b/tests/metagpt/provider/test_dashscope_api.py
new file mode 100644
index 000000000..a6dd8f247
--- /dev/null
+++ b/tests/metagpt/provider/test_dashscope_api.py
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @Desc : the unittest of DashScopeLLM
+
+from typing import AsyncGenerator, Union
+
+import pytest
+from dashscope.api_entities.dashscope_response import GenerationResponse
+
+from metagpt.provider.dashscope_api import DashScopeLLM
+from tests.metagpt.provider.mock_llm_config import mock_llm_config_dashscope
+from tests.metagpt.provider.req_resp_const import (
+ get_dashscope_response,
+ llm_general_chat_funcs_test,
+ messages,
+ prompt,
+ resp_cont_tmpl,
+)
+
+name = "qwen-max"
+resp_cont = resp_cont_tmpl.format(name=name)
+
+
+@classmethod
+def mock_dashscope_call(
+ cls,
+ messages: list[dict],
+ model: str,
+ api_key: str,
+ result_format: str,
+ incremental_output: bool = True,
+ stream: bool = False,
+) -> GenerationResponse:
+ return get_dashscope_response(name)
+
+
+@classmethod
+async def mock_dashscope_acall(
+ cls,
+ messages: list[dict],
+ model: str,
+ api_key: str,
+ result_format: str,
+ incremental_output: bool = True,
+ stream: bool = False,
+) -> Union[AsyncGenerator[GenerationResponse, None], GenerationResponse]:
+ resps = [get_dashscope_response(name)]
+
+ if stream:
+
+ async def aresp_iterator(resps: list[GenerationResponse]):
+ for resp in resps:
+ yield resp
+
+ return aresp_iterator(resps)
+ else:
+ return resps[0]
+
+
+@pytest.mark.asyncio
+async def test_dashscope_acompletion(mocker):
+ mocker.patch("dashscope.aigc.generation.Generation.call", mock_dashscope_call)
+ mocker.patch("metagpt.provider.dashscope_api.AGeneration.acall", mock_dashscope_acall)
+
+ dashscope_llm = DashScopeLLM(mock_llm_config_dashscope)
+
+ resp = dashscope_llm.completion(messages)
+ assert resp.choices[0]["message"]["content"] == resp_cont
+
+ resp = await dashscope_llm.acompletion(messages)
+ assert resp.choices[0]["message"]["content"] == resp_cont
+
+ await llm_general_chat_funcs_test(dashscope_llm, prompt, messages, resp_cont)
diff --git a/tests/metagpt/provider/test_fireworks_llm.py b/tests/metagpt/provider/test_fireworks_llm.py
deleted file mode 100644
index 66b55e5b2..000000000
--- a/tests/metagpt/provider/test_fireworks_llm.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# @Desc : the unittest of fireworks api
-
-import pytest
-from openai.types.chat.chat_completion import (
- ChatCompletion,
- ChatCompletionMessage,
- Choice,
-)
-from openai.types.chat.chat_completion_chunk import ChatCompletionChunk
-from openai.types.chat.chat_completion_chunk import Choice as AChoice
-from openai.types.chat.chat_completion_chunk import ChoiceDelta
-from openai.types.completion_usage import CompletionUsage
-
-from metagpt.provider.fireworks_api import (
- MODEL_GRADE_TOKEN_COSTS,
- FireworksCostManager,
- FireworksLLM,
-)
-from metagpt.utils.cost_manager import Costs
-from tests.metagpt.provider.mock_llm_config import mock_llm_config
-
-resp_content = "I'm fireworks"
-default_resp = ChatCompletion(
- id="cmpl-a6652c1bb181caae8dd19ad8",
- model="accounts/fireworks/models/llama-v2-13b-chat",
- object="chat.completion",
- created=1703300855,
- choices=[
- Choice(
- finish_reason="stop",
- index=0,
- message=ChatCompletionMessage(role="assistant", content=resp_content),
- logprobs=None,
- )
- ],
- usage=CompletionUsage(completion_tokens=110, prompt_tokens=92, total_tokens=202),
-)
-
-default_resp_chunk = ChatCompletionChunk(
- id=default_resp.id,
- model=default_resp.model,
- object="chat.completion.chunk",
- created=default_resp.created,
- choices=[
- AChoice(
- delta=ChoiceDelta(content=resp_content, role="assistant"),
- finish_reason="stop",
- index=0,
- logprobs=None,
- )
- ],
- usage=dict(default_resp.usage),
-)
-
-prompt_msg = "who are you"
-messages = [{"role": "user", "content": prompt_msg}]
-
-
-def test_fireworks_costmanager():
- cost_manager = FireworksCostManager()
- assert MODEL_GRADE_TOKEN_COSTS["-1"] == cost_manager.model_grade_token_costs("test")
- assert MODEL_GRADE_TOKEN_COSTS["-1"] == cost_manager.model_grade_token_costs("xxx-81b-chat")
- assert MODEL_GRADE_TOKEN_COSTS["16"] == cost_manager.model_grade_token_costs("llama-v2-13b-chat")
- assert MODEL_GRADE_TOKEN_COSTS["16"] == cost_manager.model_grade_token_costs("xxx-15.5b-chat")
- assert MODEL_GRADE_TOKEN_COSTS["16"] == cost_manager.model_grade_token_costs("xxx-16b-chat")
- assert MODEL_GRADE_TOKEN_COSTS["80"] == cost_manager.model_grade_token_costs("xxx-80b-chat")
- assert MODEL_GRADE_TOKEN_COSTS["mixtral-8x7b"] == cost_manager.model_grade_token_costs("mixtral-8x7b-chat")
-
- cost_manager.update_cost(prompt_tokens=500000, completion_tokens=500000, model="llama-v2-13b-chat")
- assert cost_manager.total_cost == 0.5
-
-
-async def mock_openai_acompletions_create(self, stream: bool = False, **kwargs) -> ChatCompletionChunk:
- if stream:
-
- class Iterator(object):
- async def __aiter__(self):
- yield default_resp_chunk
-
- return Iterator()
- else:
- return default_resp
-
-
-@pytest.mark.asyncio
-async def test_fireworks_acompletion(mocker):
- mocker.patch("openai.resources.chat.completions.AsyncCompletions.create", mock_openai_acompletions_create)
-
- fireworks_gpt = FireworksLLM(mock_llm_config)
- fireworks_gpt.model = "llama-v2-13b-chat"
-
- fireworks_gpt._update_costs(
- usage=CompletionUsage(prompt_tokens=500000, completion_tokens=500000, total_tokens=1000000)
- )
- assert fireworks_gpt.get_costs() == Costs(
- total_prompt_tokens=500000, total_completion_tokens=500000, total_cost=0.5, total_budget=0
- )
-
- resp = await fireworks_gpt.acompletion(messages)
- assert resp.choices[0].message.content in resp_content
-
- resp = await fireworks_gpt.aask(prompt_msg, stream=False)
- assert resp == resp_content
-
- resp = await fireworks_gpt.acompletion_text(messages, stream=False)
- assert resp == resp_content
-
- resp = await fireworks_gpt.acompletion_text(messages, stream=True)
- assert resp == resp_content
-
- resp = await fireworks_gpt.aask(prompt_msg)
- assert resp == resp_content
diff --git a/tests/metagpt/provider/test_google_gemini_api.py b/tests/metagpt/provider/test_google_gemini_api.py
index 404ae1e90..50c15ee19 100644
--- a/tests/metagpt/provider/test_google_gemini_api.py
+++ b/tests/metagpt/provider/test_google_gemini_api.py
@@ -11,6 +11,12 @@ from google.generativeai.types import content_types
from metagpt.provider.google_gemini_api import GeminiLLM
from tests.metagpt.provider.mock_llm_config import mock_llm_config
+from tests.metagpt.provider.req_resp_const import (
+ gemini_messages,
+ llm_general_chat_funcs_test,
+ prompt,
+ resp_cont_tmpl,
+)
@dataclass
@@ -18,10 +24,8 @@ class MockGeminiResponse(ABC):
text: str
-prompt_msg = "who are you"
-messages = [{"role": "user", "parts": prompt_msg}]
-resp_content = "I'm gemini from google"
-default_resp = MockGeminiResponse(text=resp_content)
+resp_cont = resp_cont_tmpl.format(name="gemini")
+default_resp = MockGeminiResponse(text=resp_cont)
def mock_gemini_count_tokens(self, contents: content_types.ContentsType) -> glm.CountTokensResponse:
@@ -60,28 +64,18 @@ async def test_gemini_acompletion(mocker):
mock_gemini_generate_content_async,
)
- gemini_gpt = GeminiLLM(mock_llm_config)
+ gemini_llm = GeminiLLM(mock_llm_config)
- assert gemini_gpt._user_msg(prompt_msg) == {"role": "user", "parts": [prompt_msg]}
- assert gemini_gpt._assistant_msg(prompt_msg) == {"role": "model", "parts": [prompt_msg]}
+ assert gemini_llm._user_msg(prompt) == {"role": "user", "parts": [prompt]}
+ assert gemini_llm._assistant_msg(prompt) == {"role": "model", "parts": [prompt]}
- usage = gemini_gpt.get_usage(messages, resp_content)
+ usage = gemini_llm.get_usage(gemini_messages, resp_cont)
assert usage == {"prompt_tokens": 20, "completion_tokens": 20}
- resp = gemini_gpt.completion(messages)
+ resp = gemini_llm.completion(gemini_messages)
assert resp == default_resp
- resp = await gemini_gpt.acompletion(messages)
+ resp = await gemini_llm.acompletion(gemini_messages)
assert resp.text == default_resp.text
- resp = await gemini_gpt.aask(prompt_msg, stream=False)
- assert resp == resp_content
-
- resp = await gemini_gpt.acompletion_text(messages, stream=False)
- assert resp == resp_content
-
- resp = await gemini_gpt.acompletion_text(messages, stream=True)
- assert resp == resp_content
-
- resp = await gemini_gpt.aask(prompt_msg)
- assert resp == resp_content
+ await llm_general_chat_funcs_test(gemini_llm, prompt, gemini_messages, resp_cont)
diff --git a/tests/metagpt/provider/test_ollama_api.py b/tests/metagpt/provider/test_ollama_api.py
index 5d942598b..af2e929e9 100644
--- a/tests/metagpt/provider/test_ollama_api.py
+++ b/tests/metagpt/provider/test_ollama_api.py
@@ -9,12 +9,15 @@ import pytest
from metagpt.provider.ollama_api import OllamaLLM
from tests.metagpt.provider.mock_llm_config import mock_llm_config
+from tests.metagpt.provider.req_resp_const import (
+ llm_general_chat_funcs_test,
+ messages,
+ prompt,
+ resp_cont_tmpl,
+)
-prompt_msg = "who are you"
-messages = [{"role": "user", "content": prompt_msg}]
-
-resp_content = "I'm ollama"
-default_resp = {"message": {"role": "assistant", "content": resp_content}}
+resp_cont = resp_cont_tmpl.format(name="ollama")
+default_resp = {"message": {"role": "assistant", "content": resp_cont}}
async def mock_ollama_arequest(self, stream: bool = False, **kwargs) -> Tuple[Any, Any, bool]:
@@ -41,19 +44,12 @@ async def mock_ollama_arequest(self, stream: bool = False, **kwargs) -> Tuple[An
async def test_gemini_acompletion(mocker):
mocker.patch("metagpt.provider.general_api_requestor.GeneralAPIRequestor.arequest", mock_ollama_arequest)
- ollama_gpt = OllamaLLM(mock_llm_config)
+ ollama_llm = OllamaLLM(mock_llm_config)
- resp = await ollama_gpt.acompletion(messages)
+ resp = await ollama_llm.acompletion(messages)
assert resp["message"]["content"] == default_resp["message"]["content"]
- resp = await ollama_gpt.aask(prompt_msg, stream=False)
- assert resp == resp_content
+ resp = await ollama_llm.aask(prompt, stream=False)
+ assert resp == resp_cont
- resp = await ollama_gpt.acompletion_text(messages, stream=False)
- assert resp == resp_content
-
- resp = await ollama_gpt.acompletion_text(messages, stream=True)
- assert resp == resp_content
-
- resp = await ollama_gpt.aask(prompt_msg)
- assert resp == resp_content
+ await llm_general_chat_funcs_test(ollama_llm, prompt, messages, resp_cont)
diff --git a/tests/metagpt/provider/test_open_llm_api.py b/tests/metagpt/provider/test_open_llm_api.py
deleted file mode 100644
index fc7b510cc..000000000
--- a/tests/metagpt/provider/test_open_llm_api.py
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-# @Desc :
-
-import pytest
-from openai.types.chat.chat_completion import (
- ChatCompletion,
- ChatCompletionMessage,
- Choice,
-)
-from openai.types.chat.chat_completion_chunk import ChatCompletionChunk
-from openai.types.chat.chat_completion_chunk import Choice as AChoice
-from openai.types.chat.chat_completion_chunk import ChoiceDelta
-from openai.types.completion_usage import CompletionUsage
-
-from metagpt.provider.open_llm_api import OpenLLM
-from metagpt.utils.cost_manager import Costs
-from tests.metagpt.provider.mock_llm_config import mock_llm_config
-
-resp_content = "I'm llama2"
-default_resp = ChatCompletion(
- id="cmpl-a6652c1bb181caae8dd19ad8",
- model="llama-v2-13b-chat",
- object="chat.completion",
- created=1703302755,
- choices=[
- Choice(
- finish_reason="stop",
- index=0,
- message=ChatCompletionMessage(role="assistant", content=resp_content),
- logprobs=None,
- )
- ],
-)
-
-default_resp_chunk = ChatCompletionChunk(
- id=default_resp.id,
- model=default_resp.model,
- object="chat.completion.chunk",
- created=default_resp.created,
- choices=[
- AChoice(
- delta=ChoiceDelta(content=resp_content, role="assistant"),
- finish_reason="stop",
- index=0,
- logprobs=None,
- )
- ],
-)
-
-prompt_msg = "who are you"
-messages = [{"role": "user", "content": prompt_msg}]
-
-
-async def mock_openai_acompletions_create(self, stream: bool = False, **kwargs) -> ChatCompletionChunk:
- if stream:
-
- class Iterator(object):
- async def __aiter__(self):
- yield default_resp_chunk
-
- return Iterator()
- else:
- return default_resp
-
-
-@pytest.mark.asyncio
-async def test_openllm_acompletion(mocker):
- mocker.patch("openai.resources.chat.completions.AsyncCompletions.create", mock_openai_acompletions_create)
-
- openllm_gpt = OpenLLM(mock_llm_config)
- openllm_gpt.model = "llama-v2-13b-chat"
-
- openllm_gpt._update_costs(usage=CompletionUsage(prompt_tokens=100, completion_tokens=100, total_tokens=200))
- assert openllm_gpt.get_costs() == Costs(
- total_prompt_tokens=100, total_completion_tokens=100, total_cost=0, total_budget=0
- )
-
- resp = await openllm_gpt.acompletion(messages)
- assert resp.choices[0].message.content in resp_content
-
- resp = await openllm_gpt.aask(prompt_msg, stream=False)
- assert resp == resp_content
-
- resp = await openllm_gpt.acompletion_text(messages, stream=False)
- assert resp == resp_content
-
- resp = await openllm_gpt.acompletion_text(messages, stream=True)
- assert resp == resp_content
-
- resp = await openllm_gpt.aask(prompt_msg)
- assert resp == resp_content
diff --git a/tests/metagpt/provider/test_openai.py b/tests/metagpt/provider/test_openai.py
index d6aa04c7b..3ce38d2a5 100644
--- a/tests/metagpt/provider/test_openai.py
+++ b/tests/metagpt/provider/test_openai.py
@@ -1,12 +1,11 @@
-import json
-
import pytest
from openai.types.chat import (
ChatCompletion,
+ ChatCompletionChunk,
ChatCompletionMessage,
ChatCompletionMessageToolCall,
)
-from openai.types.chat.chat_completion import Choice
+from openai.types.chat.chat_completion import Choice, CompletionUsage
from openai.types.chat.chat_completion_message_tool_call import Function
from PIL import Image
@@ -18,6 +17,22 @@ from tests.metagpt.provider.mock_llm_config import (
mock_llm_config,
mock_llm_config_proxy,
)
+from tests.metagpt.provider.req_resp_const import (
+ get_openai_chat_completion,
+ get_openai_chat_completion_chunk,
+ llm_general_chat_funcs_test,
+ messages,
+ prompt,
+ resp_cont_tmpl,
+)
+
+name = "AI assistant"
+resp_cont = resp_cont_tmpl.format(name=name)
+default_resp = get_openai_chat_completion(name)
+
+default_resp_chunk = get_openai_chat_completion_chunk(name, usage_as_dict=True)
+
+usage = CompletionUsage(completion_tokens=110, prompt_tokens=92, total_tokens=202)
@pytest.mark.asyncio
@@ -106,9 +121,11 @@ class TestOpenAI:
def test_aask_code_json_decode_error(self, json_decode_error):
instance = OpenAILLM(mock_llm_config)
- with pytest.raises(json.decoder.JSONDecodeError) as e:
- instance.get_choice_function_arguments(json_decode_error)
- assert "JSONDecodeError" in str(e)
+ code = instance.get_choice_function_arguments(json_decode_error)
+ assert "code" in code
+ assert "language" in code
+ assert "hello world" in code["code"]
+ logger.info(f'code is : {code["code"]}')
@pytest.mark.asyncio
@@ -121,3 +138,29 @@ async def test_gen_image():
images: list[Image] = await llm.gen_image(model=model, prompt=prompt, resp_format="b64_json")
assert images[0].size == (1024, 1024)
+
+
+async def mock_openai_acompletions_create(self, stream: bool = False, **kwargs) -> ChatCompletionChunk:
+ if stream:
+
+ class Iterator(object):
+ async def __aiter__(self):
+ yield default_resp_chunk
+
+ return Iterator()
+ else:
+ return default_resp
+
+
+@pytest.mark.asyncio
+async def test_openai_acompletion(mocker):
+ mocker.patch("openai.resources.chat.completions.AsyncCompletions.create", mock_openai_acompletions_create)
+
+ llm = OpenAILLM(mock_llm_config)
+
+ resp = await llm.acompletion(messages)
+ assert resp.choices[0].finish_reason == "stop"
+ assert resp.choices[0].message.content == resp_cont
+ assert resp.usage == usage
+
+ await llm_general_chat_funcs_test(llm, prompt, messages, resp_cont)
diff --git a/tests/metagpt/provider/test_qianfan_api.py b/tests/metagpt/provider/test_qianfan_api.py
new file mode 100644
index 000000000..28341425c
--- /dev/null
+++ b/tests/metagpt/provider/test_qianfan_api.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# @Desc : the unittest of qianfan api
+
+from typing import AsyncIterator, Union
+
+import pytest
+from qianfan.resources.typing import JsonBody, QfResponse
+
+from metagpt.provider.qianfan_api import QianFanLLM
+from tests.metagpt.provider.mock_llm_config import mock_llm_config_qianfan
+from tests.metagpt.provider.req_resp_const import (
+ get_qianfan_response,
+ llm_general_chat_funcs_test,
+ messages,
+ prompt,
+ resp_cont_tmpl,
+)
+
+name = "ERNIE-Bot-turbo"
+resp_cont = resp_cont_tmpl.format(name=name)
+
+
+def mock_qianfan_do(self, messages: list[dict], model: str, stream: bool = False, system: str = None) -> QfResponse:
+ return get_qianfan_response(name=name)
+
+
+async def mock_qianfan_ado(
+ self, messages: list[dict], model: str, stream: bool = True, system: str = None
+) -> Union[QfResponse, AsyncIterator[QfResponse]]:
+ resps = [get_qianfan_response(name=name)]
+ if stream:
+
+ async def aresp_iterator(resps: list[JsonBody]):
+ for resp in resps:
+ yield resp
+
+ return aresp_iterator(resps)
+ else:
+ return resps[0]
+
+
+@pytest.mark.asyncio
+async def test_qianfan_acompletion(mocker):
+ mocker.patch("qianfan.resources.llm.chat_completion.ChatCompletion.do", mock_qianfan_do)
+ mocker.patch("qianfan.resources.llm.chat_completion.ChatCompletion.ado", mock_qianfan_ado)
+
+ qianfan_llm = QianFanLLM(mock_llm_config_qianfan)
+
+ resp = qianfan_llm.completion(messages)
+ assert resp.get("result") == resp_cont
+
+ resp = await qianfan_llm.acompletion(messages)
+ assert resp.get("result") == resp_cont
+
+ await llm_general_chat_funcs_test(qianfan_llm, prompt, messages, resp_cont)
diff --git a/tests/metagpt/provider/test_spark_api.py b/tests/metagpt/provider/test_spark_api.py
index f5a6f66fd..9c278267d 100644
--- a/tests/metagpt/provider/test_spark_api.py
+++ b/tests/metagpt/provider/test_spark_api.py
@@ -4,12 +4,18 @@
import pytest
-from metagpt.config2 import Config
from metagpt.provider.spark_api import GetMessageFromWeb, SparkLLM
-from tests.metagpt.provider.mock_llm_config import mock_llm_config
+from tests.metagpt.provider.mock_llm_config import (
+ mock_llm_config,
+ mock_llm_config_spark,
+)
+from tests.metagpt.provider.req_resp_const import (
+ llm_general_chat_funcs_test,
+ prompt,
+ resp_cont_tmpl,
+)
-prompt_msg = "who are you"
-resp_content = "I'm Spark"
+resp_cont = resp_cont_tmpl.format(name="Spark")
class MockWebSocketApp(object):
@@ -23,7 +29,7 @@ class MockWebSocketApp(object):
def test_get_msg_from_web(mocker):
mocker.patch("websocket.WebSocketApp", MockWebSocketApp)
- get_msg_from_web = GetMessageFromWeb(prompt_msg, mock_llm_config)
+ get_msg_from_web = GetMessageFromWeb(prompt, mock_llm_config)
assert get_msg_from_web.gen_params()["parameter"]["chat"]["domain"] == "mock_domain"
ret = get_msg_from_web.run()
@@ -31,34 +37,26 @@ def test_get_msg_from_web(mocker):
def mock_spark_get_msg_from_web_run(self) -> str:
- return resp_content
+ return resp_cont
@pytest.mark.asyncio
-async def test_spark_aask():
- llm = SparkLLM(Config.from_home("spark.yaml").llm)
+async def test_spark_aask(mocker):
+ mocker.patch("metagpt.provider.spark_api.GetMessageFromWeb.run", mock_spark_get_msg_from_web_run)
+
+ llm = SparkLLM(mock_llm_config_spark)
resp = await llm.aask("Hello!")
- print(resp)
+ assert resp == resp_cont
@pytest.mark.asyncio
async def test_spark_acompletion(mocker):
mocker.patch("metagpt.provider.spark_api.GetMessageFromWeb.run", mock_spark_get_msg_from_web_run)
- spark_gpt = SparkLLM(mock_llm_config)
+ spark_llm = SparkLLM(mock_llm_config)
- resp = await spark_gpt.acompletion([])
- assert resp == resp_content
+ resp = await spark_llm.acompletion([])
+ assert resp == resp_cont
- resp = await spark_gpt.aask(prompt_msg, stream=False)
- assert resp == resp_content
-
- resp = await spark_gpt.acompletion_text([], stream=False)
- assert resp == resp_content
-
- resp = await spark_gpt.acompletion_text([], stream=True)
- assert resp == resp_content
-
- resp = await spark_gpt.aask(prompt_msg)
- assert resp == resp_content
+ await llm_general_chat_funcs_test(spark_llm, prompt, prompt, resp_cont)
diff --git a/tests/metagpt/provider/test_zhipuai_api.py b/tests/metagpt/provider/test_zhipuai_api.py
index 798209710..c51010122 100644
--- a/tests/metagpt/provider/test_zhipuai_api.py
+++ b/tests/metagpt/provider/test_zhipuai_api.py
@@ -6,22 +6,24 @@ import pytest
from metagpt.provider.zhipuai_api import ZhiPuAILLM
from tests.metagpt.provider.mock_llm_config import mock_llm_config_zhipu
+from tests.metagpt.provider.req_resp_const import (
+ get_part_chat_completion,
+ llm_general_chat_funcs_test,
+ messages,
+ prompt,
+ resp_cont_tmpl,
+)
-prompt_msg = "who are you"
-messages = [{"role": "user", "content": prompt_msg}]
-
-resp_content = "I'm chatglm-turbo"
-default_resp = {
- "choices": [{"finish_reason": "stop", "index": 0, "message": {"content": resp_content, "role": "assistant"}}],
- "usage": {"completion_tokens": 22, "prompt_tokens": 19, "total_tokens": 41},
-}
+name = "ChatGLM-4"
+resp_cont = resp_cont_tmpl.format(name=name)
+default_resp = get_part_chat_completion(name)
-async def mock_zhipuai_acreate_stream(**kwargs):
+async def mock_zhipuai_acreate_stream(self, **kwargs):
class MockResponse(object):
async def _aread(self):
class Iterator(object):
- events = [{"choices": [{"index": 0, "delta": {"content": resp_content, "role": "assistant"}}]}]
+ events = [{"choices": [{"index": 0, "delta": {"content": resp_cont, "role": "assistant"}}]}]
async def __aiter__(self):
for event in self.events:
@@ -37,7 +39,7 @@ async def mock_zhipuai_acreate_stream(**kwargs):
return MockResponse()
-async def mock_zhipuai_acreate(**kwargs) -> dict:
+async def mock_zhipuai_acreate(self, **kwargs) -> dict:
return default_resp
@@ -46,22 +48,12 @@ async def test_zhipuai_acompletion(mocker):
mocker.patch("metagpt.provider.zhipuai.zhipu_model_api.ZhiPuModelAPI.acreate", mock_zhipuai_acreate)
mocker.patch("metagpt.provider.zhipuai.zhipu_model_api.ZhiPuModelAPI.acreate_stream", mock_zhipuai_acreate_stream)
- zhipu_gpt = ZhiPuAILLM(mock_llm_config_zhipu)
+ zhipu_llm = ZhiPuAILLM(mock_llm_config_zhipu)
- resp = await zhipu_gpt.acompletion(messages)
- assert resp["choices"][0]["message"]["content"] == resp_content
+ resp = await zhipu_llm.acompletion(messages)
+ assert resp["choices"][0]["message"]["content"] == resp_cont
- resp = await zhipu_gpt.aask(prompt_msg, stream=False)
- assert resp == resp_content
-
- resp = await zhipu_gpt.acompletion_text(messages, stream=False)
- assert resp == resp_content
-
- resp = await zhipu_gpt.acompletion_text(messages, stream=True)
- assert resp == resp_content
-
- resp = await zhipu_gpt.aask(prompt_msg)
- assert resp == resp_content
+ await llm_general_chat_funcs_test(zhipu_llm, prompt, messages, resp_cont)
def test_zhipuai_proxy():
diff --git a/tests/metagpt/rag/engines/test_simple.py b/tests/metagpt/rag/engines/test_simple.py
new file mode 100644
index 000000000..5627957c7
--- /dev/null
+++ b/tests/metagpt/rag/engines/test_simple.py
@@ -0,0 +1,166 @@
+import pytest
+from llama_index.core import VectorStoreIndex
+from llama_index.core.schema import Document, TextNode
+
+from metagpt.rag.engines import SimpleEngine
+from metagpt.rag.retrievers.base import ModifiableRAGRetriever
+
+
+class TestSimpleEngine:
+ @pytest.fixture
+ def mock_simple_directory_reader(self, mocker):
+ return mocker.patch("metagpt.rag.engines.simple.SimpleDirectoryReader")
+
+ @pytest.fixture
+ def mock_vector_store_index(self, mocker):
+ return mocker.patch("metagpt.rag.engines.simple.VectorStoreIndex.from_documents")
+
+ @pytest.fixture
+ def mock_get_retriever(self, mocker):
+ return mocker.patch("metagpt.rag.engines.simple.get_retriever")
+
+ @pytest.fixture
+ def mock_get_rankers(self, mocker):
+ return mocker.patch("metagpt.rag.engines.simple.get_rankers")
+
+ @pytest.fixture
+ def mock_get_response_synthesizer(self, mocker):
+ return mocker.patch("metagpt.rag.engines.simple.get_response_synthesizer")
+
+ def test_from_docs(
+ self,
+ mocker,
+ mock_simple_directory_reader,
+ mock_vector_store_index,
+ mock_get_retriever,
+ mock_get_rankers,
+ mock_get_response_synthesizer,
+ ):
+ # Mock
+ mock_simple_directory_reader.return_value.load_data.return_value = [
+ Document(text="document1"),
+ Document(text="document2"),
+ ]
+ mock_get_retriever.return_value = mocker.MagicMock()
+ mock_get_rankers.return_value = [mocker.MagicMock()]
+ mock_get_response_synthesizer.return_value = mocker.MagicMock()
+
+ # Setup
+ input_dir = "test_dir"
+ input_files = ["test_file1", "test_file2"]
+ transformations = [mocker.MagicMock()]
+ embed_model = mocker.MagicMock()
+ llm = mocker.MagicMock()
+ retriever_configs = [mocker.MagicMock()]
+ ranker_configs = [mocker.MagicMock()]
+
+ # Execute
+ engine = SimpleEngine.from_docs(
+ input_dir=input_dir,
+ input_files=input_files,
+ transformations=transformations,
+ embed_model=embed_model,
+ llm=llm,
+ retriever_configs=retriever_configs,
+ ranker_configs=ranker_configs,
+ )
+
+ # Assertions
+ mock_simple_directory_reader.assert_called_once_with(input_dir=input_dir, input_files=input_files)
+ mock_vector_store_index.assert_called_once()
+ mock_get_retriever.assert_called_once_with(
+ configs=retriever_configs, index=mock_vector_store_index.return_value
+ )
+ mock_get_rankers.assert_called_once_with(configs=ranker_configs, llm=llm)
+ mock_get_response_synthesizer.assert_called_once_with(llm=llm)
+ assert isinstance(engine, SimpleEngine)
+
+ @pytest.mark.asyncio
+ async def test_asearch(self, mocker):
+ # Mock
+ test_query = "test query"
+ expected_result = "expected result"
+ mock_aquery = mocker.AsyncMock(return_value=expected_result)
+
+ # Setup
+ engine = SimpleEngine(retriever=mocker.MagicMock())
+ engine.aquery = mock_aquery
+
+ # Execute
+ result = await engine.asearch(test_query)
+
+ # Assertions
+ mock_aquery.assert_called_once_with(test_query)
+ assert result == expected_result
+
+ @pytest.mark.asyncio
+ async def test_aretrieve(self, mocker):
+ # Mock
+ mock_query_bundle = mocker.patch("metagpt.rag.engines.simple.QueryBundle", return_value="query_bundle")
+ mock_super_aretrieve = mocker.patch(
+ "metagpt.rag.engines.simple.RetrieverQueryEngine.aretrieve", new_callable=mocker.AsyncMock
+ )
+ mock_super_aretrieve.return_value = [TextNode(text="node_with_score", metadata={"is_obj": False})]
+
+ # Setup
+ engine = SimpleEngine(retriever=mocker.MagicMock())
+ test_query = "test query"
+
+ # Execute
+ result = await engine.aretrieve(test_query)
+
+ # Assertions
+ mock_query_bundle.assert_called_once_with(test_query)
+ mock_super_aretrieve.assert_called_once_with("query_bundle")
+ assert result[0].text == "node_with_score"
+
+ def test_add_docs(self, mocker):
+ # Mock
+ mock_simple_directory_reader = mocker.patch("metagpt.rag.engines.simple.SimpleDirectoryReader")
+ mock_simple_directory_reader.return_value.load_data.return_value = [
+ Document(text="document1"),
+ Document(text="document2"),
+ ]
+
+ mock_retriever = mocker.MagicMock(spec=ModifiableRAGRetriever)
+
+ mock_index = mocker.MagicMock(spec=VectorStoreIndex)
+ mock_index._transformations = mocker.MagicMock()
+
+ mock_run_transformations = mocker.patch("metagpt.rag.engines.simple.run_transformations")
+ mock_run_transformations.return_value = ["node1", "node2"]
+
+ # Setup
+ engine = SimpleEngine(retriever=mock_retriever, index=mock_index)
+ input_files = ["test_file1", "test_file2"]
+
+ # Execute
+ engine.add_docs(input_files=input_files)
+
+ # Assertions
+ mock_simple_directory_reader.assert_called_once_with(input_files=input_files)
+ mock_retriever.add_nodes.assert_called_once_with(["node1", "node2"])
+
+ def test_add_objs(self, mocker):
+ # Mock
+ mock_retriever = mocker.MagicMock(spec=ModifiableRAGRetriever)
+
+ # Setup
+ class CustomTextNode(TextNode):
+ def rag_key(self):
+ return ""
+
+ def model_dump_json(self):
+ return ""
+
+ objs = [CustomTextNode(text=f"text_{i}", metadata={"obj": f"obj_{i}"}) for i in range(2)]
+ engine = SimpleEngine(retriever=mock_retriever, index=mocker.MagicMock())
+
+ # Execute
+ engine.add_objs(objs=objs)
+
+ # Assertions
+ assert mock_retriever.add_nodes.call_count == 1
+ for node in mock_retriever.add_nodes.call_args[0][0]:
+ assert isinstance(node, TextNode)
+ assert "is_obj" in node.metadata
diff --git a/tests/metagpt/rag/factories/test_base.py b/tests/metagpt/rag/factories/test_base.py
new file mode 100644
index 000000000..1d41e1872
--- /dev/null
+++ b/tests/metagpt/rag/factories/test_base.py
@@ -0,0 +1,102 @@
+import pytest
+
+from metagpt.rag.factories.base import ConfigBasedFactory, GenericFactory
+
+
+class TestGenericFactory:
+ @pytest.fixture
+ def creators(self):
+ return {
+ "type1": lambda name: f"Instance of type1 with {name}",
+ "type2": lambda name: f"Instance of type2 with {name}",
+ }
+
+ @pytest.fixture
+ def factory(self, creators):
+ return GenericFactory(creators=creators)
+
+ def test_get_instance_success(self, factory):
+ # Test successful retrieval of an instance
+ key = "type1"
+ instance = factory.get_instance(key, name="TestName")
+ assert instance == "Instance of type1 with TestName"
+
+ def test_get_instance_failure(self, factory):
+ # Test failure to retrieve an instance due to unregistered key
+ with pytest.raises(ValueError) as exc_info:
+ factory.get_instance("unknown_key")
+ assert "Creator not registered for key: unknown_key" in str(exc_info.value)
+
+ def test_get_instances_success(self, factory):
+ # Test successful retrieval of multiple instances
+ keys = ["type1", "type2"]
+ instances = factory.get_instances(keys, name="TestName")
+ expected = ["Instance of type1 with TestName", "Instance of type2 with TestName"]
+ assert instances == expected
+
+ @pytest.mark.parametrize(
+ "keys,expected_exception_message",
+ [
+ (["unknown_key"], "Creator not registered for key: unknown_key"),
+ (["type1", "unknown_key"], "Creator not registered for key: unknown_key"),
+ ],
+ )
+ def test_get_instances_with_failure(self, factory, keys, expected_exception_message):
+ # Test failure to retrieve instances due to at least one unregistered key
+ with pytest.raises(ValueError) as exc_info:
+ factory.get_instances(keys, name="TestName")
+ assert expected_exception_message in str(exc_info.value)
+
+
+class DummyConfig:
+ """A dummy config class for testing."""
+
+ def __init__(self, name):
+ self.name = name
+
+
+class TestConfigBasedFactory:
+ @pytest.fixture
+ def config_creators(self):
+ return {
+ DummyConfig: lambda config, **kwargs: f"Processed {config.name} with {kwargs.get('extra', 'no extra')}",
+ }
+
+ @pytest.fixture
+ def config_factory(self, config_creators):
+ return ConfigBasedFactory(creators=config_creators)
+
+ def test_get_instance_success(self, config_factory):
+ # Test successful retrieval of an instance
+ config = DummyConfig(name="TestConfig")
+ instance = config_factory.get_instance(config, extra="additional data")
+ assert instance == "Processed TestConfig with additional data"
+
+ def test_get_instance_failure(self, config_factory):
+ # Test failure to retrieve an instance due to unknown config type
+ class UnknownConfig:
+ pass
+
+ config = UnknownConfig()
+ with pytest.raises(ValueError) as exc_info:
+ config_factory.get_instance(config)
+ assert "Unknown config:" in str(exc_info.value)
+
+ def test_val_from_config_or_kwargs_priority(self):
+ # Test that the value from the config object has priority over kwargs
+ config = DummyConfig(name="ConfigName")
+ result = ConfigBasedFactory._val_from_config_or_kwargs("name", config, name="KwargsName")
+ assert result == "ConfigName"
+
+ def test_val_from_config_or_kwargs_fallback_to_kwargs(self):
+ # Test fallback to kwargs when config object does not have the value
+ config = DummyConfig(name=None)
+ result = ConfigBasedFactory._val_from_config_or_kwargs("name", config, name="KwargsName")
+ assert result == "KwargsName"
+
+ def test_val_from_config_or_kwargs_key_error(self):
+ # Test KeyError when the key is not found in both config object and kwargs
+ config = DummyConfig(name=None)
+ with pytest.raises(KeyError) as exc_info:
+ ConfigBasedFactory._val_from_config_or_kwargs("missing_key", config)
+ assert "The key 'missing_key' is required but not provided" in str(exc_info.value)
diff --git a/tests/metagpt/rag/factories/test_ranker.py b/tests/metagpt/rag/factories/test_ranker.py
new file mode 100644
index 000000000..563cffa73
--- /dev/null
+++ b/tests/metagpt/rag/factories/test_ranker.py
@@ -0,0 +1,41 @@
+import pytest
+from llama_index.core.llms import LLM
+from llama_index.core.postprocessor import LLMRerank
+
+from metagpt.rag.factories.ranker import RankerFactory
+from metagpt.rag.schema import LLMRankerConfig
+
+
+class TestRankerFactory:
+ @pytest.fixture
+ def ranker_factory(self) -> RankerFactory:
+ return RankerFactory()
+
+ @pytest.fixture
+ def mock_llm(self, mocker):
+ return mocker.MagicMock(spec=LLM)
+
+ def test_get_rankers_with_no_configs(self, ranker_factory: RankerFactory, mock_llm, mocker):
+ mocker.patch.object(ranker_factory, "_extract_llm", return_value=mock_llm)
+ default_rankers = ranker_factory.get_rankers()
+ assert len(default_rankers) == 0
+
+ def test_get_rankers_with_configs(self, ranker_factory: RankerFactory, mock_llm):
+ mock_config = LLMRankerConfig(llm=mock_llm)
+ rankers = ranker_factory.get_rankers(configs=[mock_config])
+ assert len(rankers) == 1
+ assert isinstance(rankers[0], LLMRerank)
+
+ def test_create_llm_ranker_creates_correct_instance(self, ranker_factory: RankerFactory, mock_llm):
+ mock_config = LLMRankerConfig(llm=mock_llm)
+ ranker = ranker_factory._create_llm_ranker(mock_config)
+ assert isinstance(ranker, LLMRerank)
+
+ def test_extract_llm_from_config(self, ranker_factory: RankerFactory, mock_llm):
+ mock_config = LLMRankerConfig(llm=mock_llm)
+ extracted_llm = ranker_factory._extract_llm(config=mock_config)
+ assert extracted_llm == mock_llm
+
+ def test_extract_llm_from_kwargs(self, ranker_factory: RankerFactory, mock_llm):
+ extracted_llm = ranker_factory._extract_llm(llm=mock_llm)
+ assert extracted_llm == mock_llm
diff --git a/tests/metagpt/rag/factories/test_retriever.py b/tests/metagpt/rag/factories/test_retriever.py
new file mode 100644
index 000000000..ac8926d46
--- /dev/null
+++ b/tests/metagpt/rag/factories/test_retriever.py
@@ -0,0 +1,79 @@
+import faiss
+import pytest
+from llama_index.core import VectorStoreIndex
+
+from metagpt.rag.factories.retriever import RetrieverFactory
+from metagpt.rag.retrievers.bm25_retriever import DynamicBM25Retriever
+from metagpt.rag.retrievers.faiss_retriever import FAISSRetriever
+from metagpt.rag.retrievers.hybrid_retriever import SimpleHybridRetriever
+from metagpt.rag.schema import BM25RetrieverConfig, FAISSRetrieverConfig
+
+
+class TestRetrieverFactory:
+ @pytest.fixture
+ def retriever_factory(self):
+ return RetrieverFactory()
+
+ @pytest.fixture
+ def mock_faiss_index(self, mocker):
+ return mocker.MagicMock(spec=faiss.IndexFlatL2)
+
+ @pytest.fixture
+ def mock_vector_store_index(self, mocker):
+ mock = mocker.MagicMock(spec=VectorStoreIndex)
+ mock._embed_model = mocker.MagicMock()
+ mock.docstore.docs.values.return_value = []
+ return mock
+
+ def test_get_retriever_with_faiss_config(
+ self, retriever_factory: RetrieverFactory, mock_faiss_index, mocker, mock_vector_store_index
+ ):
+ mock_config = FAISSRetrieverConfig(dimensions=128)
+ mocker.patch("faiss.IndexFlatL2", return_value=mock_faiss_index)
+ mocker.patch.object(retriever_factory, "_extract_index", return_value=mock_vector_store_index)
+
+ retriever = retriever_factory.get_retriever(configs=[mock_config])
+
+ assert isinstance(retriever, FAISSRetriever)
+
+ def test_get_retriever_with_bm25_config(self, retriever_factory: RetrieverFactory, mocker, mock_vector_store_index):
+ mock_config = BM25RetrieverConfig()
+ mocker.patch("rank_bm25.BM25Okapi.__init__", return_value=None)
+ mocker.patch.object(retriever_factory, "_extract_index", return_value=mock_vector_store_index)
+
+ retriever = retriever_factory.get_retriever(configs=[mock_config])
+
+ assert isinstance(retriever, DynamicBM25Retriever)
+
+ def test_get_retriever_with_multiple_configs_returns_hybrid(
+ self, retriever_factory: RetrieverFactory, mocker, mock_vector_store_index
+ ):
+ mock_faiss_config = FAISSRetrieverConfig(dimensions=128)
+ mock_bm25_config = BM25RetrieverConfig()
+ mocker.patch("rank_bm25.BM25Okapi.__init__", return_value=None)
+ mocker.patch.object(retriever_factory, "_extract_index", return_value=mock_vector_store_index)
+
+ retriever = retriever_factory.get_retriever(configs=[mock_faiss_config, mock_bm25_config])
+
+ assert isinstance(retriever, SimpleHybridRetriever)
+
+ def test_create_default_retriever(self, retriever_factory: RetrieverFactory, mocker, mock_vector_store_index):
+ mocker.patch.object(retriever_factory, "_extract_index", return_value=mock_vector_store_index)
+ mock_vector_store_index.as_retriever = mocker.MagicMock()
+
+ retriever = retriever_factory.get_retriever()
+
+ mock_vector_store_index.as_retriever.assert_called_once()
+ assert retriever is mock_vector_store_index.as_retriever.return_value
+
+ def test_extract_index_from_config(self, retriever_factory: RetrieverFactory, mock_vector_store_index):
+ mock_config = FAISSRetrieverConfig(index=mock_vector_store_index)
+
+ extracted_index = retriever_factory._extract_index(config=mock_config)
+
+ assert extracted_index == mock_vector_store_index
+
+ def test_extract_index_from_kwargs(self, retriever_factory: RetrieverFactory, mock_vector_store_index):
+ extracted_index = retriever_factory._extract_index(index=mock_vector_store_index)
+
+ assert extracted_index == mock_vector_store_index
diff --git a/tests/metagpt/rag/retrievers/test_bm25_retriever.py b/tests/metagpt/rag/retrievers/test_bm25_retriever.py
new file mode 100644
index 000000000..28b37c86b
--- /dev/null
+++ b/tests/metagpt/rag/retrievers/test_bm25_retriever.py
@@ -0,0 +1,37 @@
+import pytest
+from llama_index.core import VectorStoreIndex
+from llama_index.core.schema import Node
+
+from metagpt.rag.retrievers.bm25_retriever import DynamicBM25Retriever
+
+
+class TestDynamicBM25Retriever:
+ @pytest.fixture(autouse=True)
+ def setup(self, mocker):
+ # 创建模拟的Document对象
+ self.doc1 = mocker.MagicMock(spec=Node)
+ self.doc1.get_content.return_value = "Document content 1"
+ self.doc2 = mocker.MagicMock(spec=Node)
+ self.doc2.get_content.return_value = "Document content 2"
+ self.mock_nodes = [self.doc1, self.doc2]
+
+ # 模拟index
+ index = mocker.MagicMock(spec=VectorStoreIndex)
+
+ # 模拟nodes和tokenizer参数
+ mock_nodes = []
+ mock_tokenizer = mocker.MagicMock()
+ self.mock_bm25okapi = mocker.patch("rank_bm25.BM25Okapi.__init__", return_value=None)
+
+ # 初始化DynamicBM25Retriever对象,并提供必需的参数
+ self.retriever = DynamicBM25Retriever(nodes=mock_nodes, tokenizer=mock_tokenizer, index=index)
+
+ def test_add_docs_updates_nodes_and_corpus(self):
+ # Execute
+ self.retriever.add_nodes(self.mock_nodes)
+
+ # Assertions
+ assert len(self.retriever._nodes) == len(self.mock_nodes)
+ assert len(self.retriever._corpus) == len(self.mock_nodes)
+ self.retriever._tokenizer.assert_called()
+ self.mock_bm25okapi.assert_called()
diff --git a/tests/metagpt/rag/retrievers/test_faiss_retriever.py b/tests/metagpt/rag/retrievers/test_faiss_retriever.py
new file mode 100644
index 000000000..9113f110c
--- /dev/null
+++ b/tests/metagpt/rag/retrievers/test_faiss_retriever.py
@@ -0,0 +1,22 @@
+import pytest
+from llama_index.core.schema import Node
+
+from metagpt.rag.retrievers.faiss_retriever import FAISSRetriever
+
+
+class TestFAISSRetriever:
+ @pytest.fixture(autouse=True)
+ def setup(self, mocker):
+ # 创建模拟的Document对象
+ self.doc1 = mocker.MagicMock(spec=Node)
+ self.doc2 = mocker.MagicMock(spec=Node)
+ self.mock_nodes = [self.doc1, self.doc2]
+
+ # 模拟FAISSRetriever的_index属性
+ self.mock_index = mocker.MagicMock()
+ self.retriever = FAISSRetriever(self.mock_index)
+
+ def test_add_docs_calls_insert_for_each_document(self, mocker):
+ self.retriever.add_nodes(self.mock_nodes)
+
+ assert self.mock_index.insert_nodes.assert_called
diff --git a/tests/metagpt/rag/retrievers/test_hybrid_retriever.py b/tests/metagpt/rag/retrievers/test_hybrid_retriever.py
new file mode 100644
index 000000000..8cc3087c8
--- /dev/null
+++ b/tests/metagpt/rag/retrievers/test_hybrid_retriever.py
@@ -0,0 +1,39 @@
+from unittest.mock import AsyncMock
+
+import pytest
+from llama_index.core.schema import NodeWithScore, TextNode
+
+from metagpt.rag.retrievers import SimpleHybridRetriever
+
+
+class TestSimpleHybridRetriever:
+ @pytest.mark.asyncio
+ async def test_aretrieve(self):
+ question = "test query"
+
+ # Create mock retrievers
+ mock_retriever1 = AsyncMock()
+ mock_retriever1.aretrieve.return_value = [
+ NodeWithScore(node=TextNode(id_="1"), score=1.0),
+ NodeWithScore(node=TextNode(id_="2"), score=0.95),
+ ]
+
+ mock_retriever2 = AsyncMock()
+ mock_retriever2.aretrieve.return_value = [
+ NodeWithScore(node=TextNode(id_="2"), score=0.95),
+ NodeWithScore(node=TextNode(id_="3"), score=0.8),
+ ]
+
+ # Instantiate the SimpleHybridRetriever with the mock retrievers
+ hybrid_retriever = SimpleHybridRetriever(mock_retriever1, mock_retriever2)
+
+ # Call the _aretrieve method
+ results = await hybrid_retriever._aretrieve(question)
+
+ # Check if the results are as expected
+ assert len(results) == 3 # Should be 3 unique nodes
+ assert set(node.node.node_id for node in results) == {"1", "2", "3"}
+
+ # Check if the scores are correct (assuming you want the highest score)
+ node_scores = {node.node.node_id: node.score for node in results}
+ assert node_scores["2"] == 0.95
diff --git a/tests/metagpt/roles/ci/test_code_interpreter.py b/tests/metagpt/roles/ci/test_code_interpreter.py
deleted file mode 100644
index f23292965..000000000
--- a/tests/metagpt/roles/ci/test_code_interpreter.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import pytest
-
-from metagpt.logs import logger
-from metagpt.roles.ci.code_interpreter import CodeInterpreter
-
-
-@pytest.mark.asyncio
-@pytest.mark.parametrize("auto_run", [(True), (False)])
-async def test_code_interpreter(mocker, auto_run):
- mocker.patch("metagpt.actions.ci.execute_nb_code.ExecuteNbCode.run", return_value=("a successful run", True))
- mocker.patch("builtins.input", return_value="confirm")
-
- requirement = "Run data analysis on sklearn Iris dataset, include a plot"
- tools = []
-
- ci = CodeInterpreter(auto_run=auto_run, use_tools=True, tools=tools)
- rsp = await ci.run(requirement)
- logger.info(rsp)
- assert len(rsp.content) > 0
diff --git a/tests/metagpt/roles/ci/test_ml_engineer.py b/tests/metagpt/roles/ci/test_ml_engineer.py
deleted file mode 100644
index 3bf9f3b92..000000000
--- a/tests/metagpt/roles/ci/test_ml_engineer.py
+++ /dev/null
@@ -1,90 +0,0 @@
-import pytest
-
-from metagpt.actions.ci.execute_nb_code import ExecuteNbCode
-from metagpt.logs import logger
-from metagpt.roles.ci.ml_engineer import MLEngineer
-from metagpt.schema import Message, Plan, Task
-from metagpt.tools.tool_type import ToolType
-from tests.metagpt.actions.ci.test_debug_code import CODE, DebugContext, ErrorStr
-
-
-def test_mle_init():
- ci = MLEngineer(goal="test", auto_run=True, use_tools=True, tools=["tool1", "tool2"])
- assert ci.tools == []
-
-
-MockPlan = Plan(
- goal="This is a titanic passenger survival dataset, your goal is to predict passenger survival outcome. The target column is Survived. Perform data analysis, data preprocessing, feature engineering, and modeling to predict the target. Report accuracy on the eval data. Train data path: 'tests/data/ml_datasets/titanic/split_train.csv', eval data path: 'tests/data/ml_datasets/titanic/split_eval.csv'.",
- context="",
- tasks=[
- Task(
- task_id="1",
- dependent_task_ids=[],
- instruction="Perform exploratory data analysis on the train dataset to understand the features and target variable.",
- task_type="eda",
- code="",
- result="",
- is_success=False,
- is_finished=False,
- )
- ],
- task_map={
- "1": Task(
- task_id="1",
- dependent_task_ids=[],
- instruction="Perform exploratory data analysis on the train dataset to understand the features and target variable.",
- task_type="eda",
- code="",
- result="",
- is_success=False,
- is_finished=False,
- )
- },
- current_task_id="1",
-)
-
-
-@pytest.mark.asyncio
-async def test_mle_write_code(mocker):
- data_path = "tests/data/ml_datasets/titanic"
-
- mle = MLEngineer(auto_run=True, use_tools=True)
- mle.planner.plan = MockPlan
-
- code, _ = await mle._write_code()
- assert data_path in code["code"]
-
-
-@pytest.mark.asyncio
-async def test_mle_update_data_columns(mocker):
- mle = MLEngineer(auto_run=True, use_tools=True)
- mle.planner.plan = MockPlan
-
- # manually update task type to test update
- mle.planner.plan.current_task.task_type = ToolType.DATA_PREPROCESS.value
-
- result = await mle._update_data_columns()
- assert result is not None
-
-
-@pytest.mark.asyncio
-async def test_mle_debug_code(mocker):
- mle = MLEngineer(auto_run=True, use_tools=True)
- mle.working_memory.add(Message(content=ErrorStr, cause_by=ExecuteNbCode))
- mle.latest_code = CODE
- mle.debug_context = DebugContext
- code, _ = await mle._write_code()
- assert len(code) > 0
-
-
-@pytest.mark.skip
-@pytest.mark.asyncio
-async def test_ml_engineer():
- data_path = "tests/data/ml_datasets/titanic"
- requirement = f"This is a titanic passenger survival dataset, your goal is to predict passenger survival outcome. The target column is Survived. Perform data analysis, data preprocessing, feature engineering, and modeling to predict the target. Report accuracy on the eval data. Train data path: '{data_path}/split_train.csv', eval data path: '{data_path}/split_eval.csv'."
- tools = ["FillMissingValue", "CatCross", "dummy_tool"]
-
- mle = MLEngineer(auto_run=True, use_tools=True, tools=tools)
- rsp = await mle.run(requirement)
- logger.info(rsp)
- assert len(rsp.content) > 0
diff --git a/tests/metagpt/roles/di/test_data_interpreter.py b/tests/metagpt/roles/di/test_data_interpreter.py
new file mode 100644
index 000000000..e5cc5b29b
--- /dev/null
+++ b/tests/metagpt/roles/di/test_data_interpreter.py
@@ -0,0 +1,34 @@
+import pytest
+
+from metagpt.logs import logger
+from metagpt.roles.di.data_interpreter import DataInterpreter
+
+
+@pytest.mark.asyncio
+@pytest.mark.parametrize("auto_run", [(True), (False)])
+async def test_interpreter(mocker, auto_run):
+ mocker.patch("metagpt.actions.di.execute_nb_code.ExecuteNbCode.run", return_value=("a successful run", True))
+ mocker.patch("builtins.input", return_value="confirm")
+
+ requirement = "Run data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy."
+
+ di = DataInterpreter(auto_run=auto_run)
+ rsp = await di.run(requirement)
+ logger.info(rsp)
+ assert len(rsp.content) > 0
+
+ finished_tasks = di.planner.plan.get_finished_tasks()
+ assert len(finished_tasks) > 0
+ assert len(finished_tasks[0].code) > 0 # check one task to see if code is recorded
+
+
+@pytest.mark.asyncio
+async def test_interpreter_react_mode(mocker):
+ mocker.patch("metagpt.actions.di.execute_nb_code.ExecuteNbCode.run", return_value=("a successful run", True))
+
+ requirement = "Run data analysis on sklearn Wine recognition dataset, include a plot, and train a model to predict wine class (20% as validation), and show validation accuracy."
+
+ di = DataInterpreter(react_mode="react")
+ rsp = await di.run(requirement)
+ logger.info(rsp)
+ assert len(rsp.content) > 0
diff --git a/tests/metagpt/roles/test_assistant.py b/tests/metagpt/roles/test_assistant.py
index bd0efea35..0f67dff46 100644
--- a/tests/metagpt/roles/test_assistant.py
+++ b/tests/metagpt/roles/test_assistant.py
@@ -30,6 +30,17 @@ async def test_run(mocker, context):
language: str
agent_description: str
cause_by: str
+ agent_skills: list
+
+ agent_skills = [
+ {"id": 1, "name": "text_to_speech", "type": "builtin", "config": {}, "enabled": True},
+ {"id": 2, "name": "text_to_image", "type": "builtin", "config": {}, "enabled": True},
+ {"id": 3, "name": "ai_call", "type": "builtin", "config": {}, "enabled": True},
+ {"id": 3, "name": "data_analysis", "type": "builtin", "config": {}, "enabled": True},
+ {"id": 5, "name": "crawler", "type": "builtin", "config": {"engine": "ddg"}, "enabled": True},
+ {"id": 6, "name": "knowledge", "type": "builtin", "config": {}, "enabled": True},
+ {"id": 6, "name": "web_search", "type": "builtin", "config": {}, "enabled": True},
+ ]
inputs = [
{
@@ -48,6 +59,7 @@ async def test_run(mocker, context):
"language": "English",
"agent_description": "chatterbox",
"cause_by": any_to_str(TalkAction),
+ "agent_skills": [],
},
{
"memory": {
@@ -65,24 +77,16 @@ async def test_run(mocker, context):
"language": "English",
"agent_description": "painter",
"cause_by": any_to_str(SkillAction),
+ "agent_skills": agent_skills,
},
]
- agent_skills = [
- {"id": 1, "name": "text_to_speech", "type": "builtin", "config": {}, "enabled": True},
- {"id": 2, "name": "text_to_image", "type": "builtin", "config": {}, "enabled": True},
- {"id": 3, "name": "ai_call", "type": "builtin", "config": {}, "enabled": True},
- {"id": 3, "name": "data_analysis", "type": "builtin", "config": {}, "enabled": True},
- {"id": 5, "name": "crawler", "type": "builtin", "config": {"engine": "ddg"}, "enabled": True},
- {"id": 6, "name": "knowledge", "type": "builtin", "config": {}, "enabled": True},
- {"id": 6, "name": "web_search", "type": "builtin", "config": {}, "enabled": True},
- ]
for i in inputs:
seed = Input(**i)
role = Assistant(language="Chinese", context=context)
role.context.kwargs.language = seed.language
role.context.kwargs.agent_description = seed.agent_description
- role.context.kwargs.agent_skills = agent_skills
+ role.context.kwargs.agent_skills = seed.agent_skills
role.memory = seed.memory # Restore historical conversation content.
while True:
diff --git a/tests/metagpt/roles/test_tutorial_assistant.py b/tests/metagpt/roles/test_tutorial_assistant.py
index c12c2b26e..732f346fd 100644
--- a/tests/metagpt/roles/test_tutorial_assistant.py
+++ b/tests/metagpt/roles/test_tutorial_assistant.py
@@ -6,11 +6,11 @@
@File : test_tutorial_assistant.py
"""
-import aiofiles
import pytest
from metagpt.const import TUTORIAL_PATH
from metagpt.roles.tutorial_assistant import TutorialAssistant
+from metagpt.utils.common import aread
@pytest.mark.asyncio
@@ -20,9 +20,8 @@ async def test_tutorial_assistant(language: str, topic: str, context):
msg = await role.run(topic)
assert TUTORIAL_PATH.exists()
filename = msg.content
- async with aiofiles.open(filename, mode="r", encoding="utf-8") as reader:
- content = await reader.read()
- assert "pip" in content
+ content = await aread(filename=filename)
+ assert "pip" in content
if __name__ == "__main__":
diff --git a/tests/metagpt/strategy/test_planner.py b/tests/metagpt/strategy/test_planner.py
new file mode 100644
index 000000000..ff1c6da3f
--- /dev/null
+++ b/tests/metagpt/strategy/test_planner.py
@@ -0,0 +1,37 @@
+from metagpt.schema import Plan, Task
+from metagpt.strategy.planner import Planner
+from metagpt.strategy.task_type import TaskType
+
+MOCK_TASK_MAP = {
+ "1": Task(
+ task_id="1",
+ instruction="test instruction for finished task",
+ task_type=TaskType.EDA.type_name,
+ dependent_task_ids=[],
+ code="some finished test code",
+ result="some finished test result",
+ is_finished=True,
+ ),
+ "2": Task(
+ task_id="2",
+ instruction="test instruction for current task",
+ task_type=TaskType.DATA_PREPROCESS.type_name,
+ dependent_task_ids=["1"],
+ ),
+}
+MOCK_PLAN = Plan(
+ goal="test goal",
+ tasks=list(MOCK_TASK_MAP.values()),
+ task_map=MOCK_TASK_MAP,
+ current_task_id="2",
+)
+
+
+def test_planner_get_plan_status():
+ planner = Planner(plan=MOCK_PLAN)
+ status = planner.get_plan_status()
+
+ assert "some finished test code" in status
+ assert "some finished test result" in status
+ assert "test instruction for current task" in status
+ assert TaskType.DATA_PREPROCESS.value.guidance in status # current task guidance
diff --git a/tests/metagpt/test_repo_parser.py b/tests/metagpt/test_repo_parser.py
index e355733f3..c2ec4d819 100644
--- a/tests/metagpt/test_repo_parser.py
+++ b/tests/metagpt/test_repo_parser.py
@@ -1,9 +1,11 @@
from pathlib import Path
from pprint import pformat
+import pytest
+
from metagpt.const import METAGPT_ROOT
from metagpt.logs import logger
-from metagpt.repo_parser import RepoParser
+from metagpt.repo_parser import DotClassAttribute, DotClassMethod, DotReturn, RepoParser
def test_repo_parser():
@@ -23,3 +25,140 @@ def test_error():
"""_parse_file should return empty list when file not existed"""
rsp = RepoParser._parse_file(Path("test_not_existed_file.py"))
assert rsp == []
+
+
+@pytest.mark.parametrize(
+ ("v", "name", "type_", "default_", "compositions"),
+ [
+ ("children : dict[str, 'ActionNode']", "children", "dict[str,ActionNode]", "", ["ActionNode"]),
+ ("context : str", "context", "str", "", []),
+ ("example", "example", "", "", []),
+ ("expected_type : Type", "expected_type", "Type", "", ["Type"]),
+ ("args : Optional[Dict]", "args", "Optional[Dict]", "", []),
+ ("rsp : Optional[Message] = Message.Default", "rsp", "Optional[Message]", "Message.Default", ["Message"]),
+ (
+ "browser : Literal['chrome', 'firefox', 'edge', 'ie']",
+ "browser",
+ "Literal['chrome','firefox','edge','ie']",
+ "",
+ [],
+ ),
+ (
+ "browser : Dict[ Message, Literal['chrome', 'firefox', 'edge', 'ie'] ]",
+ "browser",
+ "Dict[Message,Literal['chrome','firefox','edge','ie']]",
+ "",
+ ["Message"],
+ ),
+ ("attributes : List[ClassAttribute]", "attributes", "List[ClassAttribute]", "", ["ClassAttribute"]),
+ ("attributes = []", "attributes", "", "[]", []),
+ (
+ "request_timeout: Optional[Union[float, Tuple[float, float]]]",
+ "request_timeout",
+ "Optional[Union[float,Tuple[float,float]]]",
+ "",
+ [],
+ ),
+ ],
+)
+def test_parse_member(v, name, type_, default_, compositions):
+ attr = DotClassAttribute.parse(v)
+ assert name == attr.name
+ assert type_ == attr.type_
+ assert default_ == attr.default_
+ assert compositions == attr.compositions
+ assert v == attr.description
+
+ json_data = attr.model_dump_json()
+ v = DotClassAttribute.model_validate_json(json_data)
+ assert v == attr
+
+
+@pytest.mark.parametrize(
+ ("line", "package_name", "info"),
+ [
+ (
+ '"metagpt.roles.architect.Architect" [color="black", fontcolor="black", label=<{Architect|constraints : str goal : str name : str profile : str |}>, shape="record", style="solid"];',
+ "metagpt.roles.architect.Architect",
+ "Architect|constraints : str\ngoal : str\nname : str\nprofile : str\n|",
+ ),
+ (
+ '"metagpt.actions.skill_action.ArgumentsParingAction" [color="black", fontcolor="black", label=<{ArgumentsParingAction|args : Optional[Dict] ask : str prompt rsp : Optional[Message] skill |parse_arguments(skill_name, txt): dict run(with_message): Message }>, shape="record", style="solid"];',
+ "metagpt.actions.skill_action.ArgumentsParingAction",
+ "ArgumentsParingAction|args : Optional[Dict]\nask : str\nprompt\nrsp : Optional[Message]\nskill\n|parse_arguments(skill_name, txt): dict\nrun(with_message): Message\n",
+ ),
+ (
+ '"metagpt.strategy.base.BaseEvaluator" [color="black", fontcolor="black", label=<{BaseEvaluator| |status_verify () }>, shape="record", style="solid"];',
+ "metagpt.strategy.base.BaseEvaluator",
+ "BaseEvaluator|\n|status_verify ()\n",
+ ),
+ (
+ '"metagpt.configs.browser_config.BrowserConfig" [color="black", fontcolor="black", label=<{BrowserConfig|browser : Literal[\'chrome\', \'firefox\', \'edge\', \'ie\'] driver : Literal[\'chromium\', \'firefox\', \'webkit\'] engine path : str |}>, shape="record", style="solid"];',
+ "metagpt.configs.browser_config.BrowserConfig",
+ "BrowserConfig|browser : Literal['chrome', 'firefox', 'edge', 'ie']\ndriver : Literal['chromium', 'firefox', 'webkit']\nengine\npath : str\n|",
+ ),
+ (
+ '"metagpt.tools.search_engine_serpapi.SerpAPIWrapper" [color="black", fontcolor="black", label=<{SerpAPIWrapper|aiosession : Optional[aiohttp.ClientSession] model_config params : dict search_engine : Optional[Any] serpapi_api_key : Optional[str] |check_serpapi_api_key(val: str) get_params(query: str): Dict[str, str] results(query: str, max_results: int): dict run(query, max_results: int, as_string: bool): str }>, shape="record", style="solid"];',
+ "metagpt.tools.search_engine_serpapi.SerpAPIWrapper",
+ "SerpAPIWrapper|aiosession : Optional[aiohttp.ClientSession]\nmodel_config\nparams : dict\nsearch_engine : Optional[Any]\nserpapi_api_key : Optional[str]\n|check_serpapi_api_key(val: str)\nget_params(query: str): Dict[str, str]\nresults(query: str, max_results: int): dict\nrun(query, max_results: int, as_string: bool): str\n",
+ ),
+ ],
+)
+def test_split_class_line(line, package_name, info):
+ p, i = RepoParser._split_class_line(line)
+ assert p == package_name
+ assert i == info
+
+
+@pytest.mark.parametrize(
+ ("v", "name", "args", "return_args"),
+ [
+ (
+ "arequest (method, url, params, headers, files, stream: Literal[True], request_id: Optional[str], request_timeout: Optional[Union[float, Tuple[float, float]]]): Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]",
+ "arequest",
+ [
+ DotClassAttribute(name="method", description="method"),
+ DotClassAttribute(name="url", description="url"),
+ DotClassAttribute(name="params", description="params"),
+ DotClassAttribute(name="headers", description="headers"),
+ DotClassAttribute(name="files", description="files"),
+ DotClassAttribute(name="stream", type_="Literal[True]", description="stream: Literal[True]"),
+ DotClassAttribute(name="request_id", type_="Optional[str]", description="request_id: Optional[str]"),
+ DotClassAttribute(
+ name="request_timeout",
+ type_="Optional[Union[float,Tuple[float,float]]]",
+ description="request_timeout: Optional[Union[float, Tuple[float, float]]]",
+ ),
+ ],
+ DotReturn(
+ type_="Tuple[AsyncGenerator[OpenAIResponse,None],bool,str]",
+ compositions=["AsyncGenerator", "OpenAIResponse"],
+ description="Tuple[AsyncGenerator[OpenAIResponse, None], bool, str]",
+ ),
+ ),
+ (
+ "update (subject: str, predicate: str, object_: str)",
+ "update",
+ [
+ DotClassAttribute(name="subject", type_="str", description="subject: str"),
+ DotClassAttribute(name="predicate", type_="str", description="predicate: str"),
+ DotClassAttribute(name="object_", type_="str", description="object_: str"),
+ ],
+ DotReturn(description=""),
+ ),
+ ],
+)
+def test_parse_method(v, name, args, return_args):
+ method = DotClassMethod.parse(v)
+ assert method.name == name
+ assert method.args == args
+ assert method.return_args == return_args
+ assert method.description == v
+
+ json_data = method.model_dump_json()
+ v = DotClassMethod.model_validate_json(json_data)
+ assert v == method
+
+
+if __name__ == "__main__":
+ pytest.main([__file__, "-s"])
diff --git a/tests/metagpt/test_schema.py b/tests/metagpt/test_schema.py
index a8fa27151..22f6ae9fb 100644
--- a/tests/metagpt/test_schema.py
+++ b/tests/metagpt/test_schema.py
@@ -18,9 +18,6 @@ from metagpt.actions.write_code import WriteCode
from metagpt.const import SYSTEM_DESIGN_FILE_REPO, TASK_FILE_REPO
from metagpt.schema import (
AIMessage,
- ClassAttribute,
- ClassMethod,
- ClassView,
CodeSummarizeContext,
Document,
Message,
@@ -28,6 +25,9 @@ from metagpt.schema import (
Plan,
SystemMessage,
Task,
+ UMLClassAttribute,
+ UMLClassMethod,
+ UMLClassView,
UserMessage,
)
from metagpt.utils.common import any_to_str
@@ -159,27 +159,26 @@ def test_CodeSummarizeContext(file_list, want):
def test_class_view():
- attr_a = ClassAttribute(name="a", value_type="int", default_value="0", visibility="+", abstraction=True)
- assert attr_a.get_mermaid(align=1) == "\t+int a=0*"
- attr_b = ClassAttribute(name="b", value_type="str", default_value="0", visibility="#", static=True)
- assert attr_b.get_mermaid(align=0) == '#str b="0"$'
- class_view = ClassView(name="A")
+ attr_a = UMLClassAttribute(name="a", value_type="int", default_value="0", visibility="+")
+ assert attr_a.get_mermaid(align=1) == "\t+int a=0"
+ attr_b = UMLClassAttribute(name="b", value_type="str", default_value="0", visibility="#")
+ assert attr_b.get_mermaid(align=0) == '#str b="0"'
+ class_view = UMLClassView(name="A")
class_view.attributes = [attr_a, attr_b]
- method_a = ClassMethod(name="run", visibility="+", abstraction=True)
- assert method_a.get_mermaid(align=1) == "\t+run()*"
- method_b = ClassMethod(
+ method_a = UMLClassMethod(name="run", visibility="+")
+ assert method_a.get_mermaid(align=1) == "\t+run()"
+ method_b = UMLClassMethod(
name="_test",
visibility="#",
- static=True,
- args=[ClassAttribute(name="a", value_type="str"), ClassAttribute(name="b", value_type="int")],
+ args=[UMLClassAttribute(name="a", value_type="str"), UMLClassAttribute(name="b", value_type="int")],
return_type="str",
)
- assert method_b.get_mermaid(align=0) == "#_test(str a,int b):str$"
+ assert method_b.get_mermaid(align=0) == "#_test(str a,int b) str"
class_view.methods = [method_a, method_b]
assert (
class_view.get_mermaid(align=0)
- == 'class A{\n\t+int a=0*\n\t#str b="0"$\n\t+run()*\n\t#_test(str a,int b):str$\n}\n'
+ == 'class A{\n\t+int a=0\n\t#str b="0"\n\t+run()\n\t#_test(str a,int b) str\n}\n'
)
diff --git a/tests/metagpt/tools/libs/test_email_login.py b/tests/metagpt/tools/libs/test_email_login.py
new file mode 100644
index 000000000..e98820f70
--- /dev/null
+++ b/tests/metagpt/tools/libs/test_email_login.py
@@ -0,0 +1,7 @@
+from metagpt.tools.libs.email_login import email_login_imap
+
+
+def test_email_login(mocker):
+ mock_mailbox = mocker.patch("metagpt.tools.libs.email_login.MailBox.login")
+ mock_mailbox.login.return_value = mocker.Mock()
+ email_login_imap("test@outlook.com", "test_password")
diff --git a/tests/metagpt/tools/libs/test_gpt_v_generator.py b/tests/metagpt/tools/libs/test_gpt_v_generator.py
index 907006765..4a2e68682 100644
--- a/tests/metagpt/tools/libs/test_gpt_v_generator.py
+++ b/tests/metagpt/tools/libs/test_gpt_v_generator.py
@@ -60,18 +60,24 @@ async def test_generate_webpages(mock_webpage_filename_with_styles_and_scripts,
async def test_save_webpages_with_styles_and_scripts(mock_webpage_filename_with_styles_and_scripts, image_path):
generator = GPTvGenerator()
webpages = await generator.generate_webpages(image_path)
- webpages_dir = generator.save_webpages(image_path=image_path, webpages=webpages)
+ webpages_dir = generator.save_webpages(webpages=webpages, save_folder_name="test_1")
logs.logger.info(webpages_dir)
assert webpages_dir.exists()
+ assert (webpages_dir / "index.html").exists()
+ assert (webpages_dir / "styles.css").exists()
+ assert (webpages_dir / "scripts.js").exists()
@pytest.mark.asyncio
async def test_save_webpages_with_style_and_script(mock_webpage_filename_with_style_and_script, image_path):
generator = GPTvGenerator()
webpages = await generator.generate_webpages(image_path)
- webpages_dir = generator.save_webpages(image_path=image_path, webpages=webpages)
+ webpages_dir = generator.save_webpages(webpages=webpages, save_folder_name="test_2")
logs.logger.info(webpages_dir)
assert webpages_dir.exists()
+ assert (webpages_dir / "index.html").exists()
+ assert (webpages_dir / "style.css").exists()
+ assert (webpages_dir / "script.js").exists()
@pytest.mark.asyncio
diff --git a/tests/metagpt/tools/libs/test_web_scraping.py b/tests/metagpt/tools/libs/test_web_scraping.py
index c11960e68..3d8877b8d 100644
--- a/tests/metagpt/tools/libs/test_web_scraping.py
+++ b/tests/metagpt/tools/libs/test_web_scraping.py
@@ -4,8 +4,8 @@ from metagpt.tools.libs.web_scraping import scrape_web_playwright
@pytest.mark.asyncio
-async def test_scrape_web_playwright():
- test_url = "https://www.deepwisdom.ai"
+async def test_scrape_web_playwright(http_server):
+ server, test_url = await http_server()
result = await scrape_web_playwright(test_url)
@@ -21,3 +21,4 @@ async def test_scrape_web_playwright():
assert not result["inner_text"].endswith(" ")
assert not result["html"].startswith(" ")
assert not result["html"].endswith(" ")
+ await server.stop()
diff --git a/tests/metagpt/tools/test_search_engine.py b/tests/metagpt/tools/test_search_engine.py
index a1f03ef7b..964ead02f 100644
--- a/tests/metagpt/tools/test_search_engine.py
+++ b/tests/metagpt/tools/test_search_engine.py
@@ -11,7 +11,6 @@ from typing import Callable
import pytest
-from metagpt.config2 import config
from metagpt.configs.search_config import SearchConfig
from metagpt.logs import logger
from metagpt.tools import SearchEngineType
@@ -53,14 +52,11 @@ async def test_search_engine(
search_engine_config = {"engine": search_engine_type, "run_func": run_func}
if search_engine_type is SearchEngineType.SERPAPI_GOOGLE:
- assert config.search
search_engine_config["api_key"] = "mock-serpapi-key"
elif search_engine_type is SearchEngineType.DIRECT_GOOGLE:
- assert config.search
search_engine_config["api_key"] = "mock-google-key"
search_engine_config["cse_id"] = "mock-google-cse"
elif search_engine_type is SearchEngineType.SERPER_GOOGLE:
- assert config.search
search_engine_config["api_key"] = "mock-serper-key"
async def test(search_engine):
diff --git a/tests/metagpt/tools/test_tool_convert.py b/tests/metagpt/tools/test_tool_convert.py
index 8f26a211c..061a619ce 100644
--- a/tests/metagpt/tools/test_tool_convert.py
+++ b/tests/metagpt/tools/test_tool_convert.py
@@ -1,44 +1,8 @@
+from typing import Literal, Union
+
import pandas as pd
-from metagpt.tools.tool_convert import convert_code_to_tool_schema, docstring_to_schema
-
-
-def test_docstring_to_schema():
- docstring = """
- Some test desc.
-
- Args:
- features (list): Columns to be processed.
- strategy (str, optional): The imputation strategy, notice 'mean' and 'median' can only be
- used for numeric features. Enum: ['mean', 'median', 'most_frequent', 'constant']. Defaults to 'mean'.
- fill_value (int, optional): Fill_value is used to replace all occurrences of missing_values.
- Defaults to None.
- Returns:
- pd.DataFrame: The transformed DataFrame.
- """
- expected = {
- "description": "Some test desc.",
- "parameters": {
- "properties": {
- "features": {"type": "list", "description": "Columns to be processed."},
- "strategy": {
- "type": "str",
- "description": "The imputation strategy, notice 'mean' and 'median' can only be used for numeric features. Enum: ['mean', 'median', 'most_frequent', 'constant']. Defaults to 'mean'.",
- "default": "'mean'",
- "enum": ["'mean'", "'median'", "'most_frequent'", "'constant'"],
- },
- "fill_value": {
- "type": "int",
- "description": "Fill_value is used to replace all occurrences of missing_values. Defaults to None.",
- "default": "None",
- },
- },
- "required": ["features"],
- },
- "returns": [{"type": "pd.DataFrame", "description": "The transformed DataFrame."}],
- }
- schema = docstring_to_schema(docstring)
- assert schema == expected
+from metagpt.tools.tool_convert import convert_code_to_tool_schema
class DummyClass:
@@ -81,12 +45,25 @@ class DummyClass:
pass
-def dummy_fn(df: pd.DataFrame) -> dict:
+def dummy_fn(
+ df: pd.DataFrame,
+ s: str,
+ k: int = 5,
+ type: Literal["a", "b", "c"] = "a",
+ test_dict: dict[str, int] = None,
+ test_union: Union[str, list[str]] = "",
+) -> dict:
"""
Analyzes a DataFrame and categorizes its columns based on data types.
Args:
- df (pd.DataFrame): The DataFrame to be analyzed.
+ df: The DataFrame to be analyzed.
+ Another line for df.
+ s (str): Some test string param.
+ Another line for s.
+ k (int, optional): Some test integer param. Defaults to 5.
+ type (Literal["a", "b", "c"], optional): Some test type. Defaults to 'a'.
+ more_args: will be omitted here for testing
Returns:
dict: A dictionary with four keys ('Category', 'Numeric', 'Datetime', 'Others').
@@ -115,41 +92,21 @@ def test_convert_code_to_tool_schema_class():
"methods": {
"__init__": {
"type": "function",
- "description": "Initialize self.",
- "parameters": {
- "properties": {
- "features": {"type": "list", "description": "Columns to be processed."},
- "strategy": {
- "type": "str",
- "description": "The imputation strategy, notice 'mean' and 'median' can only be used for numeric features. Enum: ['mean', 'median', 'most_frequent', 'constant']. Defaults to 'mean'.",
- "default": "'mean'",
- "enum": ["'mean'", "'median'", "'most_frequent'", "'constant'"],
- },
- "fill_value": {
- "type": "int",
- "description": "Fill_value is used to replace all occurrences of missing_values. Defaults to None.",
- "default": "None",
- },
- },
- "required": ["features"],
- },
+ "description": "Initialize self. ",
+ "signature": "(self, features: list, strategy: str = 'mean', fill_value=None)",
+ "parameters": "Args: features (list): Columns to be processed. strategy (str, optional): The imputation strategy, notice 'mean' and 'median' can only be used for numeric features. Enum: ['mean', 'median', 'most_frequent', 'constant']. Defaults to 'mean'. fill_value (int, optional): Fill_value is used to replace all occurrences of missing_values. Defaults to None.",
},
"fit": {
"type": "function",
- "description": "Fit the FillMissingValue model.",
- "parameters": {
- "properties": {"df": {"type": "pd.DataFrame", "description": "The input DataFrame."}},
- "required": ["df"],
- },
+ "description": "Fit the FillMissingValue model. ",
+ "signature": "(self, df: pandas.core.frame.DataFrame)",
+ "parameters": "Args: df (pd.DataFrame): The input DataFrame.",
},
"transform": {
"type": "function",
- "description": "Transform the input DataFrame with the fitted model.",
- "parameters": {
- "properties": {"df": {"type": "pd.DataFrame", "description": "The input DataFrame."}},
- "required": ["df"],
- },
- "returns": [{"type": "pd.DataFrame", "description": "The transformed DataFrame."}],
+ "description": "Transform the input DataFrame with the fitted model. ",
+ "signature": "(self, df: pandas.core.frame.DataFrame) -> pandas.core.frame.DataFrame",
+ "parameters": "Args: df (pd.DataFrame): The input DataFrame. Returns: pd.DataFrame: The transformed DataFrame.",
},
},
}
@@ -160,11 +117,9 @@ def test_convert_code_to_tool_schema_class():
def test_convert_code_to_tool_schema_function():
expected = {
"type": "function",
- "description": "Analyzes a DataFrame and categorizes its columns based on data types.",
- "parameters": {
- "properties": {"df": {"type": "pd.DataFrame", "description": "The DataFrame to be analyzed."}},
- "required": ["df"],
- },
+ "description": "Analyzes a DataFrame and categorizes its columns based on data types. ",
+ "signature": "(df: pandas.core.frame.DataFrame, s: str, k: int = 5, type: Literal['a', 'b', 'c'] = 'a', test_dict: dict[str, int] = None, test_union: Union[str, list[str]] = '') -> dict",
+ "parameters": "Args: df: The DataFrame to be analyzed. Another line for df. s (str): Some test string param. Another line for s. k (int, optional): Some test integer param. Defaults to 5. type (Literal[\"a\", \"b\", \"c\"], optional): Some test type. Defaults to 'a'. more_args: will be omitted here for testing Returns: dict: A dictionary with four keys ('Category', 'Numeric', 'Datetime', 'Others'). Each key corresponds to a list of column names belonging to that category.",
}
schema = convert_code_to_tool_schema(dummy_fn)
assert schema == expected
diff --git a/tests/metagpt/tools/test_tool_recommend.py b/tests/metagpt/tools/test_tool_recommend.py
new file mode 100644
index 000000000..fafe0a638
--- /dev/null
+++ b/tests/metagpt/tools/test_tool_recommend.py
@@ -0,0 +1,90 @@
+import pytest
+
+from metagpt.schema import Plan, Task
+from metagpt.tools import TOOL_REGISTRY
+from metagpt.tools.tool_recommend import (
+ BM25ToolRecommender,
+ ToolRecommender,
+ TypeMatchToolRecommender,
+)
+
+
+@pytest.fixture
+def mock_plan(mocker):
+ task_map = {
+ "1": Task(
+ task_id="1",
+ instruction="conduct feature engineering, add new features on the dataset",
+ task_type="feature engineering",
+ )
+ }
+ plan = Plan(
+ goal="test requirement",
+ tasks=list(task_map.values()),
+ task_map=task_map,
+ current_task_id="1",
+ )
+ return plan
+
+
+@pytest.fixture
+def mock_bm25_tr(mocker):
+ tr = BM25ToolRecommender(tools=["FillMissingValue", "PolynomialExpansion", "web scraping"])
+ return tr
+
+
+def test_tr_init():
+ tr = ToolRecommender(tools=["FillMissingValue", "PolynomialExpansion", "web scraping", "non-existing tool"])
+ # web_scraping is a tool tag, it has one tool scrape_web_playwright
+ assert list(tr.tools.keys()) == [
+ "FillMissingValue",
+ "PolynomialExpansion",
+ "scrape_web_playwright",
+ ]
+
+
+def test_tr_init_default_tools_value():
+ tr = ToolRecommender()
+ assert tr.tools == {}
+
+
+def test_tr_init_tools_all():
+ tr = ToolRecommender(tools=[""])
+ assert list(tr.tools.keys()) == list(TOOL_REGISTRY.get_all_tools().keys())
+
+
+@pytest.mark.asyncio
+async def test_bm25_tr_recall_with_plan(mock_plan, mock_bm25_tr):
+ result = await mock_bm25_tr.recall_tools(plan=mock_plan)
+ assert len(result) == 3
+ assert result[0].name == "PolynomialExpansion"
+
+
+@pytest.mark.asyncio
+async def test_bm25_tr_recall_no_plan(mock_plan, mock_bm25_tr):
+ result = await mock_bm25_tr.recall_tools(
+ context="conduct feature engineering, add new features on the dataset", plan=None
+ )
+ assert len(result) == 3
+ assert result[0].name == "PolynomialExpansion"
+
+
+@pytest.mark.asyncio
+async def test_bm25_recommend_tools(mock_bm25_tr):
+ result = await mock_bm25_tr.recommend_tools(context="conduct feature engineering, add new features on the dataset")
+ assert len(result) == 2 # web scraping tool should be filtered out at rank stage
+ assert result[0].name == "PolynomialExpansion"
+
+
+@pytest.mark.asyncio
+async def test_get_recommended_tool_info(mock_plan, mock_bm25_tr):
+ result = await mock_bm25_tr.get_recommended_tool_info(plan=mock_plan)
+ assert isinstance(result, str)
+
+
+@pytest.mark.asyncio
+async def test_tm_tr_recall_with_plan(mock_plan, mock_bm25_tr):
+ tr = TypeMatchToolRecommender(tools=["FillMissingValue", "PolynomialExpansion", "web scraping"])
+ result = await tr.recall_tools(plan=mock_plan)
+ assert len(result) == 1
+ assert result[0].name == "PolynomialExpansion"
diff --git a/tests/metagpt/tools/test_tool_registry.py b/tests/metagpt/tools/test_tool_registry.py
index 2fd487fb7..f44dfea0b 100644
--- a/tests/metagpt/tools/test_tool_registry.py
+++ b/tests/metagpt/tools/test_tool_registry.py
@@ -1,7 +1,6 @@
import pytest
from metagpt.tools.tool_registry import ToolRegistry
-from metagpt.tools.tool_type import ToolType
@pytest.fixture
@@ -9,25 +8,11 @@ def tool_registry():
return ToolRegistry()
-@pytest.fixture
-def tool_registry_full():
- return ToolRegistry(tool_types=ToolType)
-
-
# Test Initialization
def test_initialization(tool_registry):
assert isinstance(tool_registry, ToolRegistry)
assert tool_registry.tools == {}
- assert tool_registry.tool_types == {}
- assert tool_registry.tools_by_types == {}
-
-
-# Test Initialization with tool types
-def test_initialize_with_tool_types(tool_registry_full):
- assert isinstance(tool_registry_full, ToolRegistry)
- assert tool_registry_full.tools == {}
- assert tool_registry_full.tools_by_types == {}
- assert "data_preprocess" in tool_registry_full.tool_types
+ assert tool_registry.tools_by_tags == {}
class TestClassTool:
@@ -72,31 +57,24 @@ def test_get_tool(tool_registry):
assert "description" in tool.schemas
-# Similar tests for has_tool_type, get_tool_type, get_tools_by_type
-def test_has_tool_type(tool_registry_full):
- assert tool_registry_full.has_tool_type("data_preprocess")
- assert not tool_registry_full.has_tool_type("NonexistentType")
+def test_has_tool_tag(tool_registry):
+ tool_registry.register_tool(
+ "TestClassTool", "/path/to/tool", tool_source_object=TestClassTool, tags=["machine learning", "test"]
+ )
+ assert tool_registry.has_tool_tag("test")
+ assert not tool_registry.has_tool_tag("Non-existent tag")
-def test_get_tool_type(tool_registry_full):
- retrieved_type = tool_registry_full.get_tool_type("data_preprocess")
- assert retrieved_type is not None
- assert retrieved_type.name == "data_preprocess"
-
-
-def test_get_tools_by_type(tool_registry):
- tool_type_name = "TestType"
+def test_get_tools_by_tag(tool_registry):
+ tool_tag_name = "Test Tag"
tool_name = "TestTool"
tool_path = "/path/to/tool"
- tool_registry.register_tool(tool_name, tool_path, tool_type=tool_type_name, tool_source_object=TestClassTool)
+ tool_registry.register_tool(tool_name, tool_path, tags=[tool_tag_name], tool_source_object=TestClassTool)
- tools_by_type = tool_registry.get_tools_by_type(tool_type_name)
- assert tools_by_type is not None
- assert tool_name in tools_by_type
+ tools_by_tag = tool_registry.get_tools_by_tag(tool_tag_name)
+ assert tools_by_tag is not None
+ assert tool_name in tools_by_tag
-
-# Test case for when the tool type does not exist
-def test_get_tools_by_nonexistent_type(tool_registry):
- tools_by_type = tool_registry.get_tools_by_type("NonexistentType")
- assert not tools_by_type
+ tools_by_tag_non_existent = tool_registry.get_tools_by_tag("Non-existent Tag")
+ assert not tools_by_tag_non_existent
diff --git a/tests/metagpt/tools/test_web_browser_engine.py b/tests/metagpt/tools/test_web_browser_engine.py
index ceebd67fc..7a344e0ad 100644
--- a/tests/metagpt/tools/test_web_browser_engine.py
+++ b/tests/metagpt/tools/test_web_browser_engine.py
@@ -9,14 +9,16 @@ from metagpt.utils.parse_html import WebPage
@pytest.mark.asyncio
@pytest.mark.parametrize(
- "browser_type, url, urls",
+ "browser_type",
[
- (WebBrowserEngineType.PLAYWRIGHT, "https://deepwisdom.ai", ("https://deepwisdom.ai",)),
- (WebBrowserEngineType.SELENIUM, "https://deepwisdom.ai", ("https://deepwisdom.ai",)),
+ WebBrowserEngineType.PLAYWRIGHT,
+ WebBrowserEngineType.SELENIUM,
],
ids=["playwright", "selenium"],
)
-async def test_scrape_web_page(browser_type, url, urls):
+async def test_scrape_web_page(browser_type, http_server):
+ server, url = await http_server()
+ urls = [url, url, url]
browser = web_browser_engine.WebBrowserEngine(engine=browser_type)
result = await browser.run(url)
assert isinstance(result, WebPage)
@@ -27,6 +29,7 @@ async def test_scrape_web_page(browser_type, url, urls):
assert isinstance(results, list)
assert len(results) == len(urls) + 1
assert all(("MetaGPT" in i.inner_text) for i in results)
+ await server.stop()
if __name__ == "__main__":
diff --git a/tests/metagpt/tools/test_web_browser_engine_playwright.py b/tests/metagpt/tools/test_web_browser_engine_playwright.py
index f35848cf4..12ea96d7b 100644
--- a/tests/metagpt/tools/test_web_browser_engine_playwright.py
+++ b/tests/metagpt/tools/test_web_browser_engine_playwright.py
@@ -9,18 +9,28 @@ from metagpt.utils.parse_html import WebPage
@pytest.mark.asyncio
@pytest.mark.parametrize(
- "browser_type, use_proxy, kwagrs, url, urls",
+ "browser_type, use_proxy, kwagrs,",
[
- ("chromium", {"proxy": True}, {}, "https://www.deepwisdom.ai", ("https://www.deepwisdom.ai",)),
- ("firefox", {}, {"ignore_https_errors": True}, "https://www.deepwisdom.ai", ("https://www.deepwisdom.ai",)),
- ("webkit", {}, {"ignore_https_errors": True}, "https://www.deepwisdom.ai", ("https://www.deepwisdom.ai",)),
+ ("chromium", {"proxy": True}, {}),
+ (
+ "firefox",
+ {},
+ {"ignore_https_errors": True},
+ ),
+ (
+ "webkit",
+ {},
+ {"ignore_https_errors": True},
+ ),
],
ids=["chromium-normal", "firefox-normal", "webkit-normal"],
)
-async def test_scrape_web_page(browser_type, use_proxy, kwagrs, url, urls, proxy, capfd):
+async def test_scrape_web_page(browser_type, use_proxy, kwagrs, proxy, capfd, http_server):
+ server, url = await http_server()
+ urls = [url, url, url]
proxy_url = None
if use_proxy:
- server, proxy_url = await proxy()
+ proxy_server, proxy_url = await proxy()
browser = web_browser_engine_playwright.PlaywrightWrapper(browser_type=browser_type, proxy=proxy_url, **kwagrs)
result = await browser.run(url)
assert isinstance(result, WebPage)
@@ -32,8 +42,10 @@ async def test_scrape_web_page(browser_type, use_proxy, kwagrs, url, urls, proxy
assert len(results) == len(urls) + 1
assert all(("MetaGPT" in i.inner_text) for i in results)
if use_proxy:
- server.close()
+ proxy_server.close()
+ await proxy_server.wait_closed()
assert "Proxy:" in capfd.readouterr().out
+ await server.stop()
if __name__ == "__main__":
diff --git a/tests/metagpt/tools/test_web_browser_engine_selenium.py b/tests/metagpt/tools/test_web_browser_engine_selenium.py
index a88a5d0f4..a214748bd 100644
--- a/tests/metagpt/tools/test_web_browser_engine_selenium.py
+++ b/tests/metagpt/tools/test_web_browser_engine_selenium.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
+
import browsers
import pytest
@@ -10,51 +11,48 @@ from metagpt.utils.parse_html import WebPage
@pytest.mark.asyncio
@pytest.mark.parametrize(
- "browser_type, use_proxy, url, urls",
+ "browser_type, use_proxy,",
[
pytest.param(
"chrome",
- True,
- "https://deepwisdom.ai",
- ("https://deepwisdom.ai",),
+ False,
marks=pytest.mark.skipif(not browsers.get("chrome"), reason="chrome browser not found"),
),
pytest.param(
"firefox",
False,
- "https://deepwisdom.ai",
- ("https://deepwisdom.ai",),
marks=pytest.mark.skipif(not browsers.get("firefox"), reason="firefox browser not found"),
),
pytest.param(
"edge",
False,
- "https://deepwisdom.ai",
- ("https://deepwisdom.ai",),
marks=pytest.mark.skipif(not browsers.get("msedge"), reason="edge browser not found"),
),
],
ids=["chrome-normal", "firefox-normal", "edge-normal"],
)
-async def test_scrape_web_page(browser_type, use_proxy, url, urls, proxy, capfd):
+async def test_scrape_web_page(browser_type, use_proxy, proxy, capfd, http_server):
# Prerequisites
# firefox, chrome, Microsoft Edge
+ server, url = await http_server()
+ urls = [url, url, url]
proxy_url = None
if use_proxy:
- server, proxy_url = await proxy()
+ proxy_server, proxy_url = await proxy()
browser = web_browser_engine_selenium.SeleniumWrapper(browser_type=browser_type, proxy=proxy_url)
result = await browser.run(url)
assert isinstance(result, WebPage)
assert "MetaGPT" in result.inner_text
- if urls:
- results = await browser.run(url, *urls)
- assert isinstance(results, list)
- assert len(results) == len(urls) + 1
- assert all(("MetaGPT" in i.inner_text) for i in results)
+ results = await browser.run(url, *urls)
+ assert isinstance(results, list)
+ assert len(results) == len(urls) + 1
+ assert all(("MetaGPT" in i.inner_text) for i in results)
if use_proxy:
- server.close()
- assert "Proxy:" in capfd.readouterr().out
+ proxy_server.close()
+ await proxy_server.wait_closed()
+ assert "Proxy: localhost" in capfd.readouterr().out
+ await server.stop()
if __name__ == "__main__":
diff --git a/tests/metagpt/utils/test_common.py b/tests/metagpt/utils/test_common.py
index 9b1fa878e..75e8ef4ad 100644
--- a/tests/metagpt/utils/test_common.py
+++ b/tests/metagpt/utils/test_common.py
@@ -13,7 +13,6 @@ import uuid
from pathlib import Path
from typing import Any, Set
-import aiofiles
import pytest
from pydantic import BaseModel
@@ -125,9 +124,7 @@ class TestGetProjectRoot:
async def test_parse_data_exception(self, filename, want):
pathname = Path(__file__).parent.parent.parent / "data/output_parser" / filename
assert pathname.exists()
- async with aiofiles.open(str(pathname), mode="r") as reader:
- data = await reader.read()
-
+ data = await aread(filename=pathname)
result = OutputParser.parse_data(data=data)
assert want in result
@@ -178,7 +175,7 @@ class TestGetProjectRoot:
],
)
def test_split_namespace(self, val, want):
- res = split_namespace(val)
+ res = split_namespace(val, maxsplit=-1)
assert res == want
def test_read_json_file(self):
@@ -198,12 +195,25 @@ class TestGetProjectRoot:
@pytest.mark.asyncio
async def test_read_write(self):
- pathname = Path(__file__).parent / uuid.uuid4().hex / "test.tmp"
+ pathname = Path(__file__).parent / f"../../../workspace/unittest/{uuid.uuid4().hex}" / "test.tmp"
await awrite(pathname, "ABC")
data = await aread(pathname)
assert data == "ABC"
pathname.unlink(missing_ok=True)
+ @pytest.mark.asyncio
+ async def test_read_write_error_charset(self):
+ pathname = Path(__file__).parent / f"../../../workspace/unittest/{uuid.uuid4().hex}" / "test.txt"
+ content = "中国abc123\u27f6"
+ await awrite(filename=pathname, data=content)
+ data = await aread(filename=pathname)
+ assert data == content
+
+ content = "GB18030 是中国国家标准局发布的新一代中文字符集标准,是 GBK 的升级版,支持更广泛的字符范围。"
+ await awrite(filename=pathname, data=content, encoding="gb2312")
+ data = await aread(filename=pathname, encoding="utf-8")
+ assert data == content
+
if __name__ == "__main__":
pytest.main([__file__, "-s"])
diff --git a/tests/metagpt/utils/test_git_repository.py b/tests/metagpt/utils/test_git_repository.py
index ea28b8f0b..480a22e24 100644
--- a/tests/metagpt/utils/test_git_repository.py
+++ b/tests/metagpt/utils/test_git_repository.py
@@ -10,15 +10,14 @@
import shutil
from pathlib import Path
-import aiofiles
import pytest
+from metagpt.utils.common import awrite
from metagpt.utils.git_repository import GitRepository
async def mock_file(filename, content=""):
- async with aiofiles.open(str(filename), mode="w") as file:
- await file.write(content)
+ await awrite(filename=filename, data=content)
async def mock_repo(local_path) -> (GitRepository, Path):
diff --git a/tests/metagpt/utils/test_mermaid.py b/tests/metagpt/utils/test_mermaid.py
index 7e9129314..7367463dc 100644
--- a/tests/metagpt/utils/test_mermaid.py
+++ b/tests/metagpt/utils/test_mermaid.py
@@ -14,7 +14,7 @@ from metagpt.utils.mermaid import MMC1, mermaid_to_file
@pytest.mark.asyncio
@pytest.mark.parametrize("engine", ["nodejs", "ink"]) # TODO: playwright and pyppeteer
-async def test_mermaid(engine, context):
+async def test_mermaid(engine, context, mermaid_mocker):
# nodejs prerequisites: npm install -g @mermaid-js/mermaid-cli
# ink prerequisites: connected to internet
# playwright prerequisites: playwright install --with-deps chromium
diff --git a/tests/metagpt/utils/test_repair_llm_raw_output.py b/tests/metagpt/utils/test_repair_llm_raw_output.py
index e28423b91..7a29ea3ee 100644
--- a/tests/metagpt/utils/test_repair_llm_raw_output.py
+++ b/tests/metagpt/utils/test_repair_llm_raw_output.py
@@ -211,6 +211,11 @@ value
output = repair_invalid_json(output, "Expecting ',' delimiter: line 4 column 1")
assert output == target_output
+ raw_output = '{"key": "url "http" \\"https\\" "}'
+ target_output = '{"key": "url \\"http\\" \\"https\\" "}'
+ output = repair_invalid_json(raw_output, "Expecting ',' delimiter: line 1 column 15 (char 14)")
+ assert output == target_output
+
def test_retry_parse_json_text():
from metagpt.utils.repair_llm_raw_output import retry_parse_json_text
diff --git a/tests/metagpt/utils/test_repo_to_markdown.py b/tests/metagpt/utils/test_repo_to_markdown.py
new file mode 100644
index 000000000..914c50dd7
--- /dev/null
+++ b/tests/metagpt/utils/test_repo_to_markdown.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+import uuid
+from pathlib import Path
+
+import pytest
+
+from metagpt.utils.repo_to_markdown import repo_to_markdown
+
+
+@pytest.mark.parametrize(
+ ["repo_path", "output"],
+ [(Path(__file__).parent.parent, Path(__file__).parent.parent.parent / f"workspace/unittest/{uuid.uuid4().hex}.md")],
+)
+@pytest.mark.asyncio
+async def test_repo_to_markdown(repo_path: Path, output: Path):
+ markdown = await repo_to_markdown(repo_path=repo_path, output=output)
+ assert output.exists()
+ assert markdown
+
+ output.unlink(missing_ok=True)
+
+
+if __name__ == "__main__":
+ pytest.main([__file__, "-s"])
diff --git a/tests/metagpt/utils/test_s3.py b/tests/metagpt/utils/test_s3.py
index b26ebe94d..ef13c2325 100644
--- a/tests/metagpt/utils/test_s3.py
+++ b/tests/metagpt/utils/test_s3.py
@@ -9,10 +9,10 @@ import uuid
from pathlib import Path
import aioboto3
-import aiofiles
import pytest
from metagpt.config2 import Config
+from metagpt.configs.s3_config import S3Config
from metagpt.utils.common import aread
from metagpt.utils.s3 import S3
@@ -30,6 +30,14 @@ async def test_s3(mocker):
mock_client.__aenter__.return_value = mock_client
mock_client.__aexit__.return_value = None
mocker.patch.object(aioboto3.Session, "client", return_value=mock_client)
+ mock_config = mocker.Mock()
+ mock_config.s3 = S3Config(
+ access_key="mock_access_key",
+ secret_key="mock_secret_key",
+ endpoint="http://mock.endpoint",
+ bucket="mock_bucket",
+ )
+ mocker.patch.object(Config, "default", return_value=mock_config)
# Prerequisites
s3 = Config.default().s3
@@ -37,7 +45,7 @@ async def test_s3(mocker):
conn = S3(s3)
object_name = "unittest.bak"
await conn.upload_file(bucket=s3.bucket, local_path=__file__, object_name=object_name)
- pathname = (Path(__file__).parent / uuid.uuid4().hex).with_suffix(".bak")
+ pathname = (Path(__file__).parent / "../../../workspace/unittest" / uuid.uuid4().hex).with_suffix(".bak")
pathname.unlink(missing_ok=True)
await conn.download_file(bucket=s3.bucket, object_name=object_name, local_path=str(pathname))
assert pathname.exists()
@@ -45,8 +53,7 @@ async def test_s3(mocker):
assert url
bin_data = await conn.get_object(bucket=s3.bucket, object_name=object_name)
assert bin_data
- async with aiofiles.open(__file__, mode="r", encoding="utf-8") as reader:
- data = await reader.read()
+ data = await aread(filename=__file__)
res = await conn.cache(data, ".bak", "script")
assert "http" in res
@@ -60,8 +67,6 @@ async def test_s3(mocker):
except Exception:
pass
- await reader.close()
-
if __name__ == "__main__":
pytest.main([__file__, "-s"])
diff --git a/tests/metagpt/utils/test_save_code.py b/tests/metagpt/utils/test_save_code.py
index 35ad84baf..aceecec3b 100644
--- a/tests/metagpt/utils/test_save_code.py
+++ b/tests/metagpt/utils/test_save_code.py
@@ -6,7 +6,7 @@
import nbformat
import pytest
-from metagpt.actions.ci.execute_nb_code import ExecuteNbCode
+from metagpt.actions.di.execute_nb_code import ExecuteNbCode
from metagpt.utils.common import read_json_file
from metagpt.utils.save_code import DATA_PATH, save_code_file
diff --git a/tests/metagpt/utils/test_text.py b/tests/metagpt/utils/test_text.py
index 7003c7767..319a4ebe0 100644
--- a/tests/metagpt/utils/test_text.py
+++ b/tests/metagpt/utils/test_text.py
@@ -22,7 +22,7 @@ def _paragraphs(n):
@pytest.mark.parametrize(
"msgs, model_name, system_text, reserved, expected",
[
- (_msgs(), "gpt-3.5-turbo", "System", 1500, 1),
+ (_msgs(), "gpt-3.5-turbo-0613", "System", 1500, 1),
(_msgs(), "gpt-3.5-turbo-16k", "System", 3000, 6),
(_msgs(), "gpt-3.5-turbo-16k", "Hello," * 1000, 3000, 5),
(_msgs(), "gpt-4", "System", 2000, 3),
@@ -32,21 +32,23 @@ def _paragraphs(n):
],
)
def test_reduce_message_length(msgs, model_name, system_text, reserved, expected):
- assert len(reduce_message_length(msgs, model_name, system_text, reserved)) / (len("Hello,")) / 1000 == expected
+ length = len(reduce_message_length(msgs, model_name, system_text, reserved)) / (len("Hello,")) / 1000
+ assert length == expected
@pytest.mark.parametrize(
"text, prompt_template, model_name, system_text, reserved, expected",
[
- (" ".join("Hello World." for _ in range(1000)), "Prompt: {}", "gpt-3.5-turbo", "System", 1500, 2),
+ (" ".join("Hello World." for _ in range(1000)), "Prompt: {}", "gpt-3.5-turbo-0613", "System", 1500, 2),
(" ".join("Hello World." for _ in range(1000)), "Prompt: {}", "gpt-3.5-turbo-16k", "System", 3000, 1),
(" ".join("Hello World." for _ in range(4000)), "Prompt: {}", "gpt-4", "System", 2000, 2),
(" ".join("Hello World." for _ in range(8000)), "Prompt: {}", "gpt-4-32k", "System", 4000, 1),
+ (" ".join("Hello World" for _ in range(8000)), "Prompt: {}", "gpt-3.5-turbo-0613", "System", 1000, 8),
],
)
def test_generate_prompt_chunk(text, prompt_template, model_name, system_text, reserved, expected):
- ret = list(generate_prompt_chunk(text, prompt_template, model_name, system_text, reserved))
- assert len(ret) == expected
+ chunk = len(list(generate_prompt_chunk(text, prompt_template, model_name, system_text, reserved)))
+ assert chunk == expected
@pytest.mark.parametrize(
diff --git a/tests/metagpt/utils/test_tree.py b/tests/metagpt/utils/test_tree.py
new file mode 100644
index 000000000..03a2a5606
--- /dev/null
+++ b/tests/metagpt/utils/test_tree.py
@@ -0,0 +1,64 @@
+from pathlib import Path
+from typing import List
+
+import pytest
+
+from metagpt.utils.tree import _print_tree, tree
+
+
+@pytest.mark.parametrize(
+ ("root", "rules"),
+ [
+ (str(Path(__file__).parent / "../.."), None),
+ (str(Path(__file__).parent / "../.."), str(Path(__file__).parent / "../../../.gitignore")),
+ ],
+)
+def test_tree(root: str, rules: str):
+ v = tree(root=root, gitignore=rules)
+ assert v
+
+
+@pytest.mark.parametrize(
+ ("root", "rules"),
+ [
+ (str(Path(__file__).parent / "../.."), None),
+ (str(Path(__file__).parent / "../.."), str(Path(__file__).parent / "../../../.gitignore")),
+ ],
+)
+def test_tree_command(root: str, rules: str):
+ v = tree(root=root, gitignore=rules, run_command=True)
+ assert v
+
+
+@pytest.mark.parametrize(
+ ("tree", "want"),
+ [
+ ({"a": {"b": {}, "c": {}}}, ["a", "+-- b", "+-- c"]),
+ ({"a": {"b": {}, "c": {"d": {}}}}, ["a", "+-- b", "+-- c", " +-- d"]),
+ (
+ {"a": {"b": {"e": {"f": {}, "g": {}}}, "c": {"d": {}}}},
+ ["a", "+-- b", "| +-- e", "| +-- f", "| +-- g", "+-- c", " +-- d"],
+ ),
+ (
+ {"h": {"a": {"b": {"e": {"f": {}, "g": {}}}, "c": {"d": {}}}, "i": {}}},
+ [
+ "h",
+ "+-- a",
+ "| +-- b",
+ "| | +-- e",
+ "| | +-- f",
+ "| | +-- g",
+ "| +-- c",
+ "| +-- d",
+ "+-- i",
+ ],
+ ),
+ ],
+)
+def test__print_tree(tree: dict, want: List[str]):
+ v = _print_tree(tree)
+ assert v == want
+
+
+if __name__ == "__main__":
+ pytest.main([__file__, "-s"])
diff --git a/tests/metagpt/utils/test_visual_graph_repo.py b/tests/metagpt/utils/test_visual_graph_repo.py
new file mode 100644
index 000000000..7f696b4bc
--- /dev/null
+++ b/tests/metagpt/utils/test_visual_graph_repo.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""
+@Time : 2024/1/4
+@Author : mashenquan
+@File : test_visual_graph_repo.py
+@Desc : Unit tests for testing and demonstrating the usage of VisualDiGraphRepo.
+"""
+
+import re
+from pathlib import Path
+
+import pytest
+
+from metagpt.utils.common import remove_affix, split_namespace
+from metagpt.utils.visual_graph_repo import VisualDiGraphRepo
+
+
+@pytest.mark.asyncio
+async def test_visual_di_graph_repo(context, mocker):
+ filename = Path(__file__).parent / "../../data/graph_db/networkx.sequence_view.json"
+ repo = await VisualDiGraphRepo.load_from(filename=filename)
+
+ class_view = await repo.get_mermaid_class_view()
+ assert class_view
+ await context.repo.resources.graph_repo.save(filename="class_view.md", content=f"```mermaid\n{class_view}\n```\n")
+
+ sequence_views = await repo.get_mermaid_sequence_views()
+ assert sequence_views
+ for ns, sqv in sequence_views:
+ filename = re.sub(r"[:/\\\.]+", "_", ns) + ".sequence_view.md"
+ sqv = sqv.strip(" `")
+ await context.repo.resources.graph_repo.save(filename=filename, content=f"```mermaid\n{sqv}\n```\n")
+
+ sequence_view_vers = await repo.get_mermaid_sequence_view_versions()
+ assert sequence_view_vers
+ for ns, sqv in sequence_view_vers:
+ ver, sqv = split_namespace(sqv)
+ filename = re.sub(r"[:/\\\.]+", "_", ns) + f".{ver}.sequence_view_ver.md"
+ sqv = remove_affix(sqv).strip(" `")
+ await context.repo.resources.graph_repo.save(filename=filename, content=f"```mermaid\n{sqv}\n```\n")
+
+
+if __name__ == "__main__":
+ pytest.main([__file__, "-s"])
diff --git a/tests/mock/mock_aiohttp.py b/tests/mock/mock_aiohttp.py
index a7c022a4b..ca98ed8b5 100644
--- a/tests/mock/mock_aiohttp.py
+++ b/tests/mock/mock_aiohttp.py
@@ -10,6 +10,7 @@ class MockAioResponse:
check_funcs: dict[tuple[str, str], Callable[[dict], str]] = {}
rsp_cache: dict[str, str] = {}
name = "aiohttp"
+ status = 200
def __init__(self, session, method, url, **kwargs) -> None:
fn = self.check_funcs.get((method, url))
@@ -22,6 +23,7 @@ class MockAioResponse:
async def __aenter__(self):
if self.response:
await self.response.__aenter__()
+ self.status = self.response.status
elif self.mng:
self.response = await self.mng.__aenter__()
return self
@@ -41,6 +43,17 @@ class MockAioResponse:
self.rsp_cache[self.key] = data
return data
+ @property
+ def content(self):
+ return self
+
+ async def read(self):
+ if self.key in self.rsp_cache:
+ return eval(self.rsp_cache[self.key])
+ data = await self.response.content.read()
+ self.rsp_cache[self.key] = str(data)
+ return data
+
def raise_for_status(self):
if self.response:
self.response.raise_for_status()
diff --git a/tests/mock/mock_llm.py b/tests/mock/mock_llm.py
index 50e75dabf..c4262e080 100644
--- a/tests/mock/mock_llm.py
+++ b/tests/mock/mock_llm.py
@@ -3,8 +3,9 @@ from typing import Optional, Union
from metagpt.config2 import config
from metagpt.configs.llm_config import LLMType
-from metagpt.logs import log_llm_stream, logger
+from metagpt.logs import logger
from metagpt.provider.azure_openai_api import AzureOpenAILLM
+from metagpt.provider.constant import GENERAL_FUNCTION_SCHEMA
from metagpt.provider.openai_api import OpenAILLM
from metagpt.schema import Message
@@ -24,31 +25,21 @@ class MockLLM(OriginalLLM):
async def acompletion_text(self, messages: list[dict], stream=False, timeout=3) -> str:
"""Overwrite original acompletion_text to cancel retry"""
if stream:
- resp = self._achat_completion_stream(messages, timeout=timeout)
-
- collected_messages = []
- async for i in resp:
- log_llm_stream(i)
- collected_messages.append(i)
-
- full_reply_content = "".join(collected_messages)
- usage = self._calc_usage(messages, full_reply_content)
- self._update_costs(usage)
- return full_reply_content
+ resp = await self._achat_completion_stream(messages, timeout=timeout)
+ return resp
rsp = await self._achat_completion(messages, timeout=timeout)
return self.get_choice_text(rsp)
async def original_aask(
self,
- msg: str,
+ msg: Union[str, list[dict[str, str]]],
system_msgs: Optional[list[str]] = None,
format_msgs: Optional[list[dict[str, str]]] = None,
images: Optional[Union[str, list[str]]] = None,
timeout=3,
stream=True,
- ):
- """A copy of metagpt.provider.base_llm.BaseLLM.aask, we can't use super().aask because it will be mocked"""
+ ) -> str:
if system_msgs:
message = self._system_msgs(system_msgs)
else:
@@ -57,7 +48,11 @@ class MockLLM(OriginalLLM):
message = []
if format_msgs:
message.extend(format_msgs)
- message.append(self._user_msg(msg, images=images))
+ if isinstance(msg, str):
+ message.append(self._user_msg(msg, images=images))
+ else:
+ message.extend(msg)
+ logger.debug(message)
rsp = await self.acompletion_text(message, stream=stream, timeout=timeout)
return rsp
@@ -76,19 +71,27 @@ class MockLLM(OriginalLLM):
A copy of metagpt.provider.openai_api.OpenAILLM.aask_code, we can't use super().aask because it will be mocked.
Since openai_api.OpenAILLM.aask_code is different from base_llm.BaseLLM.aask_code, we use the former.
"""
+ if "tools" not in kwargs:
+ configs = {"tools": [{"type": "function", "function": GENERAL_FUNCTION_SCHEMA}]}
+ kwargs.update(configs)
rsp = await self._achat_completion_function(messages, **kwargs)
return self.get_choice_function_arguments(rsp)
async def aask(
self,
- msg: str,
+ msg: Union[str, list[dict[str, str]]],
system_msgs: Optional[list[str]] = None,
format_msgs: Optional[list[dict[str, str]]] = None,
images: Optional[Union[str, list[str]]] = None,
timeout=3,
stream=True,
) -> str:
- msg_key = msg # used to identify it a message has been called before
+ # used to identify it a message has been called before
+ if isinstance(msg, list):
+ msg_key = "#MSG_SEP#".join([m["content"] for m in msg])
+ else:
+ msg_key = msg
+
if system_msgs:
joined_system_msg = "#MSG_SEP#".join(system_msgs) + "#SYSTEM_MSG_END#"
msg_key = joined_system_msg + msg_key
@@ -101,8 +104,7 @@ class MockLLM(OriginalLLM):
return rsp
async def aask_code(self, messages: Union[str, Message, list[dict]], **kwargs) -> dict:
- messages = self._process_message(messages)
- msg_key = json.dumps(messages, ensure_ascii=False)
+ msg_key = json.dumps(self.format_msg(messages), ensure_ascii=False)
rsp = await self._mock_rsp(msg_key, self.original_aask_code, messages, **kwargs)
return rsp
diff --git a/tests/spark.yaml b/tests/spark.yaml
deleted file mode 100644
index a5bbd98bd..000000000
--- a/tests/spark.yaml
+++ /dev/null
@@ -1,7 +0,0 @@
-llm:
- api_type: "spark"
- app_id: "xxx"
- api_key: "xxx"
- api_secret: "xxx"
- domain: "generalv2"
- base_url: "wss://spark-api.xf-yun.com/v3.1/chat"
\ No newline at end of file